当设备电池​​电量低于 40% 时,iOS 后台获取失败

Posted

技术标签:

【中文标题】当设备电池​​电量低于 40% 时,iOS 后台获取失败【英文标题】:iOS background fetch fails when device battery is below 40% 【发布时间】:2018-04-04 17:48:28 【问题描述】:

我们最近发现,即使启用或禁用了低电量模式,当设备电池​​电量不足时,后台提取也会失败。

我们还没有弄清楚它支持的确切电池电量是多少,因为我们的一些测试设备在电池电量低于 28% 时出现故障,有些甚至在 39% 时出现故障。

我们没有重现的唯一测试用例是,在 40% 及以上时提取没有失败。

我们并不担心低功耗模式,因为它会暂停 应用中的后台获取。

如果设备连接到充电,则在低功耗模式下,获取仅在 40% 及以上时工作。

我的问题是我应该考虑最低电池电量应该是 40% 还是某个 X % 以及如何确定这个 X?

对于大型数据集,同步时间可能长达 2 小时。如果我们可以知道使后台获取工作所需的适当电池电量,那么我们可以相应地设计我们的应用程序。

【问题讨论】:

【参考方案1】:

在执行application:performFetchWithCompletionHandler: 时,您的应用是否正在执行繁重的任务?请记住,您在该方法中的代码应该非常高效且耗时少(而且您始终必须调用 completionHandler)。正如Apple's documentation 所说:

及时调用完成处理程序,并使用 准确的结果,有助于确定您的未来执行时间 应用程序接收。如果您更新应用程序的时间过长,系统可能会 以后不那么频繁地安排您的应用程序以节省电量。

如果application:performFetchWithCompletionHandler: 中的代码执行繁重的任务,SO 将在调用后台获取时降低应用的优先级。我建议你检查你的代码并寻找可以优化的代码行。

【讨论】:

以上是关于当设备电池​​电量低于 40% 时,iOS 后台获取失败的主要内容,如果未能解决你的问题,请参考以下文章

当应用程序处于后台模式时,电池电量通知不起作用

Windows-10 电池指示器 Visual Basic 脚本

用于在后台检查电池电量的 iOS 应用程序

如何在 Android 的后台监控电池电量?

访问电池供电的 iBeacon 设备(主要是 kontakt io 设备)的电池电量?

苹果电量低于20%的提示音怎么关闭