18

我正在实施 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.
4

9 回答 9

32

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

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

BGTaskSchedulerErrorCodeTooManyPendingTaskRequests = 2// 由于该类型的待处理任务请求过多,无法提交任务请求。在重试之前取消一些现有的任务请求。

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

于 2019-10-03T17:19:27.800 回答
32

解决方案是在设备上运行。我在模拟器上运行。但是,在模拟器上运行时,它显示后台应用程序刷新已在设置中启用。

可能还有其他一些原因。请访问 https://developer.apple.com/documentation/backgroundtasks/bgtaskschedulererrorcode/bgtaskschedulererrorcodeunavailable?language=objc

于 2019-10-23T16:43:39.647 回答
4

为了:

BGTaskSchedulerErrorDomain error 3

检查项目.xcodeproj文件中的适当目标。然后转到 info 选项卡和Custom iOS Target Properties并检查是否BGTaskSchedulerPermittedIdentifiers添加了允许的后台任务调度程序标识符 ( )。

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

于 2020-04-28T13:03:08.853 回答
2

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

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

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

似乎仍然存在错误。

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

于 2019-11-11T09:07:23.300 回答
2

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

于 2020-03-19T05:46:49.170 回答
2

我认为这是因为您的手机关闭了 bg 刷新!!!!!!!

于 2020-07-17T03:21:23.783 回答
1

如果出现 BGTaskSchedulerErrorDomain 错误 3,我没有在下面添加

<array>
    <string>com.shiny.job</string>
    <string>com.shiny.jobpower</string>
    <string>com.shiny.jobnet</string>
    <string>com.shiny.jobpowernet</string>
</array>```
于 2021-09-30T01:41:53.223 回答
0

只需检查 Background Modes 已添加到目标 Capabilities 并且选择了 Background fetch 和 Background processing 选项

于 2020-06-13T09:28:04.327 回答
0

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

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