2016-03-23 3 views
0

Ниже приведен мой код, который обнаруживает маяк, но когда в фоновом режиме он не отправляет уведомление. Можно ли проследить, что именно проблема с кодомФоновое уведомление от Beacon iOS с использованием ESTBeaconManager

@property (nonatomic) ESTBeaconManager *beaconManager; 
@property (strong, nonatomic) CLBeaconRegion *beacRegion; 
@property (strong, nonatomic) NSArray *estimoteBeacons; 
- (void)viewDidLoad { 
self.beaconManager = [ESTBeaconManager new]; 
self.beaconManager.delegate = self; 
self.beaconManager.returnAllRangedBeaconsAtOnce = YES; 


self.beacRegion = [[CLBeaconRegion alloc] initWithProximityUUID:[[NSUUID alloc] initWithUUIDString:@"xxxxxx-xxxx-xxxx-xxxx-..."] major:000 minor:0000 identifier:[NSString stringWithFormat:@"%@", @"HEY GUYS!"]]; 
    [self.beaconManager startRangingBeaconsInRegion:self.beacRegion]; 
[self.beaconManager startMonitoringForRegion:self.beacRegion]; 

} 

- (void)beaconManager:(id)manager didEnterRegion:(CLBeaconRegion *)region 
{ 
NSLog(@"didEnterRegion"); 
UILocalNotification *localNotification = [[UILocalNotification alloc] init]; 
localNotification.alertBody = @"You have entered the region you are monitoring"; 
localNotification.soundName = UILocalNotificationDefaultSoundName; 
[[UIApplication sharedApplication]presentLocalNotificationNow:localNotification];} 

    - (void)beaconManager:(id)manager didEnterRegion:(CLBeaconRegion *)region 
{ 
NSLog(@"didEnterRegion"); 
UILocalNotification *localNotification = [[UILocalNotification alloc] init]; 
localNotification.alertBody = @"You have left the region you are monitoring"; 
localNotification.soundName = UILocalNotificationDefaultSoundName; 
[[UIApplication sharedApplication]presentLocalNotificationNow:localNotification];} 

Я получаю это сообщение, когда я вижу трассировки стека устройства:

«-iPhone ESTBeacon [1366]: monitoringDidFailForRegion Недостаточный авторизации Location Services. Мониторинг приостанавливается до тех пор, пока не будет предоставлено соответствующее разрешение ».

Хотя я добавил requestWhenInUseAuthorization в инфо PLIST

+0

вы используете IBeacon или eddystore настроен? –

ответ

0

Я подозреваю, что ваше приложение не было предоставлено разрешением местоположения. Чтобы проверить, перейдите в Настройки -> и проверьте, имеет ли ваше приложение разрешение «Всегда». Если это так, это должно выглядеть как снимок экрана ниже.

Если у вас нет доступа к местоположению, проверьте свой код, который его запрашивает. В дополнение к записи в вашем PLIST, вам нужно что-то вроде этого:

if([locationManager respondsToSelector:@selector(requestAlwaysAuthorization)]) { 
    [locationManager requestAlwaysAuthorization]; 
} 

enter image description here

 Смежные вопросы

  • Нет связанных вопросов^_^