gpt4 book ai didi

ios - 更快地重新连接 CBPeripheral

转载 作者:可可西里 更新时间:2023-11-01 06:23:30 25 4
gpt4 key购买 nike

我正在开发一个应用程序,它可以多次连接和断开连接到不同的低功耗蓝牙外围设备。在互联网上进行了大量研究后,我没有找到一种方法来存储已经发现的服务和特征,以便我可以更快地重新连接。目前,每次重新连接后我都会发现所需的服务和特征,这会花费我 1.5 到 2 秒。

有人有存储/缓存 CBService 或 CBCharacteristic 的经验或解决方案,或者有人知道更快重新连接的方法吗?

感谢您的帮助

最佳答案

我已尝试在内存中缓存外围设备、服务和特征对象,但手动缓存不起作用。一旦与外围设备断开连接,服务和特征对象就不再有效。事实上,即使是 CBPeripheral 也可以从你下面改变出来——CoreBluetooth 有一个内部行为,设备 UDID 每隔几分钟就会改变一次(如果 CBPeripheral 是另一个 iOS 设备)。

但是,如果您正在为 iOS 6 运行开发,则有一种方法可以加快速度。如果你watch在 WWDC 2012 的 Advanced Bluetooth 演讲中,您会在末尾看到一张关于缓存服务和特性的幻灯片。本质上,操作系统可以为您缓存它们,但仅限于配对的设备。要配对,您需要以身份验证错误不足的方式响应写入请求。例如,对于 iOS 外围设备,您可以编写如下内容:

- (void)peripheralManager:(CBPeripheralManager *)peripheralManager didReceiveWriteRequests:(NSArray *)requests {
...

[peripheralManager respondToRequest:request withResult:CBATTErrorInsufficientAuthentication];

...
}

这将在 iOS 外围设备上弹出一个配对对话框,之后您将被配对。除此之外,您无需更改代码 - 只需像往常一样调用 discoverServices 等,它们会更快地响应(即立即)。

我还在 10.8.3 上测试了这个行为,但它似乎不起作用。所以,我不知道有什么方法可以在 OS X 上加快速度(除了保持与外围设备的连接)。

关于ios - 更快地重新连接 CBPeripheral,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14870948/

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