В настоящее время наше приложение использует CoreBluetooth для связи со смарт-часами. Проблема заключается в том, что если приложение (предположительно) было отключено (возможно, после ночного фонового режима), единственным событием Bluetooth, которое, по-видимому, пробуждает приложение и инициирует повторное подключение, является выключение/включение Bluetooth из iOS.
Я реализую следующие методы, чтобы убедиться, что повторные подключения происходят, и что подключения происходят, когда приложение извлекает подключенные периферийные устройства (код был урезан до необходимого):
NSArray * connectedPeripherals = [_centralManager retrieveConnectedPeripheralsWithServices:@[kMyServiceUUID]];
for ( CBPeripheral * peripheral in connectedPeripherals )
{
if ( peripheral.state == CBPeripheralStateConnected )
continue;
else
[_centralManager connectPeripheral:peripheral options:@{CBConnectPeripheralOptionNotifyOnDisconnectionKey:[NSNumber numberWithBool:TRUE]}];
}
- (void)centralManager:(CBCentralManager *)central didDisconnectPeripheral:(CBPeripheral *)peripheral error:(NSError *)error {
[_centralManager connectPeripheral:peripheral options:@{CBConnectPeripheralOptionNotifyOnDisconnectionKey:[NSNumber numberWithBool:TRUE]}];
}
Как я могу убедиться, что мое приложение может повторно подключиться к часам, если оно работало в фоновом режиме, скажем, ночью?
В том же духе, как я могу гарантировать, что приложение просыпается или может получать данные от часов, если приложение на самом деле было удалено?