除非重启蓝牙,否则CBCentral无法找到外围设备的服务

时间:2014-09-27 00:35:14

标签: ios8 core-bluetooth cbcentralmanager cbperipheral

我有两个应用通过CoreBluetooth,iOS和Today Extension(外围设备)和OSX(中央)进行通话。

1 - 设置过程(iOS app x OSX app):它们连接,交换存储和断开的数据。

2 - 应用程序的主要功能用途(iOS Today Extension x OSX应用程序):它们连接,交换数据和断开连接。

除非我在第1步和第2步之间关闭并重新打开iPhone的蓝牙,否则OSX应用程序会发现iPhone连接,但在OSX应用程序中调用peripheral.discoverServices后,会从Today Extension中找到0个服务。

如果我确实关闭和打开蓝牙,一切都按预期进行。会是什么呢?非常欢迎任何帮助。谢谢!

更新:在OSX上使用LightBlue后,我能够确认,除非我重新启动蓝牙,否则继续公布步骤1中使用的UUID服务,只有当我重新启动蓝牙时,才会显示步骤2中使用的UUID。

1 个答案:

答案 0 :(得分:1)

我遇到了同样的问题,首先想到这可能是我的错,但后来事实证明这很奇怪。

我编写了类似的程序,使用iPhone连接到BLE信标,并使用[CBPeripheral readRSSI]来获取信号强度。当BLE信标第一次连接到我的iPhone时,一切顺利。但如果它断开连接并再次重新连接,那么方法readRSSI将不再被调用。 只有在我重新启动iPhone上的蓝牙后,问题才会得到解决。

我一步一步地在调试模式下运行程序,令我惊讶的是,我发现没有任何问题。即使我多次断开连接并重新连接,仍然可以正确调用readRSSI方法。

希望这可能会有所帮助。我也在等待这个奇怪的事情的答案。