2012-09-21 39 views
14

Tôi đang sử dụng tích hợp Facebook mới trong iOS6 như sau:Facebook iOS6: Phải làm gì nếu người dùng chưa định cấu hình 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"); 
} 

Vấn đề ở đây là, tôi đang thử nghiệm nó mà không bị đăng nhập vào Facebook và tất cả tôi nhận được là nội dung log.

Lạ một điều là **, tôi nhận được hộp thoại ở mặt Simulator, nhưng KHÔNG thiết bị! **

Làm thế nào tôi có thể hiển thị cho người dùng một cảnh báo mà nói với họ rằng họ cần phải đăng nhập vào Facebook ? Tôi đã nhìn thấy ảnh chụp màn hình của một cảnh báo hệ thống, nhưng tôi không nhận được điều đó vì một lý do nào đó. Tôi đã làm gì sai?

Trả lời

28

Xóa séc cho [SLComposeViewController isAvailableForServiceType:SLServiceTypeFacebook] đã khắc phục sự cố cho tôi.

+0

cũng được sửa cho thiết bị? – msk

+0

Có cảnh báo xuất hiện khi tôi xóa séc này, trong trình mô phỏng cũng như trong thiết bị. – msk

+0

Đúng, cũng được sửa cho thiết bị. –

1

Tôi không nghĩ bạn sẽ nhận được bất kỳ cảnh báo hệ thống nào (Tôi không chắc chắn nhưng dựa trên trải nghiệm Twitter). Mặc dù tôi đã nhìn thấy nó trong một số blog gần đây/bài viết trên web nhưng nó không làm việc cho tôi quá. Tôi đề nghị trong trường hợp này, bạn nên yêu cầu thông tin đăng nhập FB của người dùng (hộp thoại tùy chỉnh hoặc FBDialog) và thêm tài khoản FB trong iPad. Mã dưới đây không được kiểm tra nhưng bạn có thể có ý tưởng. Tôi đang làm điều tương tự cho Twitter & đang hoạt động tốt trong các ứng dụng của tôi.

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

Tôi thực sự chỉ nhận ra rằng tôi nhận được hộp thoại trong trình mô phỏng, nhưng không phải là thiết bị. Lạ quá. –

7

Dường như [SLComposeViewController isAvailableForServiceType:] trả về true trong trình mô phỏng, ngay cả khi bạn chưa thiết lập tài khoản tại đó.

Các vấn đề liên quan