2012-10-24 61 views
9

我正在爲iPhone的CoreBluetooth管理器應用程序工作。爲了能夠重新連接到先前發現的CBPeripheral,我保存了外設的UUID(在CoreData中),然後調用CBCentralManager的retrievePeripherals :.我didRetrievePeripherals:回調被稱爲,我可以連接,等等到目前爲止好。避免在CoreBluetooth重新連接時發現服務和特徵

由於我重新連接到我已經瞭解的外設,因此我想避免發現它的服務和特性。因此,當我第一次連接時,我保存了服務和特性的UUID(再次在CoreData中,以及外設的UUID)。

但我不能使用這些UUID讀取或寫入特徵,因爲CBPeripheral的readValueForCharacteristic:或writeValueForCharacteristic:將CBCharacteristic作爲參數,並且沒有構造CBCharacteristic實例的API。

有沒有辦法避免在重新連接之前已知的外設時發現服務和特性?

+0

你好,當你在CoreData中保存已知設備的UUID時,你能否爲每個包含它們實現的服務和特徵的設備保存一個數據結構? –

+1

設備的服務和特性由我保存的UUID標識。但是我不能在CoreData中保存CBService和CBCharacteristic的實例,因爲它們不是從NSManagedObject派生的 - 至少,我不知道我該怎麼做。或者我誤解了你的問題? – mezulu

+0

好吧,我知道理解你的問題。我認爲你需要與discoverCharacteristics:forService:使用UUIDs ... –

回答

3

Mezulu,你想使用加密/配對鏈接 - 然後iOS會爲你做緩存。看到我的回答here

+0

感謝您的回覆。我不知道iOS 6引入了緩存服務和特性。這是我正在尋找的。 – mezulu

相關問題