当前位置:  开发笔记 > IOS > 正文

如何从具有相同服务UUID的两个设备中找到特定的BLE 4.0外设

如何解决《如何从具有相同服务UUID的两个设备中找到特定的BLE4.0外设》经验,为你挑选了1个好方法。

对于BLE 4.0,它提供API来发现具有服务UUID阵列的外围设备.

我只是想找到具体的一个.怎么做到这一点?

如果需要将标识符分配给特定设备,该怎么做?

(我认为我的问题需要一些iOS核心蓝牙的背景.)



1> Paulw11..:

" 核心蓝牙编程指南"中介绍了重新连接到已知外围设备的过程.

基本上,如果您知道要重新连接的设备的UUID(这是对象的identifier属性CBPeripheral),那么您可以使用获取对象的retrievePeripheralsWithIdentifiers:方法然后尝试连接 -CBCentralManagerCBPeripheral

NSUUID *pid=[[NSUUID alloc]initWithUUIDString:@"45D956BB-75E4-6CEB-C06C-D531B00174E4" ];
NSArray *peripherals=[self.centralManager retrievePeripheralsWithIdentifiers:@[pid]];
if ([peripherals count]>0)
{
      CBPeripheral *peripheral=[peripherals objectAtIndex:0];
      peripheral.delegate=self;
      [self.connectingPeripherals addObject:peripheral];

      NSLog(@"Found peripheral %@ with name %@",peripheral.identifier,peripheral.name);
      [self.centralManager connectPeripheral:peripheral options:nil];
 }

这可能不起作用,您可能必须扫描外围设备,因为某些外围设备(特别是iOS设备)的标识符会定期更改其UUID.

编程指南说明 -

注意:由于某些原因,可能无法连接外围设备.例如,该设备可能不在中央附近.此外,一些蓝牙低功耗设备使用随机设备地址,该地址会定期更改.因此,即使该设备附近,该设备的地址可能已经因为它是由系统中,在这种情况下CBPeripheral反对你试图连接到不符合实际的外围设备发现最后一次修改.如果因为地址已更改而无法重新连接到外围设备,则必须使用scanForPeripheralsWithServices:options:方法重新发现它.

您还必须在第一次遇到外围设备时进行扫描.

推荐阅读
小色米虫_524
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有