首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >IOS XMPPFramework和加入房间

IOS XMPPFramework和加入房间
EN

Stack Overflow用户
提问于 2016-11-09 17:30:27
回答 2查看 1.1K关注 0票数 2

我们正在使用客户端(https://github.com/robbiehanson/XMPPFramework)的XMPPFramework和服务器端的Ejabberd在IOS上创建一个聊天应用程序。

在群聊中,我们创建一个群,然后加入该群,并邀请其他用户加入我们的群。每次新的被邀请用户加入群组时,我们都会通知所有参与者新用户已加入群组。

然而,当我们重启应用程序(终止并重新启动)时,我们存储了该组的用户名并再次加入(你可以找到下面的例子),但在这种情况下,ejabberd会发送所有新用户加入组但我已经在该组中的客户端,唯一的区别是我重新启动了应用程序。我如何区分这两件事呢?

代码语言:javascript
运行
复制
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];
EN

回答 2

Stack Overflow用户

发布于 2016-11-09 18:44:20

实际加入XMPP MUC意味着您现在在房间中。当您处于脱机状态时,您可能是该组的成员,但不在该组中。当您在登录时再次发送在线状态时,您实际上再次处于在线状态。

我猜根本原因是你混淆了加入和成员资格。

我建议你看看ejabberd中的MUC/Sub协议。它的设计目的是将房间中的存在从房间成员和订阅消息中分离出来。该协议的描述如下:https://docs.ejabberd.im/developer/xmpp-clients-bots/proposed-extensions/muc-sub/

票数 2
EN

Stack Overflow用户

发布于 2016-11-12 07:24:23

在Xmpp MUC中:

离开!= Not group member anymore

Join != Become group member from now on

而是简单地说:

离开== Presence unavailable

加入== Presence available

在线状态在群聊中并不是那么有用。

相反,我认为您正在寻找类似于MUCLight的东西

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40503609

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档