如何在iOS上还原蓝牙连接

时间:2019-02-07 09:43:55

标签: ios xamarin xamarin.forms xamarin.ios

我有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];
...

问题:

  1. 应用程序是否在挂起状态下处理事件? (技术上是在后台)

  2. 应用还原后,我是否必须重新连接设备?

1 个答案:

答案 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}},那么我认为如果您启用了后台模式,则您无需重新连接,因为您的应用仍在后台运行。