2012-07-18 83 views
3

我已經看到,在iOS 5中,CoreBluetooth提供了檢查藍牙是否被禁用的功能。從我所看到的文檔來看,它顯然是針對藍牙外設使用的。但是,我試圖檢查藍牙是否打開,因爲我正在使用GameKit(GKPeerPickerController),如果它未啓用,它將無休止地搜索藍牙連接,這是一個問題。檢查藍牙是否在沒有BluetoothManager的iOS 5上被禁用

我試圖做到這一點,像這樣:

CBCentralManager * manager = [[CBCentralManager alloc] init]; 

if (manager.state == CBCentralManagerStatePoweredOn) { 

     //go ahead with GameKit 
} 

這不工作,manager.state總是等於空。我在這裏做錯了什麼?或者,有沒有更好的方法來檢查iPhone上的藍牙狀態?

編輯:我不想調用任何私人API,因爲我將提交此應用程序到應用程序商店。我編輯了我的問題標題來澄清這一點。

回答

5

好吧,我發現,通過這樣做:

NSDictionary *options = [NSDictionary dictionaryWithObjectsAndKeys:[NSNumber numberWithBool:FALSE], CBCentralManagerScanOptionAllowDuplicatesKey, nil]; 
NSMutableArray * discoveredPeripherals = [NSMutableArray new]; 
CBCentralManager * manager = [[CBCentralManager alloc] initWithDelegate:self queue:nil]; 
[manager scanForPeripheralsWithServices:discoveredPeripherals options:options]; 
[manager stopScan]; 

如果藍牙功能已關閉,系統會彈出,這將提供選擇打開藍牙警報視圖。否則,如果它找到一個外設,它將調用相應的委託方法,但如果該實現中沒有任何內容,則不需要擔心。

+1

這隻適用於iPhone 4S及以上版本,iPad3及以上版本(不適用於任何iPod Touch,iPad1,iPad2等) – Adam 2013-06-18 17:04:18

0

你可以通過link找到你的問題的答案。一探究竟。

編輯

你檢查出Game Kit Framework reference

據蘋果公司稱:

遊戲套件提供您的應用程序在兩個設備之間創建藍牙連接 的能力。

編輯

然後嘗試這個項目。 https://github.com/sergiomtzlosa/MultiContactsSelector-ios

+0

這是一個私人API否?我不認爲蘋果會在App Store中允許這樣做。 – Regan 2012-07-18 05:54:07

+0

我有,正如我在我的問題中所述,我成功地使用GameKit創建藍牙連接。然而,問題在於GameKit嘗試連接而不管藍牙是否打開,所以我需要檢查它的狀態。 – Regan 2012-07-18 06:10:25

+0

@Regan有幫助嗎? – 2012-07-18 06:32:15