Facebook ShareDialog аварийно завершает работу с EXC_BAD_ACCESS, если приложение Facebook не установлено (iOS 11.3 XCode 9.3) - PullRequest
0 голосов
/ 10 мая 2018

До iOS 11 я использовал SLComposeViewController для обмена с Facebook, но теперь это устарело.

Итак, я добавил ShareDialog Facebook SDK в свой проект.

Если приложение Facebook установлено процесс обмена успешно завершен, но если приложение Facebook не установлено Facebook SDK выдает EXC_BAD_ACESS.Вы можете увидеть экран, где он разбился.Сбой происходит в SDKSharingDelegateBridge.swift классе.

enter image description here

Если приложение не установлено, оно должно открыть WebView или выдать ошибку.Это не должно привести к сбою и не дает мне ошибки.

Так как нет журнала для аварии, у меня есть только EXC_BAD_ACCESS.

Моя среда:

  • XCode 9,3
  • Swift 3,3
  • iOS 11,3
  • FacebookShare (0,3,0) (сCocoaPods)

Кто-нибудь сталкивался с такой ситуацией?Спасибо уже.

Ниже приведен фрагмент кода из приложения, скопированный из официальных документов.(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 {

}

1 Ответ

0 голосов
/ 10 мая 2018

Пока не получу лучший ответ, я исправил это, как показано ниже.

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