Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
iPhone 4S上的核心蓝牙故障?_Iphone_Objective C_Xcode_Bluetooth_Core Bluetooth - Fatal编程技术网

iPhone 4S上的核心蓝牙故障?

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

我一直在广泛测试iPhone4S和iPhone5的BLE功能

目前,我所做的只是从多个可移动键盘中提取广告数据,并使用
kCBAdvDataLocalName
ManufacturingData
serviceuid
为每个设备填充
UITableView

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

在iPhone5上,这项功能完美无瑕。然而,当我用iPhone 4S进行测试时(我已经用多个iPhone 4S进行了测试),
BLE
硬件拉入NULL
UUID
,因此阻止我将任何外设信息添加到
数据源
阵列中。在我的控制台日志中,手机确实会发现每个外围设备,并显示其
localname
和制造数据,但每个设备都有一个空的
UUID


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

iOS 6中的问题是,在您实际连接到设备之前,不会生成UUID。UUID是在iOS端为每个外设生成的,因此,当使用不同的iOS设备时,您通常会看到同一外设的不同UUID。我通常会检查UUID,如果它为空,我会去掉名称。但是,如果名称为空,则我不会将其填充到设备列表中。您的另一个选择是快速连接,然后断开与设备的连接。这是一次大规模的黑客攻击,但它将生成UUID,然后从那时起变为非空。据推测,这个问题将在下一版本的iOS中得到解决。

我认为它不会在第一次发现时提供所有信息。。。我注意到,至少在我的iPhone4S上,有时Adv数据是零。。。因此,在将其添加到我发现的设备阵列之前,我检查它是否有名称、UUID和每个广告数据。。。如果没有,我不会添加它,但它会再次通过DidDiscoveryPeripheral,并向其添加(更新)这次的数据。我可以在iOS7中确认
外围设备。在连接之前,标识符是用唯一的id(
nsuid
)填充的。