【发布时间】:2011-04-27 16:41:46
【问题描述】:
简单的问题...我有一个应用程序,它以 30 秒的间隔记录用户位置(使用 NSTimer),它可以完美运行,直到应用程序“不活动”并且 NStimer 停止。因此,我正在寻找选项来保持我的位置间隔(30 秒),同时仍然能够记录相当准确的位置数据(精度在 100m 以内)。
Option_001,蛮力:让 CLLocationManager,startUpdatingLocation 使用 UIBackgroundModes = "location" 一直运行。不推荐,耗电。可应要求提供规律性,精度约。 10-65米。可能只是唯一现实的选择。
Option_002,SLC:我可以使用重大位置更改,但位置更新的频率很差(更不用说准确性了)。如果应用程序在蜂窝塔数量有限的农村或荒野地区运行,则尤其如此。规律性未知,准确度约。 500米
Option_003,混合:我可以在后台使用显着位置变化 (SLC) 作为“显着”移动的指标,然后根据 kCLLocationAccuracyBest 请求 GPS 位置。这会起作用,但 SLC 事件不会以接近 30 秒的间隔到达(尤其是在步行时)。规律性未知,准确度约。 10-50m。
Option_004,还有别的吗?任何想法都将不胜感激。
注意: 我以为我有这个工作,因为当您在 iPhone(通过 USB 连接)上按 [LOCK] 时,会调用 applicationWillResignActive 但 NSTimers 不会停止。如果您在 iPhone 未连接的情况下尝试相同的操作(即手机将处于正常使用状态),则 NSTimers 几乎会在调用 applicationWillResignActive 后立即停止。
【问题讨论】:
-
只是好奇你有什么样的应用程序需要我每 30 秒一次的位置信息?
-
类似于 Apple 的面包屑示例项目,只是我不想让 CLLocationManager 一直运行,只需每 30 秒左右采样一次(平均步行大约每 50m速度)
标签: iphone objective-c cocoa-touch