iOS startMonitoringForRegion无法在睡眠模式下工作(黑屏)

时间:2012-05-01 11:53:46

标签: ios

我正在尝试使用startMonitoringForRegion在iOS中为iPhone 4编写应用程序,每次位置代理收到位置更新时都会触发本地通知。

只要手机处于唤醒状态(屏幕亮起),应用程序运行良好,即可发出通知,但当我将手机置于睡眠状态(屏幕为黑色)时,我才会收到通知直到唤醒按下主页按钮

我试图在info.plist中添加“必需的后台模式” - “应用程序注册位置更新”键,但这没有任何意义......

CLLocationManager委托设置为AppDelegate。

即使设备处于睡眠状态,我还需要做些什么才能进行位置更新注册?提前谢谢。

1 个答案:

答案 0 :(得分:0)

可能是应用程序关闭后已释放CLLocationManager实例。

对我来说,我将使用CLLocationManager属性创建一个位置管理器的单例,并将委托设置为单例。之后,我会调用方法startMonitoringSignificantLocationChanges以确保应用程序收到位置更新。即使应用程序被杀,它也能正常工作。

对于应用程序被杀的情况,我需要在app delegate didFinishLaunchingWithOptions方法中实例化位置管理器单例:

if ([launchOptions objectForKey:UIApplicationLaunchOptionsLocationKey]) {
    //instantiate the singleton here
    NSArray *regions = [[[[LocationManager sharedManager] locationManager] monitoredRegions] allObjects];
}

我在这里解释一下使用重要位置更改和标准位置服务之间的区别:location based push notification when app is not running?