gpt4 book ai didi

ios - 获取花名册而不是组列表 XMPP iOS Swift

转载 作者:搜寻专家 更新时间:2023-11-01 05:39:10 28 4
gpt4 key购买 nike

我是 XMPP 的新手,我已经实现了 ejabberd。我的本地主机名是 'Orange.local' 有三个用户。一个从我的模拟器登录为 admin@orange.local,第二个 mihir@orange.local 来自 iMessanger。我正在创建一个组作为

@IBAction func CreateGroupBtn(sender: UIButton)
{
var roomJID = XMPPJID.jidWithString("testRoom@conference.orange.local")
var roomMemoryStorage = XMPPRoomMemoryStorage()
var xmppRoom = XMPPRoom(roomStorage: roomMemoryStorage, jid: roomJID, dispatchQueue: dispatch_get_main_queue())
xmppRoom.activate(xmppStream())
xmppRoom.addDelegate(self, delegateQueue: dispatch_get_main_queue())
xmppRoom.joinRoomUsingNickname("admin", history: nil);
}

func xmppRoomDidCreate(sender: XMPPRoom!)
{
println("room created \(sender.description)");
}

func xmppRoomDidJoin(sender: XMPPRoom!) {
println("romm joined")
sender.fetchConfigurationForm()
sender.configureRoomUsingOptions(nil)
sender.fetchMembersList();

sender.sendMessageWithBody("null");
var strInvitedUserName = XMPPJID.jidWithString("mihir@orange.local");
sender.inviteUser(strInvitedUserName, withMessage: "greetings");

}

房间已创建,我可以在群组中与 mihir@orange.local 聊天。现在我想获取 admin@orange.local 的所有组名,我的意思是 admin@orange.local 是组成员的所有组(房间)。

我正在应用此代码来获取群组列表:

 override func viewDidLoad() 
{
super.viewDidLoad()

var server = "conference.orange.local";
var id = xmppStream().generateUUID();
var serverJID = XMPPJID.jidWithString(server)
var iq = XMPPIQ.iqWithType("get", to: serverJID, elementID: id)
iq.addAttributeWithName("from", stringValue: "admin@orange.local")
var query = DDXMLElement.elementWithName("query") as! DDXMLElement;
query.addAttributeWithName("xmlns", stringValue: "http://jabber.org/protocol/disco#items" )
iq.addChild(query);
xmppStream().addDelegate(self, delegateQueue: dispatch_get_main_queue())
xmppStream().sendElement(iq);
}

但我收到这样的花名册回复:

    <iq xmlns="jabber:client" from="admin@orange.local" 
to="admin@orange.local/35441594471443421711351344"
id="3F9B0234-0233-4DF0-9174-34CC82FF6B70" type="result">
<query xmlns="jabber:iq:roster">
<item subscription="both" jid="mihir@orange.local">
<group>Buddies</group>
</item>
<item subscription="both" jid="kalpesh@orange.local">
</item>
</query>
</iq>

我的第二个问题是,当我获取所有组成员时,它返回空数组这是代码:

func xmppRoom(sender: XMPPRoom!, didFetchMembersList items: [AnyObject]!) {
println("members= \(items)");
}

请帮助我获取所有组和特定组的成员。提前致谢,抱歉我的英语不好。

最佳答案

XMPP MUC 中的成员列表不是当前可用用户的列表,它只是房间管理员用于区分房间权限/角色/从属关系的“访问控制列表”之一:房间所有者可以授予“成员”、“管理员” ”,特定 JID 的“所有者”特权,禁止他与“弃儿”从属关系等。您需要跟踪发送到 session jid 的 presence 数据包,以便获得实际的用户列表:XMPPRoom 接口(interface)有 xmppRoomDidJoinxmppRoomDidLeave 方法。

关于ios - 获取花名册而不是组列表 XMPP iOS Swift,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32817300/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com