У меня есть приложение с мониторингом региона, но для лучшего понимания я вызываю «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 только в течение нескольких минут после того, как пользователь нажмет кнопку «Домой», а не для использования в чрезмерном режиме.
Есть идеи?