2014-09-18 6 views
1

У меня есть 3 отдельных ibeacons, размещенных в 3 разных комнатах. При входе в область маяка метод didRangeBeacon выполняется каждую секунду, что приводит к бесконечному количеству уведомлений в диапазоне.Как ограничить количество уведомлений

Это код, у меня есть:

BOOL _isInsideRegion; 

    - (void)locationManager:(CLLocationManager*)manager didRangeBeacons:(NSArray*)beacons inRegion:(CLBeaconRegion*)region { 




     CLBeacon *firstBeacon = [beacons firstObject]; 


     int major = [firstBeacon.major intValue]; 
     int minor = [firstBeacon.minor intValue]; 




     if (major == 43005 && minor == 52679) { 

      if (!_isInsideRegion) { 

       UILocalNotification *notification = [[UILocalNotification alloc] init]; 
       notification.soundName = @"Default"; 
       notification.alertBody = @"Green"; 
       [[UIApplication sharedApplication] presentLocalNotificationNow:notification]; 
       self.beaconColour.text = @"Green"; 
       self.minor.text = [NSString stringWithFormat:@"%D", minor]; 
       self.major.text = [NSString stringWithFormat:@"%D", major]; 

      } 
     } 
     else if (major == 48891 && minor == 47852) { 

      if (!_isInsideRegion) { 

       UILocalNotification *notification = [[UILocalNotification alloc] init]; 
       notification.soundName = @"Default"; 
       notification.alertBody = @"blue"; 
       [[UIApplication sharedApplication] presentLocalNotificationNow:notification]; 
       self.beaconColour.text = @"Blue"; 
       self.minor.text = [NSString stringWithFormat:@"%D", minor]; 
       self.major.text = [NSString stringWithFormat:@"%D", major]; 

      } 
     } 
     else if (major == 59510 && minor == 42953) { 

      if (!_isInsideRegion) { 

       UILocalNotification *notification = [[UILocalNotification alloc] init]; 
       notification.soundName = @"Default"; 
       notification.alertBody = @"dark blue"; 
       [[UIApplication sharedApplication] presentLocalNotificationNow:notification]; 
       self.beaconColour.text = @"Dark Blue"; 
       self.minor.text = [NSString stringWithFormat:@"%D", minor]; 
       self.major.text = [NSString stringWithFormat:@"%D", major]; 

      } 
     } 

    } 

Может кто-нибудь помочь мне, так что это дает одно уведомления при входе, и что, когда я затем идти к следующему маяку я получить еще одно уведомление специфичного для данного маяка. Спасибо.

ответ

1

Используйте метод locationManager:didEnterRegion:.

Этот метод вызывается, когда пользователь вводит зону маяка, определенную вашим приложением.

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

    NSLog(@"Did Enter Region for %@", region.identifier); 
    //Show Notification 

}