我有xamarin项目。我想将蓝牙按钮与应用配对,并保持连接处于挂起状态。我成功订阅了代表在前景状态下点击的特征事件。主要用例是在挂起状态下处理事件并将数据发送到服务器。
我阅读了文档here,但是我在实现还原CBCentralManager的过程中遇到了困难,尤其是将这些方法转换为Xamairn.iOS。
选择加入状态保存和恢复
myCentralManager =
[[CBCentralManager alloc] initWithDelegate:self queue:nil
options:@{ CBCentralManagerOptionRestoreIdentifierKey:
@"myCentralManagerIdentifier" }];
重新设置您的中央和外围设备管理员
- (BOOL)application:(UIApplication *)application
didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
NSArray *centralManagerIdentifiers =
launchOptions[UIApplicationLaunchOptionsBluetoothCentralsKey];
...
实施适当的还原委托方法
- (void)centralManager:(CBCentralManager *)central
willRestoreState:(NSDictionary *)state {
NSArray *peripherals =
state[CBCentralManagerRestoredStatePeripheralsKey];
...
问题:
应用程序是否在挂起状态下处理事件? (技术上是在后台)
应用还原后,我是否必须重新连接设备?
答案 0 :(得分:0)
我认为您可以在文档中找到答案。
1。应用程序是否在挂起状态下处理事件? (从技术上讲 背景)
您需要在Core Bluetooth background execution mode
中启用info.plist
,以确保您的应用继续在后台运行。
此外,在iOS 10.0或更高版本上链接的iOS应用必须在其Info.plist
文件中包含使用说明键,以说明需要访问的数据类型,否则它将崩溃。 InfoPlistKeyReference
您可以阅读:Core Bluetooth Background Execution Modes
2。恢复应用程序后,我是否必须重新连接设备?
如果您gets restored
在这里表示您restart your app
,我认为您需要重新连接,因为在应用终止后,它将失去连接。
如果您gets restored
的意思是enter foreground
的{{1}},那么我认为如果您启用了后台模式,则您无需重新连接,因为您的应用仍在后台运行。