Можно ли запустить устройство iOS 7 в качестве периферийного устройства Bluetooth LE (iBeacon) и рекламировать его в фоновом режиме? Я смог заставить его рекламировать на переднем плане с помощью приведенного ниже кода и могу видеть его с другого устройства iOS, но как только я возвращаюсь на главный экран, реклама прекращается. Я добавил фоновый режим периферийного устройства Bluetooth в plist, но это, похоже, не помогло, хотя я получаю сообщение о том, что устройство хочет использовать Bluetooth в фоновом режиме. Я что-то делаю не так или это просто невозможно в iOS 7?
peripManager = [[CBPeripheralManager alloc] initWithDelegate:self queue:nil];
- (void)peripheralManagerDidUpdateState:(CBPeripheralManager *)peripheral
{
if (peripheral.state != CBPeripheralManagerStatePoweredOn) {
return;
}
NSString *identifier = @"MyBeacon";
//Construct the region
CLBeaconRegion *beaconRegion = [[CLBeaconRegion alloc] initWithProximityUUID:uuid identifier:identifier];
//Passing nil will use the device default power
NSDictionary *payload = [beaconRegion peripheralDataWithMeasuredPower:nil];
//Start advertising
[peripManager startAdvertising:payload];
}
Вот код, который находится на принимающей/слушающей стороне:
- (void)locationManager:(CLLocationManager *)manager didRangeBeacons:(NSArray *)beacons
inRegion:(CLBeaconRegion *)region
{
//Check if we have moved closer or farther away from the iBeacon…
if (beacons.count > 0) {
CLBeacon *beacon = [beacons objectAtIndex:0];
switch (beacon.proximity) {
case CLProximityImmediate:
[self log:[NSString stringWithFormat:@"You're Sitting on it! %li", (long)beacon.rssi]];
break;
case CLProximityNear:
[self log:[NSString stringWithFormat:@"Getting Warmer! %li", (long)beacon.rssi]];
break;
default:
[self log:[NSString stringWithFormat:@"It's around here somewhere! %li", (long)beacon.rssi]];
break;
}
}
}