0

我有两个应用程序通过 CoreBluetooth、iOS 和 Today Extension(外围)和 OSX(中央)进行通信。

1 - 设置过程(iOS 应用程序 x OSX 应用程序):它们连接、交换存储的数据并断开连接。

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

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

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

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

4

1 回答 1

1

我也遇到了同样的问题,起初以为可能是我的错,但后来发现真的很奇怪。

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

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

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

于 2014-09-28T13:27:22.877 回答