【问题标题】:BGTaskScheduler submit call fails with BGTaskSchedulerErrorDomain code: 1BGTaskScheduler 提交调用失败,BGTaskSchedulerErrorDomain 代码:1
【发布时间】:2019-11-03 13:25:03
【问题描述】:

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)

 }

【问题讨论】:

标签: ios swift backgroundtaskidentifier


【解决方案1】:

代码1表示BGTaskScheduler.Error.unavailable

根据文档:

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

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

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

【讨论】:

  • 谢谢。是的。在 info.plist 中启用了后台获取和处理。我在真正的 iPhone XR 上运行。这也不是应用程序扩展。令人惊讶的是,ColorFeed 应用程序也是如此。如果您可以尝试使用 Apple 的示例应用程序,看看它是否适合您,那么这可能会有所帮助。
  • 是的,该代码对我有用。您是否检查过您设备上的“设置,常规”中是否打开了后台应用刷新?关闭它会给我错误,代码 1。
  • 谢谢!那行得通!这一切都是在我查看 App 的后台刷新设置而不是顶级设置时进行的。但在我的 iPhone 上,它默认是禁用的。知道如何以编程方式启用它吗?
  • 你不能。用户必须启用它。如果应用程序可以打开它,那么将它作为设置就没有多大意义了:)
【解决方案2】:

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

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

【讨论】:

  • 是的,这只对我有用。非常感谢。
猜你喜欢
  • 1970-01-01
  • 2015-07-25
  • 1970-01-01
  • 1970-01-01
  • 2018-10-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-09-13
相关资源
最近更新 更多