【问题标题】:CoreBluetooth not caching discovered services and characteristicsCoreBluetooth 不缓存发现的服务和特征
【发布时间】:2013-08-30 21:47:35
【问题描述】:

iOS 6 应该会缓存已发现的服务和外围设备的特性,以便更快地重新连接到已知外围设备。但是,它似乎不适用于我的应用程序。

我在连接到外围设备后保存它,并在重新连接时使用已保存外围设备的 UUID 调用retrievePeripherals。我的 didRetrievePeripherals 被调用,我连接到外围设备。我的 didConnectPeripheral 被调用,我调用了 discoverServices。我期待服务从缓存中返回到我的应用程序。但是,服务表是从我的外围设备中读取的。

由于我的应用正忙于读取服务表,我错过了从外围设备发送的第一个测量值。

有谁知道为什么缓存没有被读取?我需要在某处设置一些选项吗?

【问题讨论】:

    标签: ios core-bluetooth


    【解决方案1】:

    您应该尝试加密连接。加密连接需要配对,然后才真正打开缓存。普通连接不一定会触发缓存机制,对此也没有官方声明。您还应该尝试 iOS 测试版,看看那里是否发生了变化。 ;)

    您应该考虑的另一件事是优化服务发现。如果测量非常重要,那么首先发现它的特征,一旦完成,继续其他的。

    【讨论】:

    • 你从哪里得到这些信息的?我正在调查 iOS 中的这种特定行为,很多人都在谈论加密。例如,在 Android 中,无论是普通通信还是加密通信,它都会在第一次发现后自动“在后台”完成。
    • 我刚刚找到它,它在 2012 CoreBluetooth session PDF page 123 的 WWDC 中说:adcdownload.apple.com//wwdc_2012/wwdc_2012_session_pdfs/…。奇怪的是,它没有在下一个 WWDC 中提及..
    猜你喜欢
    • 2012-10-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多