iOS 后台模式下的 GPS 监控

Posted

技术标签:

【中文标题】iOS 后台模式下的 GPS 监控【英文标题】:GPS monitoring in background mode for iOS 【发布时间】:2014-08-21 01:13:58 【问题描述】:

我想在 ios 上实现一个功能,在到达特殊位置时通知用户(例如公交车站,不要错过),如果用户总是将应用程序置于前台模式,使用 GPS 位置检测就很容易了是否快到了。关键是如何在后台模式下实现。

一种可能的解决方案是在后台模式下更新 GPS,例如地图导航 APP,但您知道 GPS 是功率杀手,用户可能不喜欢它。

查看CoreLocation API,发现以下委托回调,我不确定它们在后台模式下是否正常工作。有关此主题的任何想法,请共同分享和讨论,并在此先感谢。

- (void)locationManager:(CLLocationManager *)manager
didEnterRegion:(CLRegion *)region __OSX_AVAILABLE_STARTING(__MAC_10_7,__IPHONE_4_0);    


- (void)locationManager:(CLLocationManager *)manager
didStartMonitoringForRegion:(CLRegion *)region __OSX_AVAILABLE_STARTING(__MAC_TBD,__IPHONE_5_0);

【问题讨论】:

【参考方案1】:

来自Location and Maps Programming Guide

在 iOS 中,与您的应用关联的区域始终被跟踪, 包括应用程序未运行时。如果跨越区域边界 当应用程序未运行时,该应用程序将重新启动到后台 来处理事件。同样,如果应用程序在事件发生时被挂起 发生时,它会被唤醒并给予很短的时间(大约 10 秒)来处理事件。必要时,应用可以请求更多 后台执行时间使用 beginBackgroundTaskWithExpirationHandler:UIApplication 的方法 类。

【讨论】:

以上是关于iOS 后台模式下的 GPS 监控的主要内容,如果未能解决你的问题,请参考以下文章

后台模式下的 iBeacon 访问

在后台模式下接收 gps 位置更新 ??iOS 8

iOS:从后台(信标)开始监控时,GPS 位置更新仅工作 10 秒

后台模式下的多点连接

后台模式下的 AVSpeechSynthesizer

仅使用 gps 定位模式的 Android 地理围栏监控