2014-12-05 50 views
1

我對xmpp使用https://github.com/robbiehanson/XMPPFramework。我正在嘗試獲取特定JID字符串的資源([email protected])。如何使用xmpp獲取資源jidstr iOS sdk

我用下面的代碼

XMPPUserCoreDataStorageObject *user = [[self fetchedResultsController] objectAtIndexPath:indexPath]; 
NSLog(@"userJID:%@",user.jidStr); 

XMPPResourceCoreDataStorageObject* userResource = (XMPPResourceCoreDataStorageObject*)[user resourceForJID:[user.jid bareJID]]; 
NSLog(@"userResource:%@",userResource); 

但問題是userResource返回null。

是否有任何其他途徑來資源[email protected]。這應該是像[email protected]/(userResource)。

+0

你找到任何解決方案,我也面臨着當用戶處於脫機狀態的話,我想資源名稱卻是露出空同issue.I需要。 – Bittoo 2016-10-12 05:21:41

回答

1

您通常會從當前爲該JID連接的0個或更多設備中的每個設備收到的狀態中獲取與裸露JID關聯的資源信息。如果聯繫人與多個設備在線,則會有多個與該用戶相關聯的資源。 「最可用」的資源,或者被稱爲「主要資源」的資源很可能是你想要的資源。 XMPPUserCoreDataStorageObject有一個primaryResource方法,會給你一個XMPPResourceCoreDataStorageObject。試試這個(未經測試):

XMPPUserCoreDataStorageObject *user = [[self fetchedResultsController] objectAtIndexPath:indexPath]; 
NSString *resource = [[[user primaryResource] jid] resource]; 
+0

但我有**零**,而其他用戶在設備上離線。 – jaskiratjd 2015-10-29 10:23:48

0

'[email protected]'的資源是缺少的。 JID有三個部分,粗略來說(讀取正式/正確版本的RFC6122)@(localpart或有時是userpart)之前的位,@直到/(domainpart)的位和/(resourcepart)之後的位。 localpart或resourcepart可能會丟失。具有所有這些位的JID是'完整'JID(例如[email protected]/wheeee),沒有資源的JID是'裸'JID(例如[email protected])。

+1

感謝kev的回覆,並解釋了我的資源和domain.I已更正了代碼。仍然有同樣的問題。 XMPPUserCoreDataStorageObject * user = [[self fetchedResultsController] objectAtIndexPath:indexPath]; NSLog(@「userJID:%@」,user.jidStr); XMPPResourceCoreDataStorageObject * userResource =(XMPPResourceCoreDataStorageObject *)[user resourceForJID:[XMPPJID jidWithString:[user.jid resource]]];; NSLog(@「userResource:%@」,userResource); userResource仍然返回空 – 2014-12-05 17:27:01