5

我正在开发一个用于健身(跑步)的 iOS(7.0+)应用程序,它使用用户的 GPS 位置,进行小计算并将数据传输到蓝牙低功耗(4.0)手表。这个过程需要在后台进行,即使用户锁定了他们的 iOS 设备。

我还实现了以下后台模式:

 App communicates using CoreBluetooth
 App registers for location updates

我已经成功地让一切正常工作,除了在设备锁定一段时间后(例如 2 小时),iOS 设备停止更新位置,因为我可以看到它不再发送更新蓝牙手表的 GPS 值。然后我必须解锁设备,重新打开应用程序,定位服务再次正常工作。

有谁知道如何让定位服务在后台一直运行(设备锁定),而不会在一段时间后突然停止位置更新?如果可能的话,一个有效的解决方案将是首选,它不会比使用 GPS 的正常情况消耗更多的电池电量。

4

1 回答 1

10

最重要的是:确保在开始之前设置pausesLocationUpdatesAutomatically为(请参阅文档)。 NOCLLocationManager

为了最大限度地减少电池使用量,您还应该使用延迟位置更新(有关 SO 的更多详细信息)。这允许 CPU 在 GPS 芯片为您收集位置更新时休眠并节省电池电量。它会定期将它们转储到 CPU。如果您需要每秒更新一次手表,这可能不适合您,但如果您可以每 10 或 20 或 30 秒更新一次,它将节省那么多 CPU 唤醒。

于 2014-08-22T15:10:45.397 回答