Я реализую простое подключение к кнопке с низким энергопотреблением синего зуба. Все работает хорошо, за исключением того, что устройство (iphone) отключается от периферии через ~ 30 секунд.
Я использую синглтон для управления CBCentralManager
и держу строгую ссылку на CBPeripheral
, и после прочтения всех других вопросов / ответов StackOverflow я не смог найти ничего краткого.
Вот код:
//DeviceManager.m
-(void)peripheral:(CBPeripheral *)peripheral didDiscoverServices:(nullable NSError *)error{
NSArray *services = peripheral.services;
for(CBService *service in services){
if([service.UUID.UUIDString isEqualToString:(NSString*)UUID_SERVICE_BUTTON]){
[peripheral discoverCharacteristics:nil forService:service];
}
}
}
-(void)peripheral:(CBPeripheral *)peripheral didDiscoverIncludedServicesForService:(CBService *)service error:(NSError *)error{
}
-(void)peripheral:(CBPeripheral *)peripheral didDiscoverCharacteristicsForService:(CBService *)service error:(NSError *)error{
NSLog(@"START DATE %@",[NSDate new]);
NSArray <CBCharacteristic*> * characteristics = service.characteristics;
for (CBCharacteristic *characteristic in characteristics) {
[peripheral setNotifyValue:YES forCharacteristic:characteristic];
if([characteristic.UUID.UUIDString isEqualToString:(NSString*)UUID_SERVICE_BUTTON_CHARATERISTIC_STATE]){
}
[peripheral discoverDescriptorsForCharacteristic:characteristic];
}
self.peripheralManager = [[CBPeripheralManager alloc]initWithDelegate:self queue:nil];
}
-(void)peripheral:(CBPeripheral *)peripheral didDiscoverDescriptorsForCharacteristic:(CBCharacteristic *)characteristic error:(NSError *)error{
NSLog(@"%@",characteristic);
[peripheral setNotifyValue:YES forCharacteristic:characteristic];
}
** Имейте в виду, что на устройстве BT есть только 1 сервис, 1 характеристика и 1 дескриптор **
Что мне здесь не хватает ??
Спасибо!