我正在尝试使用startMonitoringForRegion在iOS中为iPhone 4编写应用程序,每次位置代理收到位置更新时都会触发本地通知。
只要手机处于唤醒状态(屏幕亮起),应用程序运行良好,即可发出通知,但当我将手机置于睡眠状态(屏幕为黑色)时,我才会收到通知直到唤醒按下主页按钮
我试图在info.plist中添加“必需的后台模式” - “应用程序注册位置更新”键,但这没有任何意义......
CLLocationManager委托设置为AppDelegate。
即使设备处于睡眠状态,我还需要做些什么才能进行位置更新注册?提前谢谢。
答案 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?