iPhone 4S上的核心蓝牙故障?
我一直在广泛测试iPhone4S和iPhone5的BLE功能 目前,我所做的只是从多个可移动键盘中提取广告数据,并使用iPhone 4S上的核心蓝牙故障?,iphone,objective-c,xcode,bluetooth,core-bluetooth,Iphone,Objective C,Xcode,Bluetooth,Core Bluetooth,我一直在广泛测试iPhone4S和iPhone5的BLE功能 目前,我所做的只是从多个可移动键盘中提取广告数据,并使用kCBAdvDataLocalName、ManufacturingData和serviceuid为每个设备填充UITableView 基本上,当我拉入广告数据时,我也拉入外围设备的UUID,并使用它填充tableview的datasource数组。(即,如果发现新的UUID,而它不在datasource数组中,则将其添加到数组中,并使用该数组检索相应的外围设备) 在iPhone5
kCBAdvDataLocalName
、ManufacturingData
和serviceuid
为每个设备填充UITableView
基本上,当我拉入广告数据时,我也拉入外围设备的UUID
,并使用它填充tableview
的datasource
数组。(即,如果发现新的UUID
,而它不在datasource
数组中,则将其添加到数组中,并使用该数组检索相应的外围设备)
在iPhone5上,这项功能完美无瑕。然而,当我用iPhone 4S进行测试时(我已经用多个iPhone 4S进行了测试),BLE
硬件拉入NULLUUID
,因此阻止我将任何外设信息添加到数据源
阵列中。在我的控制台日志中,手机确实会发现每个外围设备,并显示其localname
和制造数据,但每个设备都有一个空的UUID
我还用完全相同的代码在4S和5上同时运行了我的测试应用程序,它将在5上工作,而不是在4S上。所以我想知道是否有人遇到过同样的问题,是SDK中的错误还是硬件中的错误,或者是否有已知的解决方法?非常感谢您的反馈。iOS 6中的问题是,在您实际连接到设备之前,不会生成UUID。UUID是在iOS端为每个外设生成的,因此,当使用不同的iOS设备时,您通常会看到同一外设的不同UUID。我通常会检查UUID,如果它为空,我会去掉名称。但是,如果名称为空,则我不会将其填充到设备列表中。您的另一个选择是快速连接,然后断开与设备的连接。这是一次大规模的黑客攻击,但它将生成UUID,然后从那时起变为非空。据推测,这个问题将在下一版本的iOS中得到解决。我认为它不会在第一次发现时提供所有信息。。。我注意到,至少在我的iPhone4S上,有时Adv数据是零。。。因此,在将其添加到我发现的设备阵列之前,我检查它是否有名称、UUID和每个广告数据。。。如果没有,我不会添加它,但它会再次通过DidDiscoveryPeripheral,并向其添加(更新)这次的数据。我可以在iOS7中确认
外围设备。在连接之前,标识符是用唯一的id(nsuid
)填充的。