如何在OSX上恢复CoreBluetooth的CentralManager状态?或者:为什么CBCentralManagerRestoredStatePeripheralsKey不可用?

时间:2015-10-19 08:42:19

标签: xcode macos core-bluetooth

我的OSX 10.10应用程序应使用CentralManager委托方法恢复CoreBluetooth centralManager:willRestore状态。

因此我使用CBCentralManagerRestoredStatePeripheralsKey字典键来恢复蓝牙外设。但由于错误

,它无法编译
  

CBCentralManagerRestoredStatePeripheralsKey不可用

该符号仅针对iOS 7+定义为:

CB_EXTERN NSString * const CBCentralManagerRestoredStatePeripheralsKey NS_AVAILABLE(NA, 7_0);

这就是说,NS_AVAILABLE注释使该符号在OSX上不可用。

The CBCentralManagerDelegate's documentation unfortunately says nothing about how to restore the manager's state。它唯一提到的是

  

- (void)centralManager:(CBCentralManager *)central willRestoreState:(NSDictionary<NSString *, id> *)dict

     

dict:一个字典,包含有关应用程序终止时系统保留的中央管理器的信息。 有关此词典的可用键,请参阅中央管理器状态还原选项。

但是没有这样的字典描述。 It however exists for iOS.

那么,如何在OSX上成功恢复CentralManager

1 个答案:

答案 0 :(得分:0)

在macOS上,由于内存原因,应用程序不会被操作系统终止,因为它们会在iOS上终止。

当iOS恢复已终止的应用程序时,它还将恢复以前连接的外围设备,以便让iOS应用程序有机会继续与这些外围设备通信。

这就是说,macOS不需要恢复这样的外围设备连接。