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:
, это сработало.
Думаю, что делегат не был инициализирован в тот момент.