2015-09-18 18 views
8

Với Xcode7, tôi nâng cấp Facebook SDK để ghép FBSDKShareKit (4.6.0). Và tôi đã thêm chương trình Facebook vào danh sách trắng như dưới đây. tham khảo: https://developers.facebook.com/docs/ios/ios9FBSDKShareDialog của Facebook SDK không hoạt động trên iOS9?

<key>LSApplicationQueriesSchemes</key> 
<array> 
     <string>fbapi</string> 
     <string>fb-messenger-api</string> 
     <string>fbauth2</string> 
     <string>fbshareextension</string> 
</array> 

Tuy nhiên, đoạn mã sau chỉ hiển thị mặc định iOS thoại xã hội trên iOS9. Cùng một mã với cùng một nhị phân trên iOS8 có thể mở ứng dụng Facebook và hiển thị Hộp thoại Chia sẻ đúng cách.

FBSDKShareLinkContent *content = [[FBSDKShareLinkContent alloc] init]; 
content.contentURL = [NSURL URLWithString:[NSString stringWithFormat:@"http://www.example.com"]]; 
content.contentDescription = @"Test"; 
[FBSDKShareDialog showFromViewController:self withContent:content delegate:nil]; 

Tôi đoán ứng dụng Facebook không được tìm thấy trên iOS9 và sau đó hiển thị hộp thoại xã hội mặc định. Thậm chí không có thông báo lỗi nào cho thấy.

Tôi có bỏ lỡ bất kỳ điều gì không? Hoặc, đó là lỗi iOS9?

+0

Tôi gặp vấn đề tương tự. Tôi nghĩ tôi đã theo dõi mọi thứ trên tài liệu. Nếu không tìm thấy ứng dụng Facebook, bạn vẫn nên sử dụng biểu mẫu chia sẻ trên web. Và nó hoạt động tốt trong mô phỏng. – mrhangz

Trả lời

27

Tôi đoán Facebook đã thay đổi hành vi vì iOS 9 hiện bật lên một hộp thoại hỏi bạn có muốn "Mở Facebook không?" khi thực hiện chuyển đổi ứng dụng. Ngay cả đối với FBSDKLoginManager, phương thức chuyển đổi ứng dụng (bản địa) dường như ít được ưa chuộng hơn một UIWebView phương thức.

Tuy nhiên, bạn vẫn có thể buộc các hộp thoại phần để chuyển sang ứng dụng Facebook (giả sử bạn đã thiết lập ứng dụng plist của bạn như được mô tả trong https://developers.facebook.com/docs/ios/ios9) bằng cách sử dụng phương pháp này:

FBSDKShareDialog *dialog = [[FBSDKShareDialog alloc] init]; 

if ([[UIApplication sharedApplication] canOpenURL:[NSURL URLWithString:@"fbauth2://"]]){ 
    dialog.mode = FBSDKShareDialogModeNative; 
} 
else { 
    dialog.mode = FBSDKShareDialogModeBrowser; //or FBSDKShareDialogModeAutomatic 
} 
dialog.shareContent = content; 
dialog.delegate = self; 
dialog.fromViewController = self; 
[dialog show]; 
+1

Cảm ơn rất nhiều. Điều này làm việc, và đây là những gì tôi muốn. ^^ – derjohng

+2

Ngoài ra, điều này sẽ không hoạt động nếu ứng dụng fb chưa được cài đặt, do đó bạn nên kiểm tra nó và nếu nó chưa được cài đặt, hãy sử dụng FBSDKShareDialogModeFeedBrowser để thay thế. – mrhangz

+0

@mrhangz Tôi đã chỉnh sửa giải pháp để bao gồm séc nếu Ứng dụng Facebook được cài đặt. Tôi đã giả định nó sẽ tự động dự phòng cho các chế độ khác, nhưng nó không. Cảm ơn! Ngoài ra, tôi thích FBSDKShareDialogModeBrowser hơn FBSDKShareDialogModeFeedBrowser. – wilsontgh

0

Trong iOS 9 dưới đây là chỉ có giải pháp làm việc cho tôi để phát hiện nếu ứng dụng facebook được cài đặt trong thiết bị hay không:

NSString *urlString = @"fbapi://"; 
    NSURL *url1 = [NSURL URLWithString:urlString]; 

    if ([[UIApplication sharedApplication] canOpenURL:url1]) { 
     [[UIApplication sharedApplication] openURL:url1]; 
    } 
    else { 
     [[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"itunes link for download app"]]; 
    } 
Các vấn đề liên quan