我是iOS开发人员的新手。我在一个月前开始构建一个BLE应用程序,它在前台和后台工作正常,BLE连接没有任何问题。 我上周恢复了手机。重新启动后,我尝试在iPhone中运行我的应用程序。它开始崩溃了。代码在这条线上打破了。
[self.manager retrievePeripherals:[NSArray arrayWithObject:(id)peripheral.UUID]];
带有SIGABRT信号的。我安装了endomondo并尝试将我的传感器与它配对。它让我启用了ble,我在对话框上点击了是,并且皮带配对了。之后,我检查了我的应用程序,它也开始正常工作。 我认为,自从创建自己的应用程序之前,我已经安装了endomondo,因此我的应用程序已经启用了一些功能。我真的不明白需要做些什么来启用我的应用程序进行ble操作,而没有任何其他应用程序为我这样做。 帮我解决这个问题。我们是否需要设置其他内容以启用ble而不仅仅是从设置中启用蓝牙?
答案 0 :(得分:0)
如果我没记错的话,某些版本的iOS 6.x会在外围设备的UUID属性周围返回棘手的结果。有时候,当它应该是一个合法的价值时,它会回来为零。我最终在我的一个应用程序中使用了这样的解决方法:
if (aPeripheral.UUID != nil)
{
[centralManager retrievePeripherals:[NSArray arrayWithObject:(id)aPeripheral.UUID]];
}
else
{
[self centralManager:centralManager didRetrievePeripherals:[NSArray arrayWithObject:aPeripheral]];
}
将外围设备直接传递给委托方法,避免了检索步骤,并且当我这样做时,应用程序似乎可靠地工作。我相信在升级到iOS 6.0的新版本之后不再需要这样了。