我如何知道用户是不是以相同的 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的主要内容,如果未能解决你的问题,请参考以下文章

如何在具有相同苹果 ID 的多台设备的用户中找出“使用 Apple 登录”?

在 XMPP 中注册无密码用户

带有登录系统的 GCM

在 iPhone 上晃动视觉效果(不晃动设备)

Firebase:防止在多个设备上使用相同的帐户

如何将数据存储在即使从其他设备登录也可用的应用程序中?