(Чтобы предотвратить правильные предложения, да, я разместил этот вопрос на прошлой неделе на форуме разработчиков Facebook. Ответов пока нет.)
TL; DR
FacebookSDK 5.8 жалуется при запуске FBSDKLog: Unable to find a valid UIWindow
.
Основная история
В проекте Xcode 11 / iOS 13 с одним просмотром больше не существует. UIWindow
элемент по умолчанию, связанный с приложением. (Окно само по себе все еще существует; вы можете увидеть его, содержащееся в UIWindowScene
, используя отладчик View Hierarchy в XCode или приложение Reveal.)
FBSDK 5.8 делаеткажется, что iOS-13-осведомлен, и смотрит на это. Соответствующий код находится в строке 498
https://github.com/facebook/facebook-ios-sdk/blob/master/FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKInternalUtility.m.
Код Facebook перебирает элемент приложения connectedScenes
, что для меня является пустым набором. Как мне изменить мой код так, чтобы FBSDK находил окно?
Немного взлома
Я попытался добавить следующее к scene(_:willConnectTo:options:)
, но, похоже, слишком поздно -сообщение FBSDKLog к тому времени уже появилось. (Так что я колеблюсь ...)
guard let s = (scene as? UIWindowScene) else { return }
self.window = UIWindow(windowScene: s)
Следующее тоже не удалось, но это был просто выстрел в темноте:
guard let s = (scene as? UIWindowScene) else { return }
self.window = UIWindow(frame: s.coordinateSpace.bounds)
self.window?.windowScene = s
self.window?.rootViewController = ViewController(nibName: nil, bundle: nil)
self.window?.makeKeyAndVisible()