2015-10-05 44 views
0

我有一些服務具有使用Bluetooth LE進行廣告的幾個特徵。我不想開始向中心發送數據,直到訂閱了所有四個特性爲止,但我似乎無法找到一種方法來知道哪些特性已被訂閱。這顯然迫使我手動跟蹤哪些特徵已訂閱,但如果可能的話,我想避免這種情況。有沒有辦法列出特定中心訂閱的特徵?瞭解給定的中心已訂閱CoreBluetooth的哪些特徵

+1

我認爲中央會(合理地)期望它會在訂閱它時立即從每個特徵獲取數據。我不確定您嘗試實施的行爲是否符合Bluetooth Low Energy規範。 –

+0

我想這是真的。不過,我需要這種行爲。我想我會手動跟蹤訂閱的特徵。 –

回答

0

CBMutableCharacteristic有一個屬性叫做subscribedCentrals。您可以將它用於您的目的 - 每次中央訂閱特徵時,您都可以檢查它是否已被賦予其他特徵(可能在某處存儲CBMutableCharacteristic實例列表,因此您可以遍歷它們)。

正如我以前在我的評論中提到的,如果你想成爲藍牙低能耗世界的好公民,這可能不是一個好主意。當他或她沒有從他或她訂閱的特徵獲得更新通知時,與旅遊外圍設備的中央連接的開發者可能會感到困惑。一旦你完全控制了中央控制器(例如,你開發了只在你的應用中使用的外圍設備和中央控制器),這不是問題。否則,我會建議重新考慮你的方法,也許還有另一個解決方案可以幫助你和其他想要使用BLE服務的開發者。

+0

我甚至不知道我是如何錯過的!我知道這種方法不符合BLE規範或目的,但在這種特定情況下,它是有意義的,這就是我所需要的。感謝您的評論! –

相關問題