2014-12-31 2 views
0

Я хотел бы знать, можно ли реализовать следующее:Уведомление о местоположении на основе новейшей функции iOS

Я хочу, чтобы мой IOS приложение, чтобы дать пользователям уведомление, когда достигнет определенного места, установленное в приложении (даже если приложение убивается)

+0

No. Но вы могли бы получить на подобный опыт с iBeacons. – dogsgod

+0

Это называется Geo-фехтование, и это не последняя функция iOS, она существует уже давно. – satheeshwaran

ответ

1

Вы можете добиться этого с новой структурой уведомления пользователя, введенной в прошивке 10.

Там есть UNLocationNotificationTrigger, которые позволяют вам указать CLRegion. Уведомление будет опубликовано после того, как устройство пользователя войдет или покинет CLRegion. Используйте объект CLRegion, чтобы указать, следует ли отправлять уведомления о входе, выходе или обоим.

См: основы

UserNotifications:

https://developer.apple.com/reference/usernotifications

UNLocationNotificationTrigger:

https://developer.apple.com/reference/usernotifications/unlocationnotificationtrigger

1

Когда приложение будет убит, вы не можете, но вы можете все еще делайте это в фоновом режиме.

+0

Является ли это новой функцией iOS 8? –

+0

iBeacons? Нет. «IBeacon - это недорогие передатчики, которые могут уведомлять близлежащие устройства iOS 7 (и выше) о своем присутствии» –

+0

Хорошо ...Я говорю о новой функции/функциональности iOS, которая позволяет пользователям получать уведомления, когда arraive в месте –

1

Первый способ: 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-секундное окно, чтобы определить местоположение пользователя и запустить локальное уведомление.

Смежные вопросы