0

我有一个应用程序(“APP A”)连接到蓝牙设备,并发现所有需要的服务和特性。我有另一个应用程序(“APP B”),将尝试调用从另一个应用程序连接到蓝牙设备

NSArray *connectedPeripheralArray = [centralManager retrieveConnectedPeripheralsWithServices:@[requiredUUID]]; 

,并将会从IOS系统已连接的蓝牙设备(CBPeripheral)。考虑到我之前发现了“APP A”中的所有服务和特性,我是否需要在“APP B”中再次执行此操作,或者是否可以按照我的意愿开始使用服务/特性?

P.S.连接到“APP A”后,蓝牙设备会一直连接到iOS系统。

谢谢!

回答

1

是的,您需要执行完整的发现。我假设你的计划是将各种设备标识符硬编码到App B中?由于ID可能会随时间而改变,因此这将不可靠。

您可以依靠底层CoreBluetooth框架在适当的位置缓存信息。

+0

我正在构建一个健康设备,我希望它的功能类似于Pebble smartWatch(如果您知道它是如何工作的)。卵石通过卵石应用程序将卵石装置连接到iOS系统。然后,第三方应用程序可以引用连接到iOS系统的卵石设备。我想弄清楚他们是如何做到这一点的。重新发现所有服务是没有意义的。有什么想法吗?谢谢 – Teddy13

+0

卵石不使用蓝牙4.0(蓝牙LE) - 它是一个MFI合作伙伴 - 所以一旦设备与手机配对,您可以通过iOS的PebbleKit访问它 - https://developer.getpebble.com/2 /mobile-app-guide/ios-guide.html/ Bluetooth LE和CoreBluetooth的优势在于它不需要附件获得MFI认证。您只需使用其服务产品发现您的设备。该过程可以像这样工作“发现新的AcmeDevice - 连接?”如果用户说“是”,那么请记住该设备,并在下次发现该设备时,无需提示即可使用该设备,但需要在每个应用中执行此操作 – Paulw11

+0

如果您决定停用MFI路由,则可以访问允许您进行通信的不同API用你的设备 – Paulw11