iOS 9:低能耗 -> 开发人员必须为此做好准备吗?

Posted

技术标签:

【中文标题】iOS 9:低能耗 -> 开发人员必须为此做好准备吗?【英文标题】:iOS 9: low energy -> do developers have to prepare for that? 【发布时间】:2015-06-16 15:45:23 【问题描述】:

在 WWDC 2015 的主题演讲中提到,电池的续航时间将延长一小时,并且处于低电量状态可以将电池的续航时间延长三小时。

ios 应用程序开发人员是否必须为这项新功能做任何事情?在电池电量不足的情况下,他们的应用是否必须执行(或不执行)某些操作?

【问题讨论】:

我认为你不需要明确地担心这一点,但隐含地你可能无法连接到任何网络或蓝牙设备,以及一些视觉效果(过渡、动作等) ...) 将在该模式下被禁用 - 通常您需要像往常一样处理应用程序中的资源不足。 【参考方案1】:

看起来它与 3rd-Party 应用程序无关,更多的是与 iOS 本身有关。这是我找到的一篇文章:

http://www.redmondpie.com/how-ios-9-low-power-mode-for-battery-life-saving-works/

这是另一篇文章,似乎证实它仅适用于 iOS 本身(以及下载等后台进程,这可能会影响某些应用程序): http://www.idownloadblog.com/2015/06/08/low-power-mode-in-ios-9/

据我所知,没有需要任何开发人员交互。从 Apple 的角度来看,这将是一个坏主意,因为那时开发人员基本上可以选择是否遵守,并且会使他们的低功耗模式无用(因为许多开发人员不会选择让他们的应用程序性能更差)

附带说明,如果我的设备面朝下放在桌子上并且我收到通知,iOS 9 将不再点亮我的屏幕,我很高兴。如果您阅读过,有一些新的省电功能不涉及使用低功耗模式。

【讨论】:

它本质上终止了执行后台活动的能力......因此,如果您的应用依赖于适当的后台功能,它肯定需要开发人员交互【参考方案2】:

这可能与 iOS 7 引入的新 discretionary 网络任务和其他会缩短电池寿命的 API 有关。 查看 WWDC 2014 的以下会议:

Writing Energy Efficient Code, Part 1

Writing Energy Efficient Code, Part 2

【讨论】:

【参考方案3】:

您可以为 NSProcessInfoPowerStateDidChangeNotification 注册 NSNotification

或者使用这个 NSProcessInfo.processInfo().isLowPowerModeEnabled

https://developer.apple.com/library/prerelease/ios/documentation/Performance/Conceptual/EnergyGuide-iOS/LowPowerMode.html

【讨论】:

【参考方案4】:

9.0.2 更新: 很遗憾地说,上面的答案不正确(不再)。 在电源模式下,应用程序无法再对推送消息做出反应,因为相应的功能

- (void)application:(UIApplication*)application didReceiveRemoteNotification:(NSDictionary*)userInfo

未被调用。

我想知道消息服务如何解决这个问题? 有人有任何线索吗?

另请参阅我的明确问题 - 有关此问题的更多详细信息: IOS9 Push Battery Saver Mode - didReceiveRemoteNotification not called

【讨论】:

我很想发表评论,但还没有足够的声誉。我发现仍然添加这些信息很重要,所以我选择了这种方式。我确实已经提出了一个新问题并添加了一个链接 - 见上文。抱歉,我不明白你的意思,Flexicoder。

以上是关于iOS 9:低能耗 -> 开发人员必须为此做好准备吗?的主要内容,如果未能解决你的问题,请参考以下文章

xcode 发展史 及 做iOS 必须知道的小知识

无需注册开发人员计划即可构建 React Native IOS 应用程序

蓝牙低能耗清单

是否存在用于定义蓝牙低能耗 GATT 服务的模式?

IOS开发 arc与非Arc代码的区别

如何选择低功耗蓝牙芯片软件支持