【发布时间】:2014-04-14 05:13:30
【问题描述】:
在 Openfire 中,用户是使用“用户名”(用作 JID 的基础)和描述性“名称”创建的。如何在 XMPP 中检索给定 JID 的名称?我正在使用 XMPPFramework。
【问题讨论】:
标签: ios xmpp openfire xmppframework
在 Openfire 中,用户是使用“用户名”(用作 JID 的基础)和描述性“名称”创建的。如何在 XMPP 中检索给定 JID 的名称?我正在使用 XMPPFramework。
【问题讨论】:
标签: ios xmpp openfire xmppframework
您可以使用用户的 JID 从 XMPPUserCoreDataStorageObject 检索用户的显示名称,如下所示:
XMPPJID *userJID = @"shakespeare";
XMPPUserCoreDataStorageObject *user = [[[self appDelegate] xmppRosterStorage]
userForJID:userJID
xmppStream:[[self appDelegate] xmppStream]
managedObjectContext:[[self appDelegate] managedObjectContext_roster]];
NSString *userDisplayName = user.displayName;
【讨论】:
在设置 XMPPFramework 时,您是否使用名册的 CoreData 部分?您可以通过 JID 从设置的存储类(例如,XMPPRosterCoreDataStorage)中获取用户。
从这里,您可以通过存储类从名册请求中获取存储的用户,例如:
[xmppStorage userForJID:jid ...]
从这里,生成的对象 (XMPPUserCoreDataStorageObject) 具有“昵称”、“显示名称”等字段。还可以从该 JID 的关联 vCard 中获取一些信息。
【讨论】:
XMPPvCardTemp *vCard = [[[self appDelegate] xmppvCardTempModule] vCardTempForJID:user.jid shouldFetch:YES];