2015-09-18 8 views
8

Mit Xcode7 aktualisiere ich Facebook SDK zu Pod FBSDKShareKit (4.6.0). Und ich habe Facebook-Schema zu WhiteList wie folgt hinzugefügt. Referenz: https://developers.facebook.com/docs/ios/ios9FBSDKShareDialog von Facebook SDK funktioniert nicht auf iOS9?

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

der folgende Code jedoch nur iOS auf iOS9 sozialer Dialog Standard zeigen. Der gleiche Code mit der gleichen Binärdatei auf iOS8 kann Facebook-App öffnen und den Freigabe-Dialog richtig anzeigen.

Ich denke, Facebook-App ist nicht auf iOS9 gefunden und dann zeigen die Standard-sozialen Dialog. Sogar keine Fehlermeldung wurde angezeigt.

Vermisse ich etwas? Oder ist es ein iOS9 Bug?

+0

Ich habe das gleiche Problem. Ich denke, ich habe alles auf dem Dokument verfolgt. Wenn die Facebook-App nicht gefunden wird, sollte sie weiterhin das Web-Formular für die Freigabe verwenden. Und es funktioniert gut im Simulator. – mrhangz

Antwort

27

Ich vermute, dass Facebook das Verhalten geändert hat, weil iOS 9 nun ein Dialogfeld öffnet, in dem Sie gefragt werden, ob Sie "Facebook öffnen" möchten? beim App-Switching. Selbst für FBSDKLoginManager scheint die App-Switching-Methode (native) weniger bevorzugt zu sein als ein modales UIWebView.

Sie können jedoch nach wie vor, den Anteil Dialog zwingen, auf den Facebook-App wechseln (vorausgesetzt, Sie Ihre Anwendung plist Setup wie in https://developers.facebook.com/docs/ios/ios9 beschrieben) mit dieser Methode:

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

Vielen Dank. Das funktioniert, und das ist, was ich will. ^^ – derjohng

+2

Darüber hinaus wird dies nicht funktionieren, wenn die fb-app nicht installiert ist, also überprüfen Sie es besser und wenn es nicht installiert ist, verwenden Sie stattdessen FBSDKShareDialogModeFeedBrowser. – mrhangz

+0

@mrhangz Ich habe die Lösung bearbeitet, um einen Check zu enthalten, ob die Facebook App installiert ist. Ich nahm an, dass es automatisch auf andere Modi zurückfallen würde, aber es tut es nicht. Vielen Dank! Außerdem bevorzuge ich den FBSDKShareDialogModeBrowser über FBSDKShareDialogModeFeedBrowser. – wilsontgh

0

In iOS 9 unten ist die einzige Lösung, die für mich funktionierte zu erkennen, ob Facebook App im Gerät installiert ist oder nicht:

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"]]; 
    } 
Verwandte Themen