CBPeripheralManager 连接回调

2024-05-10

我正在尝试在两个 iOS 设备之间建立蓝牙连接。这个想法是,一个设备提供一项服务,多个设备连接到该服务:

设备 A(服务):用户滑动浏览演示文稿

设备 B(多个客户端):用户观看演示,无交互

根据我的理解,提供服务的人应该通过创建 CBPeripheralManager 并实现 CBPeripheralManager Delegate -> Device A 来宣传它并分别成为外围设备

另一方面,有多个中央设备使用 CBCentralManager 扫描外围设备并实现 CBCentralManagerDelegate。建立连接后,它们使用 CBPeripheral 类和 CBPeripheralDelegate -> 设备 B 向外设发送读写请求

现在我很困惑:根据我的理解,设备 A 无法直接向设备 B 发送信息,甚至无法识别连接是否已建立或丢失。但客户端(设备 B)可以读取和写入数据并获取连接和断开连接通知。

所以我的第一个想法就是交换角色。现在,中央设备通过扫描广告其想要使用该服务的设备来提供服务(?!?),并且多个外围设备可以连接到一台中央设备。听起来这肯定是错的,对吧?麻烦来了:现在,如果连接建立或丢失,外围设备(观看演示的用户)将不再收到通知(aaahhhhh)。

现在的问题是:是否有一种好方法可以使 iOS 设备成为外围设备并识别连接和断开连接(其中应该包括按距离等断开连接)?

添加:在 WWDC 2012 第 705 场会议中(演示幻灯片链接) http://adcdownload.apple.com//wwdc_2012/wwdc_2012_session_pdfs/session_705__advanced_core_bluetooth.pdf提到了central:didConnect 和central:didDisconnect 方法。但即使在 CBPeripheralManagerDelegate 的 iOS 7 beta 文档中也没有提到这些方法。也许这是一条死胡同,苹果现在正在嘲笑我......

谢谢你的帮助!

Benjamin


您应该将设备 A(演示者)设为外围设备,宣传服务,将设备 B(观看者)设为中央设备,订阅外围设备的服务。

当中央设备连接到您的外设时,您可以使用 CBPeripheralManagerDelegate 来获取通知。以下是 CBPeripheralManager 委托方法的文档:CBPeripheralManagerDelegate 协议参考 http://developer.apple.com/library/ios/documentation/CoreBluetooth/Reference/CBPeripheralManagerDelegate_Protocol/Reference/CBPeripheralManagerDelegate.html

这是您需要实现的方法,用于识别中央设备(设备 B,查看器)何时连接到外围设备(设备 A,演示器):

- (void)peripheralManager:(CBPeripheralManager *)peripheral central:(CBCentral *)central didSubscribeToCharacteristic:(CBCharacteristic *)characteristic

这是您需要识别中央设备(设备 B,查看器)何时与外围设备(设备 A,演示器)断开连接的方法:

- (void)peripheralManager:(CBPeripheralManager *)peripheral central:(CBCentral *)central didUnsubscribeFromCharacteristic:(CBCharacteristic *)characteristic

当您需要通知订阅的中心(设备 B、观看者)幻灯片已更改时,请使用此方法(newValue 将是演示文稿中更新位置的某种指示器,例如幻灯片编号):

[self.peripheralManager updateValue:newValue forCharacteristic:yourCharacteristic onSubscribedCentrals:nil];

如果您想查看与充当中央设备和外围设备的设备共享蓝牙 LE 的简单演示,您可以查看此项目:简单共享 http://github.com/lauraskelton/simple-share/

希望有帮助!如果我可以澄清一些事情,请告诉我。

Laura

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

CBPeripheralManager 连接回调 的相关文章

随机推荐