在 iOS 8 中,使用 FBSDKShareDialog
共享链接内容FBSDKShareLinkContent
可以正常工作,但在 iOS 9 设备上无法分享 imageURL
、contentTitle
和 contentDescription
。
该应用程序基于 iOS 9 SDK、Xcode 7、Facebook SDK 4.7.0 构建,并完成了为 iOS9 准备应用程序中提到的所有操作。该应用程序目前不在 App Store 上,Facebook 应用程序处于开发模式。
呈现对话框的代码非常常见(Swift 2.0):
let content = FBSDKShareLinkContent()
content.contentURL = <URL to the app in the App Store>
content.imageURL = <valid image URL>
content.contentTitle = <some title>
content.contentDescription = <some descr>
let shareDialog = FBSDKShareDialog()
shareDialog.fromViewController = viewController
shareDialog.shareContent = content
shareDialog.delegate = self
if !shareDialog.canShow() {
print("cannot show native share dialog")
}
shareDialog.show()
在iOS 9上,Facebook SDK呈现的本机对话框没有图像、标题和描述:
![在iOS 9上,Facebook SDK呈现的本机对话框没有图像、标题和描述](https://istack.dev59.com/d1riI.webp)
-canOpenURL: failed for URL: "fbapi20150629:/" - error: "This app is not allowed to query for scheme fbapi20150629"
这会导致一个空的帖子:
![empty post shared from iOS 9 device appearance from the web](https://istack.dev59.com/fGycV.webp)
然而,在iOS 8上,该对话框是通过FB应用程序呈现的,或者在未安装FB应用程序时通过应用内Safari vc打开。
出于比较的目的,相同的代码可在iOS 8设备上正常工作:
更新:
虽然@rednuht's的答案解决了最初的问题,但值得注意的是由@sophie-fader指出的AppStore URL特定情况