У меня возникают трудности с тем, чтобы это работало, когда приложение не работает. Я реализовал locationManager:didRangeBeacons:inRegion:
и вызывается, когда приложение работает на переднем плане или в фоновом режиме, однако, похоже, что он ничего не делает, когда я выхожу из приложения и блокирую экран. Значок служб местоположения уходит, и я никогда не знаю, что я вошел в диапазон маяков. Должна ли функция LocalNotification работать?
У меня есть обновления местоположения и используются аксессуары Bluetooth LE, выбранные в фоновых режимах (XCode 5). Я не думал, что они мне нужны.
Любая помощь очень ценится.
-(void)watchForEvents { // this is called from application:didFinishLaunchingWithOptions
id class = NSClassFromString(@"CLBeaconRegion");
if (!class) {
return;
}
CLBeaconRegion * rflBeacon = [[CLBeaconRegion alloc] initWithProximityUUID:kBeaconUUID identifier:kBeaconString];
rflBeacon.notifyOnEntry = YES;
rflBeacon.notifyOnExit = NO;
self.locationManager = [[CLLocationManager alloc] init];
self.locationManager.delegate = self;
[self.locationManager startRangingBeaconsInRegion:rflBeacon];
[self.locationManager startMonitoringForRegion:rflBeacon];
}
-(void)locationManager:(CLLocationManager *)manager didRangeBeacons:(NSArray *)beacons inRegion:(CLBeaconRegion *)region {
if (beacons.count == 0 || eventRanged) { // breakpoint set here for testing
return;
}
eventRanged = YES;
if (backgroundMode) { // this is set in the EnterBackground/Foreground delegate calls
UILocalNotification *notification = [[UILocalNotification alloc] init];
notification.alertBody = [NSString stringWithFormat:@"Welcome to the %@ event.",region.identifier];
notification.soundName = UILocalNotificationDefaultSoundName;
[[UIApplication sharedApplication] presentLocalNotificationNow:notification];
}
// normal processing here...
}