我创建了一个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];
}
}
愿这对你有所帮助.