后台模式下的 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:
之后,它起作用了。
猜猜委托在那个时候没有被认为是初始化的。
我有一个自定义 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:
之后,它起作用了。
猜猜委托在那个时候没有被认为是初始化的。