2016-11-09 37 views
1

我們正在IOS上使用客戶端的XMPPFramework(https://github.com/robbiehanson/XMPPFramework)和服務器端的Ejabberd創建聊天應用程序。IOS XMPPFramework和連接客房

在羣組聊天中,我們正在創建羣組,然後加入該羣組並邀請其他用戶加入我們的羣組。每當新受邀用戶加入小組時,我們都會通知所有參與者新用戶加入小組。然後當我們重新啓動應用程序(kill並重新啓動)時,我們存儲該組的用戶名並重新加入(您可以在下面找到示例),但在這種情況下,ejabberd將發送新用戶加入的所有客戶端小組,但我已經在這個小組中,唯一的區別是我重新啓動了應用程序。 我如何區分這兩件事?

NSString *nickName = [[NSUserDefaults standardUserDefaults]objectForKey:userNickName]; 

XMPPRoomMemoryStorage *roomStorage = [[XMPPRoomMemoryStorage alloc] init]; 

XMPPJID *roomJID = [XMPPJID jidWithString:uniqId]; 
XMPPRoom *xmppRoom = [[XMPPRoom alloc]initWithRoomStorage:roomStorage 
                 jid:roomJID 
              dispatchQueue:dispatch_get_main_queue()]; 
[xmppRoom activate:xmppStream]; 
[xmppRoom addDelegate:self delegateQueue:dispatch_get_main_queue()]; 
[xmppRoom joinRoomUsingNickname:nickName history:nil]; 

回答

1

實際上加入了XMPP MUC意味着你現在在房間裏。當你離線時,你可能是該組的成員,但你不在組中。當您在登錄時再次發送表示時,您將再次出現。

我想根本原因是你混合加入vs會員。

我建議你看看ejabberd中的MUC/Sub協議。這是設計從房間成員和消息訂閱拆分在房間的存在。 該協議描述如下:https://docs.ejabberd.im/developer/xmpp-clients-bots/proposed-extensions/muc-sub/

相關問題