2012-09-21 104 views
14

我使用新的Facebook集成iOS6如下所示:iOS6 Facebook:如果用戶尚未配置Facebook,該怎麼辦?

SLComposeViewController *fbController = [SLComposeViewController composeViewControllerForServiceType:SLServiceTypeFacebook]; 

if([SLComposeViewController isAvailableForServiceType:SLServiceTypeFacebook]) { 
    SLComposeViewControllerCompletionHandler __block completionHandler=^(SLComposeViewControllerResult result){ 

     [fbController dismissViewControllerAnimated:YES completion:nil]; 

     switch(result){ 
      case SLComposeViewControllerResultCancelled: 
      default: 
      { 
       NSLog(@"Cancelled....."); 

      } 
       break; 
      case SLComposeViewControllerResultDone: 
      { 
       NSLog(@"Posted...."); 
      } 
       break; 
     }}; 

    //[fbController addImage:[UIImage imageNamed:@"1.jpg"]]; 
    [fbController setInitialText:@"Test message"]; 
    [fbController addURL:[NSURL URLWithString:self.asset.url]]; 
    [fbController setCompletionHandler:completionHandler]; 
    [self presentViewController:fbController animated:YES completion:nil]; 
} else { 
    NSLog(@"no facebook setup"); 
} 

這裏的問題是,我沒有被登錄到Facebook測試它,我得到的是日誌消息。

**奇怪的是,我得到的仿真對話,而不是設備!**

我如何可以顯示用戶,告訴他們一個警告,他們需要登錄到Facebook ?我已經看過系統警報的屏幕截圖,但由於某些原因我沒有收到這些截圖。我做錯了什麼?

回答

28

取消對[SLComposeViewController isAvailableForServiceType:SLServiceTypeFacebook]的檢查修復了我的問題。

+0

固定爲設備嗎? – msk

+0

是的,當我在模擬器以及設備中刪除此檢查時彈出警報。 – msk

+0

是的,也爲設備固定。 –

1

我不認爲你會得到任何系統警報(我不知道,但基於Twitter的經驗)。儘管我在最近的一些博客/網絡帖子中看到了它,但它對我也不適用。我建議在這種情況下,您應該詢問用戶的FB憑據(自定義對話框或FBDialog)並在iPad中添加FB帳戶。下面的代碼沒有經過測試,但你可以得到一個想法。我在爲我的應用程序正常工作的Twitter &做類似的事情。

ACAccountStore *store = [[ACAccountStore alloc] init] ; 
    ACAccountType *fbType = [store accountTypeWithAccountTypeIdentifier:ACAccountTypeIdentifierFacebook]; 
    [store requestAccessToAccountsWithType:fbType options:[NSDictionary dictionaryWithObjectsAndKeys:kAppID,ACFacebookAppIdKey, nil] completion:^(BOOL granted, NSError *error) { 
     if(YES) { 
      ACAccount *fbAccount = [[ACAccount alloc] initWithAccountType:[store accountTypeWithAccountTypeIdentifier:ACAccountTypeIdentifierFacebook]]; 

      ACAccountCredential *outhCredential = [[ACAccountCredential alloc] initWithOAuth2Token:[appDelegate.facebook accessToken] refreshToken:refesrhToken expiryDate:[appDelegate.facebook expirationDate]]; 


      fbAccount.credential = outhCredential; 

      [store saveAccount:fbAccount withCompletionHandler:^(BOOL success, NSError *error) { 
       if(success) 
       { 
        [self performSelectorOnMainThread:@selector(showFBPostSheet) withObject:nil waitUntilDone:NO]; 
       } 
      }]; 

      [outhCredential release]; 
      [fbAccount release]; 
      [store release]; 
     } 
     // Handle any error state here as you wish 
    }]; 
+0

我其實剛剛意識到我確實在模擬器中獲得對話框,但不是設備。這麼奇怪。 –

7

看起來[SLComposeViewController isAvailableForServiceType:]在模擬器中返回true,即使您沒有在那裏設置帳戶。

相關問題