Xcode 选择退出 SceneDelegate 后不调用应用程序委托

Xcode not calling application delegate after opting out of SceneDelegate

当iOS13发布时,我通过正常程序选择不使用新的SceneDelegate。

 - SceneDelegate.swift does no longer exist
 - There are no Scene related methods in AppDelegate
 - Application Scene Manifest is removed from .plist

效果很好,自从(iOS 11.0 目标,Xcode 11.2.1)以来,我就是这样 运行。

上周我 运行 一个部署目标为 13.0 的构建,然后切换回 11.0。

从那时起,应用程序委托方法不再被调用,例如。

func application(_ application: UIApplication, open url: URL, options: [UIApplication.OpenURLOptionsKey : Any])

我唯一能看到的是登录控制台

Can't end BackgroundTask: no background task exists with identifier 15 (0xf), or it may have already been ended

我已经三次检查了上面的所有设置,但我无法像以前那样工作。

唯一可能不同的是故事板现在默认为 'automatic' (iOS 13.0, *) 演示模式,但我不确定以前是怎样的。

由于自动功能只能从 iOS 13+ 开始使用,所以似乎有些问题。

有人知道吗?

跟进此 thread 中的回复:

applicationDidBecomeActive
applicationWillEnterForeground

etc 实际上被调用了。

我已经尝试清理构建、重新启动 Xcode、mac、设备、清除派生数据等

所以,我终于找到了答案。

原来是个好东西

实例方法几乎匹配

func application(_ application: UIApplication, continue userActivity: NSUserActivity,
    restorationHandler: @escaping ([UIUserActivityRestoring]?) -> Void) -> Bool

func application(_ application: UIApplication, open url: URL, sourceApplication: String?, annotation: Any) -> Bool

那 Xcode 完全忽略了报告,并以某种方式设法在建筑之间闯入 for iOS 11 > iOS 13 > iOS 11.

这也很奇怪,因为我前几天用文档验证了它们,Apples和Firebase,它们之间没有区别。

现在终于可以用了,耶。

如果您不需要使用 SceneDelegate,请在 AppDelegate 文件中添加 属性。

var window: UIWindow?

在 didFinishLaunchingWithOptions 函数上方添加这一行

var window: UIWindow?
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool
    {
     // Override point for customization after application launch.
            return true
    }