BGTaskScheduler 提交调用失败,BGTaskSchedulerErrorDomain 代码:1

use*_*899 1 ios swift backgroundtaskidentifier

BGTaskScheduler 因“BGTaskSchedulerErrorDomain”而失败 - 代码:iOS 13.0 上的 1

我已经尝试了 Apple 提供的示例程序 ColorFeed,但它面临同样的问题

let request = BGProcessingTaskRequest(identifier: "com.example.apple-samplecode.ColorFeed.db_cleaning")
request.requiresNetworkConnectivity = false
request.requiresExternalPower = true

do 
{
  try BGTaskScheduler.shared.submit(request)
} catch {
  print("Could not schedule database cleaning: \(error)")
}
Run Code Online (Sandbox Code Playgroud)

上面的代码在 applicationDidEnterBackground 中被调用

早些时候,该任务在 didFinishLaunchingWithOptions 中注册...

 BGTaskScheduler.shared.register(forTaskWithIdentifier: "com.example.apple-samplecode.ColorFeed.db_cleaning", using: nil) { task in

        // Downcast the parameter to a processing task as this identifier is used for a processing request.
        self.handleDatabaseCleaning(task: task as! BGProcessingTask)

 }
Run Code Online (Sandbox Code Playgroud)

Pau*_*w11 7

代码 1 表示 BGTaskScheduler.Error.unavailable

根据文档:

此错误通常由以下三个原因之一引起:

  • 用户已在设置中禁用后台刷新。
  • 该应用程序在不支持后台处理的模拟器上运行。
  • 扩展没有在 Info.plist 文件中将 RequestsOpenAccess 设置为 YES,或者用户没有授予开放访问权限。

你是在真机上运行吗?该设备是否启用了后台刷新?