2015-04-16 67 views
4

iOS documentationCBCentralManagerOptionShowPowerAlertKey默認值爲NOiOS CBCentralManager「打開藍牙」提示和CBCentralManagerOptionShowPowerAlertKey默認值

我不specyfing任何選項在實例CBCentralManager

[[CBCentralManager alloc] initWithDelegate:self queue:dispatch_get_main_queue()]; 

,但它仍然顯示「開啓藍牙,以便允許......」的提示。

這是文檔中的錯誤,還是我做錯了什麼?

編輯:

我發現這一點:

http://chris.cm/determine-whether-bluetooth-is-enabled-on-ios-passively/

這:

iOS CoreBluetooth passively check if Bluetooth is enabled without prompting user to turn Bluetooth on

這似乎表明,你必須明確地設定CBCentralManagerOptionShowPowerAlertKeyNO,其中表明文檔中存在錯誤? 我只是在找人確認。

編輯2:

設置CBCentralManagerOptionShowPowerAlertKey0後,問題似乎得到解決。 但我仍在尋找一些解釋,因爲文檔說一件事而編程另一件事似乎是非常不合邏輯的。

+0

您是否指定了藍牙背景模式? – Paulw11

+0

不,我只是使用藍牙來確定BLE是打開還是關閉。 –

+0

您是否使用任何與藍牙協同工作的外部框架(庫)? – gaRik

回答

0

展望文檔以及在Programming Guide,創造一個經理,有這樣一段話:

當你創建一箇中央管理器,中央管理器調用 centralManagerDidUpdateState:其委託的方法目的。必須 實施此代表方法,以確保藍牙低耗能 受支持並可在中央設備上使用。有關如何實現此委託方法的更多信息,請參閱 CBCentralManagerDelegate協議參考。

不知提示的是,委託調用的一部分,如果狀態爲「已關閉的」

邏輯上有一定的道理,如果你正在啓動並試圖通過藍牙進行通訊,這是後話了用戶期待。他們可能沒有藍牙,這覆蓋了該用例,而不會強迫用戶轉到設置應用程序,然後才能使用您的應用程序。

+0

「我想知道如果提示是該代表呼叫的一部分,如果狀態是」PoweredOff「 - 事實並非如此,因爲提示發生很多次後,應用程序被暫停並且用戶正在使用其他應用程序(例如) –

+0

您正在測試哪個版本的iOS? –

+0

有幾個設備都是> 8.0 –

0

是的你是正確的,我現在在我的代碼中有這種特殊的不一致。

該文檔說,不應該它是默認值,但情況並非如此,你必須強制它,默認行爲是YES。