【问题标题】:Facebook ShareDialog crashes with EXC_BAD_ACCESS if Facebook app is not installed (iOS 11.3 XCode 9.3)如果未安装 Facebook 应用程序,Facebook ShareDialog 会因 EXC_BAD_ACCESS 崩溃 (iOS 11.3 XCode 9.3)
【发布时间】:2018-05-10 12:01:21
【问题描述】:

在 iOS 11 之前,我一直使用 SLComposeViewController 与 Facebook 共享,但现在它已被弃用。

所以我已将 Facebook SDK 的 ShareDialog 添加到我的项目中。

如果 Facebook 应用已安装,则共享过程成功完成,但如果 Facebook 应用未安装,Facebook SDK 会抛出 EXC_BAD_ACESS。您可以看到它崩溃的屏幕。崩溃发生在SDKSharingDelegateBridge.swift 类中。

如果未安装应用程序,它应该打开 WebView 或给出一些错误。它不应该崩溃并且不会给我任何错误。

由于没有崩溃日志,我只有EXC_BAD_ACCESS

我的环境:

  • XCode 9.3
  • 斯威夫特 3.3
  • iOS 11.3
  • FacebookShare (0.3.0)(来自 CocoaPods)

有人遇到过这种情况吗?已经谢谢了。

以下是从官方文档复制的应用程序的代码 sn-p。 (https://developers.facebook.com/docs/swift/sharing/share-dialog)

var shareContent: LinkShareContent?

if let urlstring = urlStr, let url = URL(string: urlstring) {
    shareContent = LinkShareContent(url: url, quote: initialText)
}

let shareDialog = ShareDialog(content: shareContent!)
shareDialog.mode = .native
shareDialog.failsOnInvalidData = true
shareDialog.completion = { result in
    // Handle share results
}

do {
    try shareDialog.show()
}
catch {

}

【问题讨论】:

  • 请发布实际错误而不是它的图像。
  • 这是实际错误,它没有提供任何日志,正如我在帖子中所说的那样。
  • @Khushbu 这对我来说不是这样。 Share 对我有用,我的 pod 是最新的。如果在使用共享对话框时未安装 Facebook 应用程序,Facebook SDK 会崩溃,这对我来说就是这种情况。
  • 能否贴出用于添加 SDK 的代码?

标签: ios swift facebook-ios-sdk facebook-share


【解决方案1】:

在得到更好的答案之前,我已将其修复如下。

if  UIApplication.shared.canOpenURL(URL(string: "fb://")!){
    shareDialog.mode = .native
}
else {
    shareDialog.mode = .automatic
}

【讨论】:

  • Facebook 文档现在使用“fbapi”键而不是 fb。这对我有用: if UIApplication.shared.canOpenURL(URL(string: "fbapi://")!){ shareDialog.mode = .native } else { shareDialog.mode = .automatic }
猜你喜欢
  • 1970-01-01
  • 2013-07-16
  • 2018-09-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多