Estimote iBeacons Monitoring无法在iOS 9.0.2上运行

时间:2015-11-04 07:40:19

标签: ios objective-c ibeacon estimote beacon

我正在使用estimote信标及其SDK进行信标监控和测距。 Ranging在iOS 8.4和iOS 9.0.2上运行良好。虽然监控只适用于iOS 8.4,但在进入和离开区域时我没有在iOS 9.0.2上收到任何通知。

以下是我在app delegate中使用的代码

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    // Override point for customization after application launch.

    ...


    self.beaconRegion = [[CLBeaconRegion alloc]
                         initWithProximityUUID:[[NSUUID alloc]
                                                initWithUUIDString:@"myUUID"]
                         major:12345 minor:12345 identifier:@"mint"];
    self.beaconRegion1 = [[CLBeaconRegion alloc]
                         initWithProximityUUID:[[NSUUID alloc]
                                                initWithUUIDString:@"myUUID"]
                         major:12334 minor:12345 identifier:@"ice"];
    self.beaconRegion2 = [[CLBeaconRegion alloc]
                         initWithProximityUUID:[[NSUUID alloc]
                                                initWithUUIDString:@"myUUID"]
                         major:1234 minor:1234 identifier:@"blueberry"];

    self.beaconManager = [ESTBeaconManager new];
    self.beaconManager.delegate = self;
    self.locManager.allowsBackgroundLocationUpdates = YES;
    self.locManager.pausesLocationUpdatesAutomatically = NO;
    [self.locManager requestAlwaysAuthorization];

    [self.locManager startMonitoringForRegion:self.beaconRegion];


    self.beaconRegion.notifyOnEntry = YES;
    self.beaconRegion1.notifyOnEntry = YES;
    self.beaconRegion2.notifyOnEntry = YES;

    self.beaconRegion.notifyOnExit = YES;
    self.beaconRegion1.notifyOnExit = YES;
    self.beaconRegion2.notifyOnExit = YES;
    [self.beaconManager requestAlwaysAuthorization];

    [self.beaconManager startMonitoringForRegion:self.beaconRegion];
    [self.beaconManager startMonitoringForRegion:self.beaconRegion1];
    [self.beaconManager startMonitoringForRegion:self.beaconRegion2];

    [UIApplication sharedApplication].statusBarStyle = UIStatusBarStyleLightContent;
    if ([UIApplication respondsToSelector:@selector(registerUserNotificationSettings:)]) {
        UIUserNotificationType userNotificationTypes = (UIUserNotificationTypeAlert |
                                                        UIUserNotificationTypeBadge |
                                                        UIUserNotificationTypeSound);
        UIUserNotificationSettings *settings = [UIUserNotificationSettings settingsForTypes:userNotificationTypes
                                                                                 categories:nil];
        [application registerUserNotificationSettings:settings];
        [application registerForRemoteNotifications];
    }
    return YES;
}

- (void)beaconManager:(CLLocationManager *)manager didEnterRegion:(CLBeaconRegion *)region
{
    // On enter 
    UILocalNotification *notification = [UILocalNotification new];
    if ([region.identifier isEqualToString:self.beaconRegion.identifier]) {
        NSLog(@"MintEnter");
        notification.alertBody = @"You Have Entered Region 1";
        notification.soundName = UILocalNotificationDefaultSoundName;
        notification.category = @"MintEnter";
        [[UIApplication sharedApplication] presentLocalNotificationNow:notification];
    }
    else if ([region.identifier isEqualToString:self.beaconRegion1.identifier]){
        NSLog(@"IceEnter");
        notification.alertBody =   @"You Have Entered Region 2";
        notification.soundName = UILocalNotificationDefaultSoundName;
        notification.category = @"IceEnter";
        [[UIApplication sharedApplication] presentLocalNotificationNow:notification];
    }
    else if ( [region.identifier isEqualToString:self.beaconRegion2.identifier]){
        NSLog(@"BlueBerryEnter");
        notification.alertBody = @"You Have Entered Region 3";
        notification.soundName = UILocalNotificationDefaultSoundName;
        notification.category = @"BlueBerryEnter";
        [[UIApplication sharedApplication] presentLocalNotificationNow:notification];
    }



}

请在这方面帮助我。

1 个答案:

答案 0 :(得分:0)

我发现解决方案问题是iOS版本9.0.2,当我将其更新为iOS 9.1通知开始出现在通知区域。