Как получать уведомления при смене региона пользователя?

#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