Facebook SDK的FBSDKShareDialog不适用于iOS9?

使用Xcode7,我将Facebook SDK升级到pod FBSDKShareKit(4.6.0)。 我已经将Facebookscheme添加到WhiteList中,如下所示。 参考: https : //developers.facebook.com/docs/ios/ios9

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

但是,以下代码仅显示iOS9上的iOS默认社交对话框。 在iOS8上使用相同的二进制代码可以打开Facebook应用程序并正确显示共享对话框。

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

我猜在iOS9上找不到Facebook应用程序,然后显示默认的社交对话框。 即使没有错误信息显示。

我错过了什么? 或者,这是一个iOS9的错误?

我猜Facebook改变了行为,因为iOS 9现在popup一个对话框询问你是否想“打开Facebook? 在做应用切换时。 即使对于FBSDKLoginManager,应用程序切换(native)方法似乎也不如模态UIWebView。

但是,您仍然可以使用此方法强制共享对话框切换到Facebook应用程序(假设您已经按照https://developers.facebook.com/docs/ios/ios9中的说明设置了应用程序的plist设置)&#xFF1A;

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

在下面的iOS 9是唯一的解决scheme,我的工作,以检测是否facebook应用程序安装在设备或不:

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