我有一个自定义类(比方说,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
对象,它在前台运行良好。根据 Core Bluetooth Programming Guide,我在 Info.plist 中设置了所需的条目以使用 UIBackgroundMode
这样我就可以继续获取 BLE 配件发送的数据。
但是当我按下主页按钮时,Xcode 控制台不再打印出任何应该在 iOS 从 BLE 外围设备获取数据时打印的消息。该设备在进入后台模式之前已经连接到 iOS 设备(中央)。
我错过了什么吗?似乎应用程序在 3 分钟后不再从 BLE 设备获取数据。 (是的,我确实添加了 bluetooth-central
)
最佳答案
在我将 MyBLE
对象的初始化从 -init:
移动到 -application:didFinishLaunchingWithOptions:
之后,它起作用了。
猜想不知何故委托(delegate)在那个时候没有被认为是初始化的。
关于ios - BLE 后台模式 : didUpdateValueForCharacteristic not called,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38483733/