首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >更快地重新连接CBPeripheral

更快地重新连接CBPeripheral
EN

Stack Overflow用户
提问于 2013-02-14 16:52:34
回答 2查看 6K关注 0票数 3

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

是否有人有存储/缓存CBService或CBCharacteristic的经验或解决方案,或者是否有人知道如何更快地重新连接?

谢谢你的帮助

EN

回答 2

Stack Overflow用户

发布于 2013-04-17 11:52:35

我尝试过在内存中缓存外围设备、服务和特征对象,手动缓存不起作用,。一旦您断开与外围设备的连接,服务和特征对象将不再有效。事实上,甚至CBPeripheral也可以在您的控制下更改- CoreBluetooth有一个内部行为,设备UDID每隔几分钟就会更改一次(如果CBPeripheral是另一个iOS设备)。

但是,如果您运行的是针对iOS 6的开发,则有一种方法可以加快速度。如果你在2012年的WWDC2012上使用watch进行高级蓝牙演讲,你会看到一张关于缓存服务和特性的幻灯片。本质上,操作系统可以为你缓存所有的,但只能为配对的设备缓存。要配对,你需要响应一个写请求,但没有足够的身份验证错误。例如,对于iOS外围设备,您可以编写如下代码:

代码语言:javascript
复制
- (void)peripheralManager:(CBPeripheralManager *)peripheralManager didReceiveWriteRequests:(NSArray *)requests {
      ...

      [peripheralManager respondToRequest:request withResult:CBATTErrorInsufficientAuthentication];

      ...
}

这将在iOS外围设备上弹出一个配对对话框,之后您将被配对。除此之外,你不需要像往常一样修改代码、调用- just、调用discoverServices等,它们的响应速度会更快(即即刻)。

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

票数 6
EN

Stack Overflow用户

发布于 2013-11-15 03:31:20

iOS 7增加了额外的缓存(iOS 7: What's New in Bluetooth LE)。我看到重新连接到外围设备、发现服务、发现特征和读取单个特征的值所需的总时间不到100ms (平均约80ms)。

我的测试配置是连接到iPad 3的iPad Air。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14870948

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档