#ios #objective-c #geofencing #region-monitoring
#iOS #objective-c #геозона #регион-мониторинг
Вопрос:
Я работаю над приложением, в котором я должен использовать мониторинг региона.
Когда местоположение пользователя изменяется в соответствии с этим, пользователь получит уведомление о местоположении, в котором пользователь сейчас находится в новом местоположении, даже когда приложение находится в фоновом режиме.
Я пытаюсь последние несколько дней и искал в Google, но не нахожу решения или какой-либо идеи, как это сделать.
Есть ли здесь кто-нибудь, кто может мне помочь?
Заранее спасибо.
Ответ №1:
Используйте геозонирование с помощью CLLocationManager
и вызывайте startMonitoringForRegion
Создайте подобную функцию и запустите мониторинг для региона
-(void)notificationForRegion:(CLLocationDegrees) latitude withLongitude:(CLLocationDegrees) longitude andIdentifier : (NSString*) identifer {
CLLocationManager * locationManager = [[CLLocationManager alloc] init];
CLCircularRegion * regionForMonitoring = [[CLCircularRegion alloc] initWithCenter:CLLocationCoordinate2DMake(latitude, longitude) radius:50.0 identifier:identifer];
regionForMonitoring.notifyOnExit = TRUE;
[locationManager startMonitoringForRegion:regionForMonitoring];
}
Реализуйте didEnterRegion
метод делегирования CLLocationManagerDelegate
in AppDelegate
, поскольку AppDelegate
объект всегда остается в памяти, и планируйте свои локальные уведомления здесь.
-(void)locationManager:(CLLocationManager *)manager didEnterRegion:(CLRegion *)region {
UILocalNotification * localNotif = [[UILocalNotification alloc] init];
localNotif.alertBody = @"You are now in the region";
localNotif.fireDate = [NSDate dateWithTimeIntervalSinceNow:0];
localNotif.soundName = UILocalNotificationDefaultSoundName;
[[UIApplication sharedApplication] scheduleLocalNotification:localNotif];
[manager stopMonitoringForRegion:region];
}
Вызовите указанную выше notificationForRegion
функцию следующим образом
После получения вашего location
[self notificationForRegion:location.coordinate.latitude withLongitude:location.coordinate.longitude andIdentifier:@"your identifier"];
Комментарии:
1. CLLocationCoordinate2DMake(широта, долгота) Что я должен написать вместо широты и долготы, широты и долготы текущего местоположения?
2. вы просто передаете свое местоположение, вызывая эту функцию
notificationForRegion