Кнопка BLE отключается через ~ 30 секунд - PullRequest
0 голосов
/ 04 июля 2018

Я реализую простое подключение к кнопке с низким энергопотреблением синего зуба. Все работает хорошо, за исключением того, что устройство (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 дескриптор **

Что мне здесь не хватает ??

Спасибо!

...