2017-06-27 3 views
1

を取得する:XMPPFramework - 私はオフラインユーザー(フレンド)のステータスを取得したいどのようにオフラインのユーザープロファイルのステータス

ユーザーがオンラインのときに私のコードは正常に動作しているので、私は、ユーザーのステータスを取得していますが、彼がオフラインになったときにuser.primaryResource.presence.statusができますnil値。

XMPPUserCoreDataStorageObject *user = [[self fetchedResultsController] objectAtIndexPath:indexPath]; 
NSLog(@"Status: %@",user.primaryResource.presence.status); 

ユーザーがオフラインになった後、私は特定のjidStrその私に与えるゼロのオブジェクトについてXMPPResourceCoreDataStorageObjectテーブルをチェックは、ユーザーがオフラインになったときに、そのユーザーのResourcesObjectを削除することを意味します。

したがって、そのユーザーのステータスを取得する可能性があります。

+0

ステータスとは、ユーザーが「オンライン」または「オフライン」のステータスですか?もしそうなら、 'presense'があなたにnilを与えるのであれば、それはユーザが' Offline'ですか? –

+0

ステータスは、XMPPResourceCoreDataStorageObject - > object - > primaryResourceに保存されているプレゼンスステータスを意味し、ユーザがオフラインになったときにXMPPResourceCoreDataStorageObjectオブジェクトがnilになります。 –

+0

XMPPRosterCoreDataStorageを試しましたか? – dichen

答えて

0

あなたはあなたがオフライン場合resourceが削除されます見ることができますXMPPUserCoreDataStorageObject

- (void)updateWithPresence:(XMPPPresence *)presence streamBareJidStr:(NSString *)streamBareJidStr 
{ 
    XMPPResourceCoreDataStorageObject *resource = 
     (XMPPResourceCoreDataStorageObject *)[self resourceForJID:[presence from]]; 

    if ([[presence type] isEqualToString:@"unavailable"] || [presence isErrorPresence]) 
    { 
     if (resource) 
     { 
      [self removeResourcesObject:resource]; 
      [[self managedObjectContext] deleteObject:resource]; 
     } 
    } 
    else 
    { 
     if (resource) 
     { 
      [resource updateWithPresence:presence]; 
     } 
     else 
     { 
      XMPPResourceCoreDataStorageObject *newResource; 
      newResource = [XMPPResourceCoreDataStorageObject insertInManagedObjectContext:[self managedObjectContext] 
                     withPresence:presence 
                    streamBareJidStr:streamBareJidStr]; 

      [self addResourcesObject:newResource]; 
     } 
    } 

    [self recalculatePrimaryResource]; 
} 

のソースコードを確認してください。

私自身はuser.primaryResource?.presence?.type() == "available"onlineと、その他の場合はofflineとチェックしています。 (ユーザは、dbから得たXMPPUserCoreDataStorageObjectです)

関連する問題