BLE外设自动重连流程总结
1第一步使用retrievePeripheralsWithIdentifiers:该方法检索已知外围设备(您过去发现或连接的外围设备)的列表。如果您要查找的外围设备在列表中,请尝试连接到它。检索已知外围设备列表中描述了此重新连接选项。使用ble的UUID
检索已知外设列表
第一次发现外围设备时,系统会生成一个标识符(UUID,由NSUUID对象表示)来标识外围设备。然后,您可以存储此标识符(例如,使用NSUserDefaults类的资源),然后使用它尝试使用类的retrievePeripheralsWithIdentifiers:方法重新连接到外围设备CBCentralManager。以下描述了使用此方法重新连接到您之前连接的外围设备的一种方法。
当您的应用程序启动时,调用该retrievePeripheralsWithIdentifiers:方法,传入一个数组,其中包含您之前发现并连接到的外围设备的标识符(以及您保存的标识符),如下所示:
已知外围设备 =
[myCentralManager retrievePeripheralsWithIdentifiers:savedIdentifiers];
中央管理器尝试将您提供的标识符与先前发现的外围设备的标识符进行匹配,并将结果作为对象数组返回CBPeripheral。如果未找到匹配项,则数组为空,您应该尝试其他两个重新连接选项之一。如果数组不为空,让用户(在 UI 中)选择要尝试重新连接的外围设备。
当用户选择一个外围设备时,尝试通过调用CBCentralManager该类的connectPeripheral:options:方法来连接它。如果外围设备仍然可以连接,则中央管理器调用centralManager:didConnectPeripheral:其委托对象的方法,并且外围设备成功重新连接。
检索已连接外围设备的列表
2第二步使用该retrieveConnectedPeripheralsWithServices:方法检索当前连接到系统的外围设备列表。如果您要查找的外围设备在列表中,请将其本地连接到您的应用程序。检索已连接外围设备的列表中描述了此重新连接选项。 使用serviceUUID
重新连接到外围设备的另一种方法是检查您要查找的外围设备是否已连接到系统(例如,通过另一个应用程序)。您可以通过调用CBCentralManager该类的retrieveConnectedPeripheralsWithServices:方法来执行此操作,该方法返回一个表示当前连接到系统的外围设备的CBPeripheral对象数组。
因为当前可能有多个外围设备连接到系统,您可以传入一组CBUUID对象(这些对象代表服务 UUID)以仅检索当前连接到系统并包含由 UUID 标识的任何服务的外围设备你指定的。如果当前没有外围设备连接到系统,则阵列为空,您应该尝试其他两个重新连接选项之一。如果数组不为空,让用户选择(在 UI 中)尝试重新连接到哪个数组。
假设用户找到并选择了所需的外围设备,通过调用CBCentralManager类的connectPeripheral:options:方法将其本地连接到您的应用程序。(即使设备已经连接到系统,您仍然必须将其本地连接到您的应用程序才能开始探索和交互。)当本地连接建立时,中央管理器调用centralManager:didConnectPeripheral:其委托对象的方法,并且外围设备已成功重新连接。
3第三步scanForPeripheralsWithServices:options:使用该方法重新扫描并发现外围设备。