Ios swift中CBUUID和NSUID之间的差异

Ios swift中CBUUID和NSUID之间的差异,ios,swift,bluetooth-lowenergy,Ios,Swift,Bluetooth Lowenergy,CBUUID和NSUID对象之间的区别在哪里 我已经看到在不同的情况下用这两个对象填充外围设备扫描服务。。。苹果希望有一个CBUUID对象,所以我更喜欢使用这种类型还是 我的例子是: MY_SERVICE_UUID=CBUUID(字符串:“hdl83h6sd-gl95-bn4f-37gd-jd73hd0tn8za”) func scanForPeripheralsWithServices(ServiceUUID:MY_SERVICE_UUID,nil)NSUID是一个128位的数字,用于唯一标识

CBUUID和NSUID对象之间的区别在哪里

我已经看到在不同的情况下用这两个对象填充外围设备扫描服务。。。苹果希望有一个CBUUID对象,所以我更喜欢使用这种类型还是

我的例子是:

MY_SERVICE_UUID=CBUUID(字符串:“hdl83h6sd-gl95-bn4f-37gd-jd73hd0tn8za”)

func scanForPeripheralsWithServices(ServiceUUID:MY_SERVICE_UUID,nil)

NSUID是一个128位的数字,用于唯一标识对象、类型和其他项目。它可以作为字节访问,或者通常以字符串形式使用-68753A44-4D6F-1226-9C60-0050E4C0067。该类包括用于创建随机UUID和使用专用值初始化的实例的方法

蓝牙还使用128位标识符作为特征和服务。蓝牙SIG定义了许多“众所周知”的服务和特性。这些表示为16位值,该值与蓝牙基本UUID相结合,以获得完整的128位值

CBUUID方法知道这些已知值,并且可以自动将16位值转换为其128位等效值。如果您未使用已知值(即,您创建了自己的私有服务和特性),也可以使用128位值初始化CBUUID

例如,使用
CBUUID(字符串:“180F”)
初始化CBUUID是可以的(这是电池服务),但是
nsuid(字符串:“180F”)
将失败,因为它需要所有128位


使用核心蓝牙时,您将使用CBUUID提供服务和特性。NSUID用于外围设备标识符,因为它只是一个没有定义特殊值的MAC

您的cbuuid示例无效-它必须由十六进制数字0-9 a-fI组成,对此我很抱歉!你完全正确。好吧,那么如果我使用自定义的服务结构和特性以及免费创建的UUID,我应该使用NSUID号还是?因为在本例中,我不必将一个短的16位UUID转换为128位UUID。但在这种情况下,我是否必须注意扫描方法的预期输入类型?谢谢不,您应该使用CBUUID。CBUUID初始化器将处理16位或128位的值。您会发现所有核心蓝牙功能现在都使用CBUUID。有一个CBUUID的初始化器,如果你有一个NSUID,它会接受一个NSUID。很抱歉在这方面问以下问题,但我没有足够的声誉来评论你的另一个答案。。。所以我想知道两件事:1。为什么苹果设备会定期更改UUID?这个问题是指你在这方面的回答:2。当我只想搜索一个特定UUID时,我是否可以将scanforPeripheralsWithServices中的选项从nil替换为例如peripheral.identifier?或者我必须在那里设置哪个UUID?谢谢你!换句话说,我从外围设备获取什么UUID。标识符:)这是一个NSUID,因为它只是一个MAC地址,没有已知的16位值