BLE в фоновом режиме: didUpdateValueForCharacteristic не вызывается

У меня есть пользовательский класс (скажем, MyBLE) который служил CoreBluetooth обертка (похоже на LGBluetooth, я думаю). Он управляет связью между моим аксессуаром BLE и устройством iOS:

MyBLE.h

@interface MyBLE : NSObject

@property (nonatomic, strong)   CBCentralManager *central;
@property (nonatomic, strong)   CBPeripheral     *peripheral;

+ (MyBLE *)sharedInstance;

//...

@end

в AppDelegateЯ инициализировал это как MyBLE объект, который отлично работает на переднем плане. Я настроил необходимые записи в Info.plist, чтобы использовать UIBackgroundMode в соответствии с Руководством по программированию Core Bluetooth, поэтому я могу продолжать получать данные, отправленные аксессуаром BLE

Но когда я нажал кнопку "Домой", консоль XCode больше не печатала никаких сообщений, которые должны быть напечатаны, когда iOS получила данные от периферийного устройства BLE. Устройство уже подключено к устройству iOS (центральному) до перехода в фоновый режим.

Я что-то пропустил? Похоже, что приложение больше не получает данные с устройства BLE через 3 минуты. (Да, я добавил bluetooth-central)

1 ответ

Решение

После того, как я перенес инициализацию MyBLE объект из -init: в -application:didFinishLaunchingWithOptions:, это сработало.

Думаю, что делегат не был инициализирован в тот момент.

Другие вопросы по тегам