Ошибка мониторинга региона на iOS 7 - несколько уведомлений одновременно

Я занимаюсь мониторингом региона на iOS около 2 месяцев. Недавно мы обнаружили сбой, при котором все области в пределах определенного радиуса (около 4,7 км или 4700 метров) сработали одновременно. Текущее местоположение устройства даже не близко ни к одному из регионов. Я не уверен, что могло вызвать это событие. Я искал в StackOverFlow, на форумах Apple Developer и т. Д., Я не нашел подобной проблемы с тем, с чем сталкиваюсь.

В приложении, которое я разрабатываю, мы отслеживаем 8 регионов в городе (Куала-Лумпур). В одном случае мой коллега узнал, что на его телефоне одновременно сработало уведомление 4 регионов. Ниже приведена карта, показывающая его местоположение, все контролируемые регионы, потенциальный радиус, который вызвал 4 уведомления региона.

Зеленый маркер - это местоположение устройства при получении уведомления.Синий круг - это потенциальный радиус устройства (около 4700 метров), который охватывает 4 области, которые отправляют уведомление на устройство.Красный круг - это радиус для каждого региона.На карте есть еще 2 региона, которые никогда не отправляют уведомления (никогда не закрываются синим кружком)

Снимок экрана с запущенными уведомлениями:

Вот мой код для менеджера местоположения: -

CLLocationManager *locationManager = [LocationTracker sharedLocationManager];
locationManager.delegate = self;
locationManager.desiredAccuracy = kCLLocationAccuracyBestForNavigation;
locationManager.distanceFilter = kCLDistanceFilterNone;

Вот мой код для didEnterRegion: -

-(void)locationManager:(CLLocationManager *)manager 
        didEnterRegion:(CLRegion *)region{

NSString* message = [NSString stringWithFormat:@"Message"];        
UIApplicationState state = [[UIApplication sharedApplication] applicationState];

if (state == UIApplicationStateBackground || state == UIApplicationStateInactive)
{
   UILocalNotification *notification = [[UILocalNotification alloc] init];
   notification.fireDate = [NSDate date];
   NSTimeZone* timezone = [NSTimeZone defaultTimeZone];
   notification.timeZone = timezone;
   notification.alertBody = message;
   notification.alertAction = @"Show";
   notification.soundName = UILocalNotificationDefaultSoundName;
   [[UIApplication sharedApplication] scheduleLocalNotification:notification];
 }

}

Замечания: Эта проблема возникает не каждый раз, а только время от времени. 4700 метров - это радиус, который я получил после анализа местоположения 4-х запущенных областей. Я не уверен, что это сбой в моем коде, на iOS или есть проблема с местной телефонной компанией в моей стране. В последней версии приложения я настраиваю distanceFiter на 10, и мы тестируем его прямо сейчас, чтобы посмотреть, решит ли это проблему.

//locationManager.distanceFilter = kCLDistanceFilterNone;
locationManager.distanceFilter = 10;

МетодdidEnterRegion никогда не возвращать местоположение пользователя, я не могу отфильтровать потенциально плохое местоположение с большим радиусом, как в примере, который я показываю выше. Что я могу сделать, чтобы решить этот глюк?

Любой разработчик, который сталкивается с подобной проблемой, пожалуйста, поделитесь своим опытом и решением этой проблемы (если есть). Благодарю.

Ответы на вопрос(3)

Ваш ответ на вопрос