4

我一直在广泛测试 iPhone 4s 和 iPhone 5 的 BLE 功能。

目前,我所做的只是从多个 TI BLE 密钥卡中提取广告数据,并为每个相应的设备UITableView填充kCBAdvDataLocalName、和 。ManufacturingDataServiceUUIDs

基本上,当我拉入广告数据时,我也在拉入外围设备UUID并使用它来datasource填充tableview. (即,如果UUID找到一个新的并且它不在datasource数组中,则将其添加到数组中并使用它来检索相应的外围设备)。

使用 iPhone 5 可以完美运行。但是,当我使用 iPhone 4S 进行测试(并且我已经测试过多个)时,BLE硬件会拉入 NULL,UUIDs因此无法将任何外围设备的信息添加到datasource数组中。在我的控制台日志中,手机确实发现了每个外围设备,并显示了它localname的和制造数据,但是每个设备都有一个 null UUID

我还使用完全相同的代码同时在 4S 和 5 上运行了我的测试应用程序,它可以在 5 而不是 4S 上运行。所以我想知道是否有人遇到过同样的问题,是否是 SDK 或硬件中的错误,或者是否有已知的解决方法?任何反馈将不胜感激,谢谢。

4

1 回答 1

3

iOS 6 中的问题是在您实际连接到设备之前不会生成 UUID。UUID 是在 iOS 端为每个外围设备生成的,这就是为什么在使用不同的 iOS 设备时通常会看到同一外围设备的不同 UUID。我通常检查 UUID,然后如果它是 NULL,我会离开名称。但是,如果名称为 NULL,则我不会将其填充到设备列表中。您的另一个选择是快速连接然后断开与设备的连接。一个大的时间黑客,但它会生成 UUID 然后从那时起非空。据说这个问题将在下一个版本的 iOS 中修复。

于 2013-07-01T20:22:47.120 回答