fuz*_*oat 13 iphone cocoa-touch objective-c
简单的问题...我有一个应用程序以30秒的间隔记录用户位置(使用NSTimer)它完美地工作,直到应用程序变为"非活动"并且NStimer停止.因此,我正在寻找保持我的位置间隔(30秒)的选项,同时仍然能够记录相当准确的位置数据(精度在100米以内).
Option_001,Brute Force:让CLLocationManager,startUpdatingLocation一直使用UIBackgroundModes ="location"运行.不推荐,耗尽电池.根据要求规律,准确度约.10-65m.可能只是唯一现实的选择.
Option_002,SLC:我可以使用重要的位置更改,但位置更新的频率非常差(更不用说准确性).如果应用程序在具有有限数量的蜂窝塔的农村或荒野区域中运行,则尤其如此.规律未知,准确度约.500米
Option_003,混合:我可以在后台使用重要位置变化(SLC)作为"重要"移动的指示,然后根据kCLLocationAccuracyBest请求GPS位置.这可行,但SLC事件不会以接近30秒的间隔到达任何地方(特别是在行走时).规律未知,准确度约.为10-50m.
Option_004,别的什么?任何想法将不胜感激.
注意: 我认为我有这个工作,因为当您按下iPhone上的[LOCK](通过USB连接)时,将调用applicationWillResignActive,但NSTimers不会停止.如果您尝试使用未连接的iPhone(即手机正常使用),NSTimers几乎会在调用applicationWillResignActive后立即停止.
Pau*_*anu 21
首先,不要使用计时器来更新用户位置.从另一端接近它:在收到新位置时检查自上次"记录"以来的间隔,并决定是否要记录新位置.
此外,这将解决您的"非活动"状态问题.只需启用后台位置服务.Info.plist>所需的后台模式>用于位置更新的App寄存器
在后台,当收到新位置时,您的应用将进入"后台活动"状态,这将允许有足够的时间进行API调用并推送新位置.
在一个句子中,您需要设计此应用程序以适应新的背景模式.
注意:此解决方案不适用于iOS3.x.
| 归档时间: |
|
| 查看次数: |
5330 次 |
| 最近记录: |