gpt4 book ai didi

ios - 当外围设备消失时如何使用 CoreBluetooth 进行检测?

转载 作者:技术小花猫 更新时间:2023-10-29 10:51:40 26 4
gpt4 key购买 nike

我想要一个我的 iOS 可以连接的 ble 设备列表,当 ble 设备出现和消失时刷新。

为了做到这一点,我创建了一个 NSMutableDictionnary* peripheralsAvailable,并且每次 - (void)centralManager:(CBCentralManager *)central didDiscoverPeripheral:(CBPeripheral *)peripheral advertisementData:(NSDictionary *)advertisementData RSSI:(NSNumber *)RSSI; 由 CBCentralManager 调用,我将外围设备添加到 peripheralsAvailable 字典(然后更新 UITableView)。这里一切正常。

但是,如果外围设备“消失”,我找不到如何更新字典。似乎我只能在检测到外围设备时在我的字典中添加它们,但是当我关闭它时我不能删除一个。

如果我遗漏了什么,你能告诉我吗?

最佳答案

操作系统将缓存设备发现。 IE。每台设备只会获得一个“发现”事件。

要在外围设备广告时持续获取发现事件,您必须使用以下选项:

CBCentralManagerScanOptionAllowDuplicatesKey

A Boolean value that specifies whether the scan should run without duplicate filtering.

The value for this key is an NSNumber object. If YES, filtering is disabled and a discovery event is generated each time the central receives an advertising packet from the peripheral. Disabling this filtering can have an adverse effect on battery life and should be used only if necessary. If NO, multiple discoveries of the same peripheral are coalesced into a single discovery event. If the key is not specified, the default value is NO.

将上述选项设置为YES,您可以跟踪所有正在广播的外围设备,当它停止广播时,您可以将其从列表中删除。

对于您已连接的设备,有 didDisconnectPeripheral委托(delegate)事件。


蓝牙设备不会通知它们即将离开,也不会通知您即将超出范围。当他们正在做广告并且您在范围内时,您会收到广告,而当您超出范围或他们停止广告时,您什么也得不到。当他们离开时,没有事件可以触发。您必须记住正在播放广告的设备,当它们停止播放广告时(您已经有一段时间没有收到广告了),您可以将其从列表中删除。

关于ios - 当外围设备消失时如何使用 CoreBluetooth 进行检测?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30758679/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com