我必须构建一个具有以下功能的应用: -
我是初学者,所以对我应如何处理此问题的任何建议都将不胜感激。最重要的是,我有以下问题: -
该应用也将在后台运行,并会定期使用GPS。这将耗尽大量电池。我怎么能避免这个? (位置的精确度很重要)
该应用会定期将这些位置更新到解析数据库,并且必须定期发出API请求,这会增加成本。我怎样才能最大限度地减少这种情况?
答案 0 :(得分:2)
根据您的描述,您想要的是“重要位置变更”监控,该监控内置于CLLocationManager
。您可以告诉位置管理员向您发送“重大”位置更改,即当用户移动了一些未记录的“重要”金额时,而不是运行连续的位置更新。它专门设计用于最大限度地减少电池消耗,因此您无需打扰禁用和重新启用它。相反,iOS会确保您使用尽可能少的电池来获取更新。
CLLocationManager
详细讨论了这种方法,但基本知识是:
创建位置管理员后,请告知其开始重要的位置更新:
locationManager.startMonitoringSignificantLocationChanges()
通过用于连续位置更新的相同locationManager(manager:didUpdateLocations:)
方法向代表提供位置更改。
iOS会唤醒您的应用以让它处理位置更新。
答案 1 :(得分:1)
您需要定期更新您的位置,而不是连续打开GPS。 Here's a tutorial covering CLLocationManager
您可能会觉得有帮助。
如果没有具体的代码,我无法给出具体的答案,但一般来说,您需要定期开启CLLocationManager
,获取您的位置,然后再将其关闭,直到下次更新为止。您还可以配置CLLocationManager
的准确度 - 您的位置越具体,电池电量就越大。