Возможно ли запустить 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 around here somewhere! %li", (long)beacon.rssi]];
break;
}
}
}