【问题标题】:FBSDKShareDialog of Facebook SDK is not working on iOS9?Facebook SDK 的 FBSDKShareDialog 不能在 iOS9 上运行?
【发布时间】:2015-12-15 02:26:10
【问题描述】:

使用 Xcode7,我将 Facebook SDK 升级到 pod FBSDKShareKit (4.6.0)。我已将 Facebook 方案添加到白名单,如下所示。 参考: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 facebook-sdk-4.x


【解决方案1】:

我猜 Facebook 改变了这种行为,因为 iOS 9 现在会弹出一个对话框,询问您是否要“打开 Facebook?”在进行应用程序切换时。即使对于 FBSDKLoginManager,应用切换(本机)方法似乎也不如模态 UIWebView 首选。

但是,您仍然可以使用以下方法强制共享对话框切换到 Facebook 应用程序(假设您的应用程序 plist 设置如 https://developers.facebook.com/docs/ios/ios9 中所述):

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

【讨论】:

  • 非常感谢。这行得通,这就是我想要的。^^
  • 另外,如果没有安装fb应用,这将不起作用,所以你最好检查一下,如果没有安装,请改用FBSDKShareDialogModeFeedBrowser。
  • @mrhangz 我已经编辑了解决方案,包括检查是否安装了 Facebook 应用程序。我假设它会自动回退到其他模式,但事实并非如此。谢谢!另外,我更喜欢 FBSDKShareDialogModeBrowser 而不是 FBSDKShareDialogModeFeedBrowser。
  • 对我来说这似乎是一个 facebook sdk 错误。除了 FBSDKShareDialogModeFeedBrowser(甚至不是自动的)之外,我什么都不能使用,如果它对你有用,那就太好了 :)
  • 刚刚在 iOS 11 上测试过。dialog.mode = FBSDKShareDialogModeBrowser 是我在未安装 Facebook 应用程序时需要做的,否则它不会显示任何内容。 ??
【解决方案2】:

在下面的 iOS 9 中,我检测设备中是否安装了 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"]];
    }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-07-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-04
    • 1970-01-01
    相关资源
    最近更新 更多