iOS 6据称可以缓存已发现的服务和外围设备的特性,以便更快地重新连接到已知外围设备。但是,它似乎不适用于我的应用程序。
连接后我保存了外围设备,在重新连接时,我用保存的外围设备的UUID调用retrievePeripherals。我的didRetrievePeripherals被调用,我连接到外围设备。我的didConnectPeripheral被调用,我调用discoverServices。我期待服务从缓存中返回到我的应用程序。但是,从我的外围设备读取服务表。
由于我的应用程序正在忙于读取服务表,因此我错过了从外围设备发送的第一个测量值。
有谁知道为什么没有读取缓存?我需要在某处设置一些选项吗?
答案 0 :(得分:2)
您应该尝试加密连接。加密连接需要配对,之后,缓存才真正开启。普通连接不一定会触发缓存机制,并且没有官方声明。您还应该尝试使用iOS测试版来查看是否已更改。 ;)
您应该考虑的另一件事是优化服务发现。如果测量非常重要,那么首先要发现它的特征,一旦完成,继续进行其他测量。