2012-10-08 87 views
1

我想知道是否有人知道爲什麼當我打開新的FBSession會話時,FBSessionDidSetActiveSessionNotification,FBSessionDidUnsetActiveSessionNotification,FBSessionDidBecomeOpenActiveSessionNotification或FBSessionDidBecomeOctiveSessionNotification永遠不會被解僱?我需要檢測FBSessionDidBecomeOpenActiveSessionNotification & FBSessionDidSetActiveSessionNotification的唯一方法是當我調用[FBSession setActiveSession:];明確。Facebook 3.x SDK通知不會觸發?

基本上,我得到了這樣的事情:

_session = [[FBSession alloc] initWithAppID: FACEBOOK_AppId 
           permissions: _facebookPermissions 
          defaultAudience: FBSessionDefaultAudienceOnlyMe 
          urlSchemeSuffix: nil 
         tokenCacheStrategy: nil]; 

    [_session openWithCompletionHandler:^(FBSession *session, 
              FBSessionState status, 
              NSError *error) { 

     [FBSession setActiveSession: _session]; 
     // ... 
    }]; 

這是正常的,我要打電話[FBSession setActiveSession:]。 ?

回答

1

試試這個:

+ (BOOL)openActiveSessionWithPermissions:(NSArray*)permissions 
         allowLoginUI:(BOOL)allowLoginUI 
        completionHandler:(FBSessionStateHandler)handler; 
+0

是的,工作太...但它已被棄用。所以我現在可能不應該使用它。 –

+0

我不認爲這是..看到這裏https://developers.facebook.com/ios/change-log-3.x/ – KarenAnne

+0

以及在Facebook SDK 3.1 FBSession.h看看。這是該方法的聲明;它由Facebook棄用(請參閱__attribute __((已棄用))); –

1

使用

+ (BOOL)openActiveSessionWithReadPermissions:(NSArray*)readPermissions 
          allowLoginUI:(BOOL)allowLoginUI 
         completionHandler:(FBSessionStateHandler)handler; 

這真的只是做類似你已經做了什麼事一個輔助功能,雖然。如果你從git倉庫獲取源代碼,你可以看到FBSession.m中發生了什麼。