У меня есть пользовательский класс (скажем, MyBLE
), который служил в качестве обертки CoreBluetooth
(как и для LGBluetooth, я думаю). Он обрабатывает связь между моей BLE принадлежности и устройства IOS:BLE в фоновом режиме: didUpdateValueForCharacteristic not called
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 Programming Guide, поэтому я могу продолжать получать данные, отправляемые аксессуаром BLE.
Но когда я нажал кнопку «домой», консоль Xcode больше не распечатывает никаких сообщений, которые должны быть напечатаны, когда iOS получил данные от периферийного устройства BLE. Устройство уже подключено к устройству iOS (центральное), прежде чем перейти в фоновый режим.
Я пропустил что-нибудь? Кажется, что приложение больше не получает данные с устройства BLE через 3 минуты. (Да, я сделал добавить bluetooth-central
)
Является ли периферийное обновление данных и отправка «уведомлять» или вы читаете опрос? Получили ли вы запрос на фоновое разрешение Bluetooth при первом запуске приложения? – Paulw11
Нет. Я не заметил «разрешения Bluetooth для фона». (Я думал, что только фоновое разрешение GPS-отслеживания имеет такую вещь.) В этом случае периферийное устройство отправляет данные в центральный (iOS). Он работал на переднем плане, но консольный журнал не был в фоновом режиме. Я не могу проверить, работает ли он правильно или нет. Или это нормально, что у него нет консольного журнала в фоновом режиме? (что было бы странно). –