如何在iOS中获取配对的BLE设备?

时间:2018-11-30 14:44:37

标签: ios objective-c bluetooth-lowenergy core-bluetooth

我将BLE与CoreBluetooth连接并配对。

现在,当我返回到应用程序屏幕时,我想确保BLE已经与iOS设备配对。

  1. 如果我将值存储为默认值并删除了应用,则此情况不适用于获取设备。

  2. 如果用户从设置->蓝牙->设备列表中删除配对的蓝牙外设,这种情况也无法识别。

    NSArray *ary = [self.bleMgr retrieveConnectedPeripheralsWithServices:@[[CBUUID UUIDWithString:@"180A"]]];
    
    NSUUID *nsUUID = [[NSUUID alloc] initWithUUIDString:identifier];
    NSArray *temp = [self.bleMgr retrievePeripheralsWithIdentifiers:@[nsUUID]];
    

两条代码行都没有给出可靠的结果。

如何在应用中获取配对的BLE设备?

1 个答案:

答案 0 :(得分:3)

首次发现外围设备时,系统会生成一个标识符(UUID,由NSUUID对象表示)以标识外围设备。

然后,您可以存储该标识符(例如,使用NSUserDefaults类的资源),并稍后使用它来尝试使用CBCentralManager类的retrievePeripheralsWithIdentifiers:方法重新连接至外围设备。

下面介绍了一种使用此方法重新连接到先前已连接的外围设备的方法。

knownPeripherals = [myCentralManager retrievePeripheralsWithIdentifiers:savedIdentifiers];
  

NSUUID类并非与CoreFoundation的免费桥接   CFUUID。使用UUID字符串在CFUUIDRef和NSUUID之间进行转换   需要。不能保证两个NSUUID对象具有可比性   指针值(如CFUUID一样);使用isEqual(_ :)比较两个NSUUID   实例。

请参阅:https://developer.apple.com/documentation/foundation/nsuuid

请参考最后两节:https://developer.apple.com/library/archive/documentation/NetworkingInternetWeb/Conceptual/CoreBluetooth_concepts/BestPracticesForInteractingWithARemotePeripheralDevice/BestPracticesForInteractingWithARemotePeripheralDevice.html#//apple_ref/doc/uid/TP40013257-CH6-SW1