Это наверняка ... если у вас есть только одна заданная позиция (или менее 20 позиций), вам лучше всего использовать геозонирование API CoreLocation!
Вы можете настроить регион следующим образом:
if CLLocationManager.isMonitoringAvailable(for: CLCircularRegion.self) {
// Register the region.
let region = CLCircularRegion(
center: center,
radius: maxDistance, identifier: identifier
)
region.notifyOnEntry = true
locationManager.startMonitoring(for: region)
}
(Предполагая, что вы уже запросили и проверили права доступа пользователя к местоположению)!
Ваше приложение будет запускаться в фоновом режиме всякий раз, когда происходит событие мониторинга региона, поэтому вы должны обязательно установить новый CLLocationManager
и дать ему делегат для получения обновлений в вашей application(_application:didFinishLaunchingWithOptions)
функции!
Затем можно использовать обратные вызовы делегатов для запуска локального уведомления.
Здесь есть небольшое предостережение: это не сработает, если пользователь отключил фоновое обновление приложения для вашего приложения!
К счастью, уже есть встроенная библиотека, которая позволяет вам настраивать следующие регионы: https://github.com/martijndeh/react-native-region-monitor. К сожалению, я действительно думаю, что при запуске уведомления ваше приложение JavaScript будет запущено полностью (в фоновом режиме), но это не слишком большая проблема.
На GitHub также может содержаться информация о том, как реализовать это и на Android!