我的应用程序使用了一个 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 源代码中看到此行为:
我已经将 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/