我有一个带有区域监控的应用程序,但为了更好的定位,当用户进入指定的区域时,我调用“startUpdatingLocation”以使用 GPS:
- (void)locationManager:(CLLocationManager *)manager didEnterRegion:(CLRegion *)region {
[manager startUpdatingLocation];
}
-(void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray *)locations{
locationManager =manager;
CLLocation *location1 = locationManager.location;
CLLocation *location2 = [[CLLocation alloc] initWithLatitude:obj.latitude longitude:obj.longitude];
float betweenDistance=[location1 distanceFromLocation:location2];
if((betweenDistance/1000)<=0.350000){
// Fires an UIAlert
}
}
这在大多数情况下都可以正常工作,例如,如果用户在该地区之外,然后按下“主页按钮”,进入该地区后触发功能“didEnterRegion”,GPS 开始工作几分钟并显示警报,这是正确的方法。
但是,如果应用程序已打开,然后用户在该区域中输入触发功能“didEnterRegion”并且 GPS 启动,但如果用户在那一刻按下“主页按钮”,则 GPS 停止并且警报永远不会出现。
我不想在 info.plist 中激活“必需的背景模式”选项,因为我只想在用户按下主页按钮后使用 GPS 几分钟,而不是在过度模式下使用。
有任何想法吗?