2

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)")
}

上面的代码在 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)

 }
4

2 回答 2

8

代码 1 表示BGTaskScheduler.Error.unavailable

根据文档:

此错误通常由以下三个原因之一发生:

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

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

于 2019-11-03T19:43:00.317 回答
1

在我的情况下,我必须在发布模式下运行应用程序才能让它工作。

编辑方案 -> 构建配置 -> 发布

于 2021-05-26T16:09:37.403 回答