后台模式下的 BLE:未调用 didUpdateValueForCharacteristic

BLE in Background Mode: didUpdateValueForCharacteristic not called

我有一个自定义 class(比方说,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 中设置了所需的条目以根据 Core Bluetooth Programming Guide 使用 UIBackgroundMode 这样我就可以继续获取 BLE 附件发送的数据。

但是当我按下主页按钮时,Xcode 控制台不再打印出任何应该在 iOS 从 BLE 外围设备获取数据时打印的消息。该设备在进入后台模式之前已经连接到 iOS 设备(中央)。

我错过了什么吗?似乎应用程序在 3 分钟后不再从 BLE 设备获取数据。 (是的,我确实添加了 bluetooth-central

在我将 MyBLE 对象的初始化从 -init: 移动到 -application:didFinishLaunchingWithOptions: 之后,它起作用了。

猜猜委托在那个时候没有被认为是初始化的。