我正在尝试通过一个利用场景(也是新的)的新应用程序来实现新的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中是否有一些事件可以注册任务,如果不是,基于场景的应用程序应遵循的推荐模式是什么?
答案 0 :(得分:0)
AppDelegate.didFinishLaunchingWithOptions
。因此,您应该继续使用该方法注册后台任务。