iOS 13安排iOS后台任务

时间:2019-10-01 14:45:38

标签: ios13 xcode11 swift5.1

我正在实现BackgroundTasks框架来更新数据。但是我遇到了以下问题

Could not schedule refreshApp: Error Domain=BGTaskSchedulerErrorDomain Code=1 "(null)"
Could not schedule data featch: Error Domain=BGTaskSchedulerErrorDomain Code=1 "(null)"
2019-10-01 19:19:32.550320+0530 SOBackgroundTask[34131:1129470] Can't end BackgroundTask: no background task exists with identifier 3 (0x3), or it may have already been ended. Break in UIApplicationEndBackgroundTaskError() to debug.

8 个答案:

答案 0 :(得分:7)

解决方案是在设备上运行。我在模拟器上运行。但是,这表明在模拟器上运行时,已在“设置”中启用了“后台应用刷新”。

答案 1 :(得分:5)

以下是从ObjC标头中提取的Domain=BGTaskSchedulerErrorDomain的可能的错误代码,并提供了一些解释。

BGTaskSchedulerErrorCodeUnavailable = 1 //后台任务调度功能不适用于此应用/扩展程序。可能已在“设置”中禁用了“后台应用刷新”。

BGTaskSchedulerErrorCodeTooManyPendingTaskRequests = 2 //无法提交任务请求,因为这种类型的待处理任务请求太多。在重试之前,请先取消一些现有的任务请求。

BGTaskSchedulerErrorCodeNotPermitted = 3 //无法提交任务请求,因为UIBackgroundModes数组中未包含适当的后台模式,或者应用程序的Info.plist中的BGTaskSchedulerPermittedIdentifiers数组中没有其标识符。

答案 2 :(得分:2)

我已经在真实设备(iOS13.2和iOS13.2.2)上进行了测试,但结果相同。

错误域= BGTaskSchedulerErrorDomain代码= 2“(空)” 无法结束BackgroundTask:不存在标识符为37(0x25)的后台任务,或者它可能已经结束。中断UIApplicationEndBackgroundTaskError()进行调试。

错误域= BGTaskSchedulerErrorDomain代码= 1“(空)” 无法结束BackgroundTask:不存在标识符为113(0x71)的后台任务,或者它可能已经结束。中断UIApplicationEndBackgroundTaskError()进行调试。

似乎仍然存在错误。

https://forums.developer.apple.com/thread/121990

答案 3 :(得分:1)

请检查是否错过了在项目的info.plist文件中注册BGTaskSchedulerPermittedIdentifiers

答案 4 :(得分:1)

针对:

BGTaskSchedulerErrorDomain error 3

在项目的.xcodeproj文件中检查适当的目标。然后转到信息标签和自定义iOS目标属性,并检查是否已添加允许的后台任务计划程序标识符(BGTaskSchedulerPermittedIdentifiers)。

这在将BackgroundTasks添加到现有项目时解决了我的问题。

答案 5 :(得分:1)

我认为这是因为您的手机关闭了背景刷新功能!!!!!!

答案 6 :(得分:0)

只需检查“后台模式”已添加到目标功能中,并选择了“后台获取”和“后台处理”选项

答案 7 :(得分:0)

根据https://developer.apple.com/documentation/backgroundtasks/bgtaskschedulererrorcode/bgtaskschedulererrorcodeunavailable?language=objc,此错误通常由以下三个原因之一发生:

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