iOS 13 计划 iOS 后台任务
iOS 13 Schedule iOS background tasks
我正在实施 BackgroundTasks Framework 来更新数据。但是我遇到了以下问题
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.
以下是从 ObjC headers 中提取的 Domain=BGTaskSchedulerErrorDomain
的可能错误代码以及一些解释。
BGTaskSchedulerErrorCodeUnavailable = 1
// 后台任务调度功能不适用于此 app/extension。设置中可能已禁用后台应用刷新。
BGTaskSchedulerErrorCodeTooManyPendingTaskRequests = 2
// 无法提交任务请求,因为该类型的待处理任务请求过多。在重试之前取消一些现有的任务请求。
BGTaskSchedulerErrorCodeNotPermitted = 3
// 无法提交任务请求,因为适当的背景模式未包含在 UIBackgroundModes 数组中,或者其标识符不存在于应用的 Info.plist 中的 BGTaskSchedulerPermittedIdentifiers 数组中.
解决方法是在设备上运行。我在模拟器上 运行ning。但是,它显示后台应用程序刷新已在设置中启用,同时 运行 在模拟器上运行。
可能还有一些其他原因。请拜访
https://developer.apple.com/documentation/backgroundtasks/bgtaskschedulererrorcode/bgtaskschedulererrorcodeunavailable?language=objc
我在真实设备上测试过(iOS13.2,和iOS13.2.2),但结果是一样的。
错误域=BGTaskSchedulerErrorDomain 代码=2“(空)”
无法结束 BackgroundTask:不存在标识符为 37 (0x25) 的后台任务,或者它可能已经结束。中断 UIApplicationEndBackgroundTaskError() 进行调试。
错误域=BGTaskSchedulerErrorDomain 代码=1“(空)”
无法结束 BackgroundTask:不存在标识符为 113 (0x71) 的后台任务,或者它可能已经结束。中断 UIApplicationEndBackgroundTaskError() 进行调试。
看来还是存在bug
请检查您是否错过了在项目的 info.plist 文件中注册 BGTaskSchedulerPermittedIdentifiers
。
对于:
BGTaskSchedulerErrorDomain error 3
在项目的 .xcodeproj
文件中检查适当的目标。然后转到信息选项卡和 自定义 iOS 目标属性 并检查是否添加了允许的后台任务计划程序标识符 (BGTaskSchedulerPermittedIdentifiers
)。
这解决了我在将 BackgroundTasks
添加到现有项目时遇到的问题。
只需检查已将后台模式添加到目标功能,并且已选择后台提取和后台处理选项
我认为这是因为您的手机关闭了背景刷新!!!!!!!
根据 https://developer.apple.com/documentation/backgroundtasks/bgtaskschedulererrorcode/bgtaskschedulererrorcodeunavailable?language=objc,此错误通常由以下三个原因之一引起:
- 用户在设置中禁用了后台刷新。
- 该应用程序是 运行 在不支持后台的模拟器上
处理中。
- 键盘扩展没有将 RequestsOpenAccess 设置为 YES
Info.plist 文件,或者用户未授予打开访问权限。
- 扩展类型无法安排后台任务。
如果是BGTaskSchedulerErrorDomain错误3,我没有在下面添加
<array>
<string>com.shiny.job</string>
<string>com.shiny.jobpower</string>
<string>com.shiny.jobnet</string>
<string>com.shiny.jobpowernet</string>
</array>```
我正在实施 BackgroundTasks Framework 来更新数据。但是我遇到了以下问题
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.
以下是从 ObjC headers 中提取的 Domain=BGTaskSchedulerErrorDomain
的可能错误代码以及一些解释。
BGTaskSchedulerErrorCodeUnavailable = 1
// 后台任务调度功能不适用于此 app/extension。设置中可能已禁用后台应用刷新。
BGTaskSchedulerErrorCodeTooManyPendingTaskRequests = 2
// 无法提交任务请求,因为该类型的待处理任务请求过多。在重试之前取消一些现有的任务请求。
BGTaskSchedulerErrorCodeNotPermitted = 3
// 无法提交任务请求,因为适当的背景模式未包含在 UIBackgroundModes 数组中,或者其标识符不存在于应用的 Info.plist 中的 BGTaskSchedulerPermittedIdentifiers 数组中.
解决方法是在设备上运行。我在模拟器上 运行ning。但是,它显示后台应用程序刷新已在设置中启用,同时 运行 在模拟器上运行。
可能还有一些其他原因。请拜访 https://developer.apple.com/documentation/backgroundtasks/bgtaskschedulererrorcode/bgtaskschedulererrorcodeunavailable?language=objc
我在真实设备上测试过(iOS13.2,和iOS13.2.2),但结果是一样的。
错误域=BGTaskSchedulerErrorDomain 代码=2“(空)” 无法结束 BackgroundTask:不存在标识符为 37 (0x25) 的后台任务,或者它可能已经结束。中断 UIApplicationEndBackgroundTaskError() 进行调试。
错误域=BGTaskSchedulerErrorDomain 代码=1“(空)” 无法结束 BackgroundTask:不存在标识符为 113 (0x71) 的后台任务,或者它可能已经结束。中断 UIApplicationEndBackgroundTaskError() 进行调试。
看来还是存在bug
请检查您是否错过了在项目的 info.plist 文件中注册 BGTaskSchedulerPermittedIdentifiers
。
对于:
BGTaskSchedulerErrorDomain error 3
在项目的 .xcodeproj
文件中检查适当的目标。然后转到信息选项卡和 自定义 iOS 目标属性 并检查是否添加了允许的后台任务计划程序标识符 (BGTaskSchedulerPermittedIdentifiers
)。
这解决了我在将 BackgroundTasks
添加到现有项目时遇到的问题。
只需检查已将后台模式添加到目标功能,并且已选择后台提取和后台处理选项
我认为这是因为您的手机关闭了背景刷新!!!!!!!
根据 https://developer.apple.com/documentation/backgroundtasks/bgtaskschedulererrorcode/bgtaskschedulererrorcodeunavailable?language=objc,此错误通常由以下三个原因之一引起:
- 用户在设置中禁用了后台刷新。
- 该应用程序是 运行 在不支持后台的模拟器上 处理中。
- 键盘扩展没有将 RequestsOpenAccess 设置为 YES Info.plist 文件,或者用户未授予打开访问权限。
- 扩展类型无法安排后台任务。
如果是BGTaskSchedulerErrorDomain错误3,我没有在下面添加
<array>
<string>com.shiny.job</string>
<string>com.shiny.jobpower</string>
<string>com.shiny.jobnet</string>
<string>com.shiny.jobpowernet</string>
</array>```