【发布时间】:2019-10-29 20:36:45
【问题描述】:
(为了阻止善意的建议,是的,我上周在 Facebook 的开发者论坛上发布了这个问题。还没有回复。)
TL;DR
Facebook SDK 5.8 在启动时报错FBSDKLog: Unable to find a valid UIWindow。
主要故事
在从头开始的单视图 Xcode 11/iOS 13 项目中,不再有与应用程序关联的默认 UIWindowmember。 (窗口本身仍然存在;您可以使用 Xcode 中的 View Hierarchy Debugger 或 Reveal 应用程序看到它,包含在 UIWindowScene 中。)
FBSDK 5.8 似乎确实支持 iOS-13,并四处寻找。相关代码在第498行
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()
【问题讨论】:
-
@Andrew Duncan 你找到解决办法了吗?
-
没有 没有听说过,无论是在这里还是在 Facebook 的论坛上。现在没关系,因为我使用的是用早期版本的 Xcode 创建的项目。但是对于创建新项目,一种解决方法可能是使用旧 Xcode 项目模板的集合:github.com/rmaddy/XcodeTemplates。
标签: facebook ios13 uiwindowscene