如何在iOS的后台监控位置



我目前正在为客户编写一个家庭自动化应用程序,当他们到达家150米以内时,该应用程序将打开他们的车库,打开客厅和办公室灯以及其他类似的东西。 当他们离开时,它会做相反的事情。 我非常感谢 iOS 中内置了地理围栏,当应用程序处于前台时,该功能可以完美运行,但是当用户关闭应用程序并且手机仍在监视地理围栏时,应用程序在事件发生时什么都不做。 除了 locationManager:didEnterRegion: 之外,是否有其他方法可以实现对我的应用的后台通知? 这是我现在使用的代码:

- (void)locationManager:(CLLocationManager *)manager didEnterRegion:(CLRegion *)region {
    NSLog(@"Entered Region - %@", region.identifier);
    [self showRegionAlert:@"Entering Region" forRegion:region.identifier];
    [self sendCommand:true];
}
- (void)locationManager:(CLLocationManager *)manager didExitRegion:(CLRegion *)region {
    NSLog(@"Exited Region - %@", region.identifier);
    [self showRegionAlert:@"Exiting Region" forRegion:region.identifier];
    [self sendCommand:false];
}

要在应用处于后台时使用定位服务,您需要更改应用的信息 plist 文件。应该在支持文件文件夹中找到,看起来像这样,YourAppName-Info.plist

将项目添加到"信息属性列表",并在"必需的背景模式"中键入键,其类型为 Array。将项添加到该数组,并在"应用寄存器"中键入位置更新到该项的值中。

我发现这不是问题。 这一切的工作方式与应用程序处于活动状态的方式完全相同。 调用相同的方法。 我确保优化应用程序以进行后台启动,以便它更即时响应。 我想我做错了什么,或者一开始它不起作用。

目标设置/功能中打开后台模式并启用位置更新。由于应用程序在后台,您将几乎没有时间进行处理,应用程序将进入睡眠模式。使用过期处理程序使应用再激活一段时间,以便进行大型处理。

最新更新