2013-08-28 61 views
1

iOS 6據稱緩存了發現的服務和外圍設備的特徵,以便重新連接到已知外圍設備的速度更快。但是,它似乎不適用於我的應用程序。CoreBluetooth未緩存發現的服務和特徵

我在連接外圍設備後保存外設,並在重新連接時使用保存的外設的UUID調用retrievePeripherals。我的didRetrievePeripherals被調用並連接到外設。我的didConnectPeripheral被調用,我打電話discoverServices。我期待的服務將從緩存中返回到我的應用程序。但是,服務表是從我的外設讀取的。

因爲我的應用程序忙於讀取服務表,所以我錯過了從外設發送的第一個測量值。

有誰知道爲什麼緩存沒有被讀取?我需要在某處設置一些選項嗎?

回答

2

您應該嘗試加密連接。加密連接需要配對,之後,緩存才真正開啓。普通連接不一定會觸發緩存機制,並且沒有官方聲明。你也應該嘗試iOS測試版,看看它是否已經改變了。 ;)

您應該考慮的另一件事是優化服務發現。如果衡量是非常重要的,那麼首先要發現它的特點,一旦完成,繼續與其他人一起。

+0

你從哪裏得到這些信息?我正在調查iOS中的這種特定行爲,許多人談論加密。例如,在Android中,它會在第一次發現後自動完成「隱藏」,無論它是純文本還是加密通信。 – GoRoS

+0

我剛剛發現它,它在2012年CoreBluetooth會話PDF頁面123的WWDC中表示:http://adcdownload.apple.com//wwdc_2012/wwdc_2012_session_pdfs/session_705__advanced_core_bluetooth.pdf。奇怪的是它在下一次WWDC中沒有提到.. – GoRoS