BackgroundTask iOS 13 Swift与场景

时间:2019-09-19 18:23:33

标签: swift ios13

我正在尝试通过一个利用场景(也是新的)的新应用程序来实现新的iOS 13后台任务功能。没有很多示例,但是我发现的示例没有使用SceneDelegates,而是所有逻辑都包含在AppDelegate中。这会导致问题,因为现在在SceneDelegate(而不是AppDelegate)中引发了进入后台的应用程序事件。

使用场景时,此方法不会在AppDelegate中触发

func applicationDidEnterBackground(_ application: UIApplication) {

}

此方法确实在SceneDelegate中触发

func sceneDidEnterBackground(_ scene: UIScene) {

}

我无法在AppDelegate中为以下方法找到对应的SceneDelegate方法,其中所有示例都显示了BGTaskScheduler注册任务

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
        BGTaskScheduler.shared.register(forTaskWithIdentifier: "UNIQUE_ID", using: DispatchQueue.global()) { task in
            refreshMethod(task: task as! BGAppRefreshTask)
        }

}

我的问题是,SceneDelegate中是否有一些事件可以注册任务,如果不是,基于场景的应用程序应遵循的推荐模式是什么?

1 个答案:

答案 0 :(得分:0)

即使在有SceneDelegate的情况下,在应用启动时仍会调用

AppDelegate.didFinishLaunchingWithOptions。因此,您应该继续使用该方法注册后台任务。