iOS UUID已弃用corebluetooth

7
我正在修改一款通过蓝牙BLE发现设备的应用程序,以便将值绘制到图表中。一切都很顺利(在过去一周中,感谢你们中的一个人提供的帮助)。该应用程序最初是我丈夫写的,而在发现设备时,他使用了如下检查代码:
NSLog(@" Failed to Connect to Peripheral : %@   with UUID: %@   ", peripheral, peripheral.UUID);

或者
NSLog(@" Connected to Peripheral : %@   with UUID: %@   ", peripheral, peripheral.UUID);

在这些行的前面(还有一些其他的行),我收到了UUID已弃用的警告信息:在iOS 7.0中首次弃用。相当长一段时间以来,我一直试图找出它被什么替代了,但是在Google上,似乎没有其他人有同样的问题,当我去苹果文档:这里,并没有提到它已经被弃用。我不明白...能否有人帮忙?谢谢。编辑:添加一些信息。这是我在计算机控制台上得到的内容:

看起来您已经获取了错误的UUID属性。CBPeripheralUUID属性自7.0版本以来已被弃用。https://developer.apple.com/library/ios/documentation/CoreBluetooth/Reference/CBPeripheral_Class/index.html#//apple_ref/occ/instp/CBPeripheral/UUID - Ian MacDonald
Ian,你好。那么我用什么替换它?我添加了一张图片来展示控制台中的内容。 - Clararhea
很抱歉,我不能为您提供更多帮助。这就是为什么我发表评论而不是提供答案的原因。我所涉及的唯一CoreBluetooth交互涉及iBeacons,而不是通用蓝牙设备。 - Ian MacDonald
CBPeripheral文档表明它已被弃用https://developer.apple.com/library/IOs/documentation/CoreBluetooth/Reference/CBPeripheral_Class/index.html,但没有提供替代方案。此时,您只能继续使用已弃用的属性。这可能是文档错误。 - Paulw11
3个回答

17

更新

我已经仔细检查了CBPeer上的UUID属性,也已被弃用。

从Xcode文档中,我发现-

弃用声明
请使用identifier属性替代。

如果您使用peripheral.identifier.UUIDString,则不会收到弃用警告。


3
现在identifier也被标记为过时了!请参考https://developer.apple.com/library/prerelease/ios/documentation/CoreBluetooth/Reference/CBPeripheral_Class/index.html#//apple_ref/occ/instp/CBPeripheral/identifier - Nestor
这里也一样。在Xcode beta中,标识符没有弃用警告。我相信这是文档错误。 - Summer
@Nestor 我也注意到了,我也在想这是否是文档中的错误...特别是因为该属性上没有“使用 XYZ 代替”的说明。 - Evan K. Stone
1
@Nestor 这可能会澄清一些事情...Core Bluetooth邮件列表上的Nick Brook指出,“新的标识符属性位于新的CBPeer超类上”--所以它仍然存在,只是被提升到了CBPeer的类层次结构中。哎呀! - Evan K. Stone
刚刚验证了一下。如果你看 CBPeer.h,确实…… identifier 是该类的一个属性,从中 CBCentral 和 CBPeripheral 继承。这肯定是一个有趣的谜题要解决! ;) - Evan K. Stone
显示剩余7条评论

3

如果有人看到这篇文章,请注意:

以下是查找弃用API调用的一般方法:
1)标记弃用调用
2)右键单击“跳转到定义”
3)阅读那里的内容。

对于此处提出的UUID,答案将在下面两行:

@property (readonly, nonatomic) NSUUID *identifier NS_AVAILABLE(NA, 7_0);

2

您可以通过 advertisementData 中的 CBAdvertisementDataServiceUUIDsKey 访问服务 UUID。

- (void)centralManager:(CBCentralManager *)central didDiscoverPeripheral:(CBPeripheral *)peripheral advertisementData:(NSDictionary *)advertisementData RSSI:(NSNumber *)RSSI

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接