我如何知道用户是不是以相同的 ID 登录了其他设备,我在我的应用程序中使用了 XMPP
Posted
技术标签:
【中文标题】我如何知道用户是不是以相同的 ID 登录了其他设备,我在我的应用程序中使用了 XMPP【英文标题】:How can I know if the user is logged in some other device on same ID ,i used XMPP in my apps我如何知道用户是否以相同的 ID 登录了其他设备,我在我的应用程序中使用了 XMPP 【发布时间】:2013-11-13 04:51:59 【问题描述】:我已经在 iPhone 中实现了一个聊天应用程序已登录其他设备。
不知道用什么方法查看登录状态。
【问题讨论】:
【参考方案1】:您在 appdelegate 中有一种方法可以使用它来解决它
- (void)xmppStream:(XMPPStream *)sender didNotAuthenticate:(NSXMLElement *)error
// show the popup if user didNotAuthenticate
这个方法可能对你有帮助
【讨论】:
此方法在用户名和密码不匹配时有效。但我需要检查用户登录状态。【参考方案2】:您可以在服务器端为数据库中的用户维护一个标志。当用户第一次登录时,更新数据库字段值。现在下次当用户尝试从任何其他设备登录时,检查数据库字段的值是否用户已经登录。如果是,则显示该消息。
【讨论】:
【参考方案3】:当同一个 JID 登录新的 JID 时,旧的 JID 会调用这个委托:
-(void)xmppStreamDidDisconnect:(XMPPStream *)sender withError:(NSError *)error
,
Xcode 会这样记录:
"Error Domain=GCDAsyncSocketErrorDomain Code=7 "Socket closed by remote peer" UserInfo=NSLocalizedDescription=Socket closed by remote peer"
以上情况建立在APP处于激活状态,如果不是,比如旧的通过自动登录,或者新设备已经登陆访问。 @spaleja,他的解决方案可能是一个解决方案。
discuss
【讨论】:
以上是关于我如何知道用户是不是以相同的 ID 登录了其他设备,我在我的应用程序中使用了 XMPP的主要内容,如果未能解决你的问题,请参考以下文章