我正在尝试在两个 iOS 设备之间建立蓝牙连接。这个想法是一个设备提供服务并且多个设备连接到它:
设备 A(服务):用户在演示文稿中滑动
设备 B(多个客户端):用户观看演示,无交互
据我了解,提供服务的人应该通过创建 CBPeripheralManager 并实现 CBPeripheralManagerDelegate -> Device A 来宣传它并分别成为外围设备
另一方面,有多个中央设备使用 CBCentralManager 扫描外围设备并实现 CBCentralManagerDelegate。建立连接后,它们使用 CBPeripheral 类和 CBPeripheralDelegate -> Device B 向外围设备发送读写请求
现在我很困惑:据我了解,设备 A 无法直接向设备 B 发送信息,甚至无法识别连接是否已建立或丢失。但是客户端(设备 B)可以读取和写入数据并获得连接和断开连接通知。
所以我的第一个想法是交换角色。现在,中央设备通过扫描宣传他们想要使用该服务的设备(?!?)来提供服务,并且多个外围设备可以连接到一个中央设备。听起来它一定是错的,对吧?麻烦来了:现在外围设备(观看演示的用户)在连接已建立或丢失时不再收到通知(aaahhhhh)。
现在问题来了:有没有一种好方法可以让 iOS 设备成为外围设备并识别连接和断开连接(应该包括按距离断开连接等)?
添加:在 WWDC 2012 Session 705 (链接到演示幻灯片)中提到了方法 central:didConnect 和 central:didDisconnect。但即使在 CBPeripheralManagerDelegate 的 iOS 7 beta 文档中也没有提到这些方法。也许这是一条死胡同,苹果现在在嘲笑我……
谢谢你的帮助!
本杰明