ios - 如何在 iOS 上与 XMPP 断开连接?

标签 ios xmpp logout

我安装了 XMPP,它用于在我的 iOS 应用程序中聊天。用户应该可以注销并让不同的用户登录并使用该应用程序。目前 XMPP 聊天运行良好,但如果我注销并尝试使用不同的用户名再次登录,则会出现以下错误。

2012-11-22 14:15:52.520 FMB[3297:c07] *** Assertion failure in -[AppDelegate setupStream], /Visni/Project/FMBXMPP/FMB/AppDelegate.m:843
2012-11-22 14:15:52.541 FMB[3297:c07] *** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'Method setupStream invoked multiple times'
*** First throw call stack:
(0x24ee012 0x1fe3e7e 0x24ede78 0x1a79f35 0x6b46 0x8f49 0x50938 0x2f4a3 0x2ea84 0x215653f 0x2168014 0x21587d5 0x2494af5 0x2493f44 0x2493e1b 0x2b1b7e3 0x2b1b668 0xf2b65c 0x288a 0x2795)
libc++abi.dylib: terminate called throwing an exception

我的注销方法中有以下代码。

AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate];
        [appDelegate disconnect];

关于如何正确注销用户并准备新登录的任何想法?

最佳答案

您可以通过这种方式断开 XMPP:

- (void) disconnectXMPP
{
    [self.xmppStream removeDelegate:self];
    [xmppReconnect         deactivate];
    [self.xmppStream disconnect];
    self.xmppStream = nil;
}

关于ios - 如何在 iOS 上与 XMPP 断开连接?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13508734/

相关文章:

ios - UINavigationController,如何在第二级 View Controller 中隐藏选项卡然后在第三级 View Controller 中显示选项卡

iOS内存管理属性

Javascript - react native 。调用 Render() 函数时,子组件(动态列表)不呈现

c# - Azure AD 联合注销未重定向到客户端应用程序

objective-c - iOS/Objective-C : library to connect to POP3

java - 无法使用 smack 在 openfire 中添加新用户 - android

ios - 有没有使用 XMPP 添加和自动接受好友的好方法?

javascript - 在 xmpp 群聊中发送聊天标记

windows-xp - 如何在 Windows XP 上注销之前运行我的程序?

c# - 如何在 asp.net c# 中实现注销功能