我正在实现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.
答案 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()进行调试。
似乎仍然存在错误。
答案 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,此错误通常由以下三个原因之一发生: