(八)XMPP名簿モジュール

3478 ワード

モジュール類の紹介:http://www.henishuo.com/ios-xmpp-roster/
上の階に彼の属性と基本的な紹介がありますが、ここではどうやって使うかを説明します.
花簿のモジュール内部はどうやって実現されますか?
XMPPModule(       )
XMPPRoster(   )
XMPPRosterCoreDataStorage(      )
XMPPRosterStorage(       )
XMPPRosterDelegate(      )
1、モジュールのオープンとアクティブ化

#      xmpp       ,    XMPPFramework.h            

//     
#import "XMPPRoster.h"
#import "XMPPRosterMemoryStorage.h"
#import "XMPPRosterCoreDataStorage.h"


#     (          Library       sqlite  )

//       
XMPPRosterCoreDataStorage *rosterStorage = [XMPPRosterCoreDataStorage sharedInstance];
XMPPRoster *roster = [[XMPPRoster alloc] initWithRosterStorage:_rosterStorage];
    
//  
[roster activate:_xmppStream];

2、モジュール情報の取得
            core data   
1、                sqlite  
2、  Request       、        
3、    

      
    1、         
        
    2、   NSFetchedResultsController       

#           ,                       controllerDidChangeContent 

            


//1.      XMPPRoster.sqlite  
NSManagedObjectContext *rosterContext = [WCXMPPTool sharedWCXMPPTool].rosterStorage.mainThreadManagedObjectContext;
    
//2.Request         
NSFetchRequest *request = [NSFetchRequest fetchRequestWithEntityName:@"XMPPUserCoreDataStorageObject"];

#      request      

//3.    
NSFetchedResultsController *resultsContr = [[NSFetchedResultsController alloc] initWithFetchRequest:request managedObjectContext:rosterContext sectionNameKeyPath:nil cacheName:nil];

resultsContr.delegate = self;

NSError *err = nil;
//3.2  
[resultsContr performFetch:&err];



#       ,        
resultsContr.fetchedObjects           

      XMPPUserCoreDataStorageObject      
XMPPUserCoreData StrageObjectについて
XMPPUserCoreDataStorageObject user ;

user.sectionNum #     0:   1:   2:  

user.photo #                                

                 、
if (user.photo) {//     ,           
        cell.imageView.image = user.photo;
}else{
        //        
        NSData *imgData = [[WCXMPPTool sharedWCXMPPTool].avatar photoDataForJID:user.jid];
        cell.imageView.image = [UIImage imageWithData:imgData];
}

           。

3、友達を追加して友達を削除する
#        jid
- (void)removeUser:(XMPPJID *)jid
#  (  )  
- (void)subscribePresenceToUser:(XMPPJID *)jid

#     :
1、           
        
2、               
XMPPRosterCoreDataStorage 
   >- (BOOL)userExistsWithJID:(XMPPJID *)jid xmppStream:(XMPPStream *)stream
  
xmppに友達が発生した問題を追加します.*友達が既存のopenfireに存在する問題を追加します.1.存在しない友達を追加します.アドレス帳にも友達解決方法が示されています.1.サーバーは友達追加の要求をブロックできます.現在のデータベースに友達がいない場合、情報を返さないでください.b5448c463bc4ea8dae9e0fe65179e1d827c740d0

       2.               Subscription      
   none           
   to        
   from        
   both       
4、親友の依頼を傍受する
1、               (addDelegate)
2、      XMPPRosterDelegate
- (void)xmppRoster:(XMPPRoster *)sender didReceivePresenceSubscriptionRequest:(XMPPPresence *)presence;

3、        ,          User 
NSString *presenceFromUser =[NSString stringWithFormat:@"%@", [[presence from] user]];

4、      
XMPPJID *jid = [XMPPJID jidWithString:presenceFromUser];
[_roster acceptPresenceSubscriptionRequestFrom:jid andAddToRoster:YES];

5、           

rejectPresenceSubscriptionRequestFrom