dar*_*der 11 bluetooth ios core-bluetooth cbcentralmanager
我想有一个我的iOS可以连接的ble设备列表,当ble设备出现和消失时刷新.
为了做到这一点,我创建了一个NSMutableDictionnary* peripheralsAvailable
,每次- (void)centralManager:(CBCentralManager *)central didDiscoverPeripheral:(CBPeripheral *)peripheral advertisementData:(NSDictionary *)advertisementData RSSI:(NSNumber *)RSSI;
都由CBCentralManager调用,我将外设添加到peripheralsAvailable dictionnary(然后更新UITableView).一切都好.
但是,如果外围设备"消失",我无法找到如何更新字典.似乎我只能在检测到它时在我的词典中添加外围设备,但是当我关闭它时我无法删除它.
你能告诉我我是否遗失了什么?
操作系统将缓存设备发现。也就是说,每个设备只会收到一个“发现”事件。
要在外围设备发布广告时连续获取发现事件,必须使用以下选项:
CBCentralManagerScanOptionAllowDuplicatesKey
一个布尔值,指定是否应在没有重复过滤的情况下运行扫描。
该键的值是一个NSNumber对象。如果为“是”,则过滤将被禁用,并且每当中心服务器从外围设备接收到广告数据包时,就会生成发现事件。禁用此过滤可能会对电池寿命产生不利影响,应仅在必要时使用。如果为“否”,则将同一外围设备的多个发现合并为一个发现事件。如果未指定密钥,则默认值为NO。
将以上选项设置为YES
,您可以跟踪所有正在宣传的外围设备,并且在停止宣传时,可以将其从列表中删除。
对于您已连接的设备,存在didDisconnectPeripheral
委托事件。
蓝牙设备不会宣传它们即将消失,也不会宣传您即将超出范围。当他们在广告中并且您在范围内时,您会收到一条广告;当您超出范围或他们停止广告时,您将一无所有。他们走了没有事件触发。您必须记住正在做广告的设备,并且当它们停止做广告时(您有一段时间没有收到广告了),您可以将其从列表中删除。
归档时间: |
|
查看次数: |
4530 次 |
最近记录: |