2014-09-27 20 views
0

我有两个应用程序通过CoreBluetooth,iOS和Today Extension(外设)和OSX(中央)进行通话。CBCentral无法找到外设的服务,除非蓝牙重新启动

1 - 安装过程(iOS应用程序x OSX应用程序):它们连接,交换存储和断开连接的数据。

2 - 应用程序的主要功能用法(iOS今日扩展x OSX应用程序):它们连接,交换数据并断开连接。

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

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

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

+0

我得到了同样的问题,有时在服务缓存,但特别是在readRSSI。 (请参阅http://stackoverflow.com/questions/26061359/ios-readrssi-doesnt-trigger-the-reading)。如果你找到我感兴趣的解决方案 – 2014-09-30 10:25:21

+0

我已经挖了所有的互联网,但我无法找到解决方案,我在苹果的bug记者开了一个bug,只要他们回复我会让你知道 – 2014-09-30 15:05:36

回答

1

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

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

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

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

+0

请让我知道如果你找到一个解决方案 – 2014-09-28 20:26:22