Первый способ: UNLocationNotificationTrigger уведомляет пользователя, когда пользователь вводит заданное местоположение или выйти из указанного местоположения this link обеспечивает точное выполнение.
Второй способ: monitoring significant changes может сделать это для вас, но результат не может быть 100%. вызов следующего метода от applicationDidEnterBackground
и applicationWillTerminate:
;
- (void)startSignificantChangeUpdates
{
// Create the location manager if this object does not
// already have one.
if (nil == locationManager)
locationManager = [[CLLocationManager alloc] init];
locationManager.delegate = self;
[locationManager startMonitoringSignificantLocationChanges];
}
и когда приложение входит передний план applicationWillEnterForeground:
вызова следующего метода (изменить его в соответствии с вашими требованиями, то есть точность & расстояния фильтра)
- (void)startStandardUpdates
{
// Create the location manager if this object does not
// already have one.
if (nil == locationManager)
locationManager = [[CLLocationManager alloc] init];
locationManager.delegate = self;
locationManager.desiredAccuracy = kCLLocationAccuracyKilometer;
// Set a movement threshold for new events.
locationManager.distanceFilter = 500; // meters
[locationManager startUpdatingLocation];
}
Из яблочной документации: услуги определения местоположения значащего изменения обеспечивает обновление только тогда, когда произошли значительные изменения в расположении устройства, например, 500 метров или более. Крайне важно, чтобы вы правильно использовали сервис определения местоположения с существенным изменением, потому что он пробуждает систему и ваше приложение не реже, чем каждые 15 минут, даже если никаких изменений местоположения не произошло, и он работает непрерывно, пока вы не остановите его.
Для обеспечения 100% -ной точности вы можете использовать серверный конец и отправлять тихие уведомления с сервера, что даст вашему приложению 30-секундное окно, чтобы определить местоположение пользователя и запустить локальное уведомление.
No. Но вы могли бы получить на подобный опыт с iBeacons. – dogsgod
Это называется Geo-фехтование, и это не последняя функция iOS, она существует уже давно. – satheeshwaran