ios – Xmpp MultiUserChat(MUC)组不保持稳定

我创建了一个Xmpp聊天应用程序,我已经实现了一对一和群聊.

聊天本身工作正常.

问题出在群聊中.我创建了一个包含2-3个成员的组,再次聊天工作正常,但是当我杀死应用程序并重新启动它时,我没有从我创建的任何组中获取组的消息.

当我连接到XMPP服务器并重新加入任何组时,我收到消息.

我的问题是,每次我完全杀死应用程序后,我必须再次加入群组.

请让我知道当我从被杀死状态打开应用程序时,如何获取消息或自动加入群组.

最佳答案 一旦应用程序启动或从后台发出,您需要向XMPP服务器发送状态.所以XMPP服务器了解相应的组已准备好处理事件.

编辑:您可以使用以下代码发送状态.

- (void)goOnline {


    NSXMLElement *presence = [NSXMLElement elementWithName:@"presence"];
    NSXMLElement *show = [NSXMLElement elementWithName:@"show"
                                           stringValue:@"dnd"];
    NSXMLElement *status = [NSXMLElement elementWithName:@"status" stringValue:@"available"];
    NSXMLElement *priority = [NSXMLElement elementWithName:@"priority" stringValue:@"24"];

    [presence addChild:show];
    [presence addChild:status];
    [presence addChild:priority];

    [_xmppStream sendElement:presence];

    [self createOrJoinRoom];

}
- (void)createOrJoinRoom {
    if ([appDelegate.xmppStream isConnected]) {

        NSString *myJID = [[NSUserDefaults standardUserDefaults] stringForKey:@"XMPPUserId"];

        NSXMLElement *presence = [NSXMLElement elementWithName:@"presence"];
        [presence addAttributeWithName:@"from" stringValue:[[appDelegate.xmppStream myJID]full]];
        [presence addAttributeWithName:@"to" stringValue:[NSString stringWithFormat:@"%@@%@/%@", @"newone", GroupChatRoomName,myJID]];
        NSXMLElement *xelement = [NSXMLElement elementWithName:@"x" xmlns:XMPPMUCNamespace];
        [presence addChild:xelement];
        [appDelegate.xmppStream sendElement:presence];
    }

}

愿这对你有所帮助.

点赞