2015-09-18 24 views
8

Xcode7 ile Facebook SDK'yı FBSDKShareKit (4.6.0) bölmesine yükseltirim. Ben de aşağıdaki gibi WhiteList'e Facebook şemasını ekledim. referansı: https://developers.facebook.com/docs/ios/ios9Facebook'tan FBSDKShareDialog SDK, iOS9 üzerinde çalışmıyor mu?

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

Ancak, aşağıdaki kod yalnızca iOS iOS9 sosyal iletişim varsayılan göstermektedir. IOS8'de aynı ikili ile aynı kod, Facebook uygulamasını açabilir ve Paylaşım İletişim Kutusunu uygun şekilde gösterebilir.

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]; 

Facebook uygulamasının iOS9'da bulunmadığını ve sonra varsayılan sosyal iletişim kutusunu gösterdiğinizi tahmin ediyorum. Hiçbir hata mesajı bile gösterilmedi.

şey kaçırdım mı? Ya da bir iOS9 hatası mı?

+0

Aynı problemi çözdüm. Sanırım dokümanda her şeyi takip ettim. Facebook uygulaması bulunmuyorsa, yine de web paylaşım formunu kullanmalıdır. Ve simülatörde iyi çalışıyor. – mrhangz

cevap

27

Facebook'un bu davranışı değiştirdiğini tahmin ediyorum, çünkü iOS 9 şimdi "Facebook'u Açmak İster" sorusunu soran bir iletişim kutusu açıyor. uygulama değiştirirken. FBSDKLoginManager için bile, uygulama değiştirme (yerel) yöntemi, kalıcı bir UIWebView'den daha az tercih edilen gibi görünüyor. iOS 9

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

Çok teşekkürler. Bu çalışır ve bu benim istediğim şey. Daha iyi kontrol ediyorum bu yüzden fb uygulaması yüklü değilse ^^ – derjohng

+2

ek olarak, bu işe yaramaz ve yüklü değilse, bunun yerine FBSDKShareDialogModeFeedBrowser kullanın. – mrhangz

+0

@mrhangz Facebook Uygulaması yüklü olup olmadığını kontrol etmek için çözümü düzenledim. Otomatik olarak diğer modlara geri döneceğini varsayıyordum, ama değil. Teşekkürler! Ayrıca, FBSDKShareDialogModeFeedBrowser üzerinden FBSDKShareDialogModeBrowser tercih ederim. – wilsontgh

0

aşağıdaki gibidir:

Ancak, yine de Facebook uygulaması geçmek için hisse iletişim zorlayabilir bu yöntemi kullanarak (eğer https://developers.facebook.com/docs/ios/ios9 açıklandığı şekilde uygulama plist kurulum varsayarak) facebook uygulamasının cihaza yüklenip yüklenmediğini algılayan tek çözüm:

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"]]; 
    } 
İlgili konular