0

我对 iOS 开发人员很陌生。一个月前我开始构建一个 BLE 应用程序,它在前台和后台运行良好,BLE 连接本身没有任何问题。我上周恢复了我的手机。重新启动后,我尝试在 iPhone 上运行我的应用程序。它开始崩溃。代码在这一行被破坏了。

[self.manager retrievePeripherals:[NSArray arrayWithObject:(id)peripheral.UUID]];

带有 SIGABRT 信号。我安装了 endomondo 并尝试将我的传感器与它配对。它要求我启用 ble,我在对话框上点击是,皮带配对了。之后我检查了我的应用程序,它也开始正常工作。我的想法是,因为在制作我自己的应用程序之前,我已经安装了 endomondo,所以我的应用程序已经启用了一些东西可以正常工作。在没有任何其他应用程序为我执行此操作的情况下,我无法真正理解需要做什么才能使我的应用程序能够进行 ble 操作。帮我解决这个问题。我们是否需要设置其他东西来启用 ble 而不仅仅是从设置中启用蓝牙?

4

1 回答 1

0

如果我没记错的话,某些版本的 iOS 6.x 会在外围设备的 UUID 属性周围返回奇怪的结果。有时,当它应该是一个合法值时,它会以 nil 的形式返回。我最终在我的一个应用程序中对这些情况使用了这样的解决方法:

if (aPeripheral.UUID != nil)
{
    [centralManager retrievePeripherals:[NSArray arrayWithObject:(id)aPeripheral.UUID]];
}
else
{
    [self centralManager:centralManager didRetrievePeripherals:[NSArray arrayWithObject:aPeripheral]];
}

这将外围设备直接传递到委托方法中,避免了检索步骤,当我这样做时,应用程序似乎可以可靠地工作。我相信在我升级到更新的 iOS 6.0 版本后不再需要这个。

于 2013-06-08T15:58:39.117 回答