Я пытаюсь настроить приложение, чтобы устройство как сканировало периферийные устройства, так и рекламировало их как периферию. Цель состоит в том, чтобы два устройства были разбужены в фоновом режиме, когда они стали рядом друг с другом через обнаружение Bluetooth. Из документации Apple кажется, что вы должны иметь возможность запускать BLE в фоновом режиме (с включенными режимами bluetooth-central и bluetooth-периферийного фона), и мое приложение работает, когда одно устройство находится на переднем плане. Во-первых, я рекламирую данные следующим образом:
NSDictionary *advertisingData = @{CBAdvertisementDataLocalNameKey:@"my-peripheral",
CBAdvertisementDataServiceUUIDsKey:@[[CBUUID UUIDWithString:identifier]]};
// Start advertising over BLE
[peripheralManager startAdvertising:advertisingData];
Затем я устанавливаю устройство для сканирования данных:
NSArray *services = @[[CBUUID UUIDWithString:identifier]];
[centralManager scanForPeripheralsWithServices:services options:nil];
Однако, когда оба идут в фоновое (устройство должно быть заблокировано), Bluetooth не может обнаружить и
- (void)centralManager:(CBCentralManager *)central didDiscoverPeripheral:(CBPeripheral *)peripheral advertisementData:(NSDictionary *)advertisementData RSSI:(NSNumber *)RSSI
никогда не вызывается на любом устройстве. Как я могу это исправить? Благодаря