ios - iOS 9 上的 Facebook 分享按钮打开浏览器而不是本地 Facebook 应用程序

标签 ios facebook ios9 facebook-sdk-4.0

我的应用程序使用了一个 FBSDKShareButton,它从 iOS 8 上的 native Facebook 应用程序启动一个弹出窗口。但是,在 iOS 9 上它启动一个浏览器窗口,即使我已经按照所有说明进行操作支持 iOS 9 here并添加了必要的 LSApplicationQueriesSchemes(并针对 iOS 9 重新编译)。

我一直在读到 Facebook 登录 打开浏览器而不是 iOS 9 上的 native 应用程序是“设计使然”,但是没有关于为什么/是否共享 按钮 应该启动 native 应用程序。似乎共享 dialog (FBSDKShareDialog) 确实启动了 native 应用程序,但我想尽可能避免使用我自己的按钮。

还有一个次要问题:如果我使用自己的按钮并启动 FBSDKShareDialog,我会在日志中收到以下错误(尽管实际共享似乎工作正常)。为什么?

-canOpenURL: failed for URL: "fbapi20150629:///" - error: "This app is not allowed to query for scheme fbapi20150629"

plugin com.apple.share.Facebook.post invalidated

我使用的是最新的 Facebook SDK (v4.6),因此应该不需要引用的 URL 方案。我正在使用 Xcode 7.0.1 进行编译。

最佳答案

我认为问题是由于 FBSDKShareButton 构建了一个没有 ViewController 的 FBSDKShareDialog。因此,如果没有 VC,它将退回到使用 Safari View 进行共享。 :( 您可以在此处的 FB SDK 源代码中看到此行为:

https://github.com/facebook/facebook-ios-sdk/blob/fe777bd7a8b335c5780e2ee160d81719e132e76c/FBSDKShareKit/FBSDKShareKit/FBSDKShareButton.m

我已经将 FBSDKShareButton 子类化以直接启动一个对话框,它为我正确使用了共享表,具有最少的覆盖代码,并保持了 FBSDKShareButton 的原生外观(和本地化):

public class EventShareButton: FBSDKShareButton {
    func _share(sender: AnyObject) {
        FBSDKShareDialog.showFromViewController(parentViewController(), withContent: shareContent, delegate: nil)
    }
}

不幸的是,我对 fbapi20150629 警告没有答案,我试图寻找答案,这让我来到了这里。 :)

关于ios - iOS 9 上的 Facebook 分享按钮打开浏览器而不是本地 Facebook 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33086211/

相关文章:

ios - 在 TabBarController 和 ViewController 之间切换的最佳方法

ios - 使用 AFNetworking 2.0 发布 JSON 数据

ios - EXC_BAD_ACCESS 代码=1 到 main.m 中的 EXC_BREAKPOINT

swift - 演示 iAds 在模拟器上的 iOS 9/9.1 Xcode 7.1.1 上不工作,在设备上也不工作

swift - 重新使用的 ViewController 中的搜索栏在 segue 后没有响应

ios9 - BETA iOS9 部署以测试设备

ios - 在 iOS 11.3 中使用 PWA 打开 PDF 时出现问题

Facebook 应用程序请求不起作用

iphone - Facebook 通过 Facebook SDK 对 iPhone 原生应用程序进行评论

php - 如何在 Facebook 注册插件中添加 Conceal 字段?