2012-07-18 3 views
3

iOS 5에서 CoreBluetooth는 블루투스가 비활성화되어 있는지 확인하는 기능을 제공합니다. 필자가 본 문서에서 블루투스 주변 장치 사용을 명확히 목표로하고 있습니다. 그러나 Bluetooth를 사용하고 있지 않은 경우 블루투스 연결을 끊임없이 검색하는 GameKit (GKPeerPickerController)을 사용하고 있기 때문에 블루투스가 켜져 있는지 확인하려고합니다.블루투스가 블루투스가 비활성화되어 있는지 확인합니다.

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

if (manager.state == CBCentralManagerStatePoweredOn) { 

     //go ahead with GameKit 
} 

이 작동하지 않으며, manager.state는 항상 null로 같다 :

나는과 같이이 작업을 수행하기 위해 노력했다. 여기서 내가 뭘 잘못하고 있니? 또는 iPhone에서 블루투스의 상태를 확인할 수있는 더 나은 방법이 있습니까?

편집 :이 앱을 앱 스토어에 제출할 예정이므로 비공개 API를 호출하고 싶지 않습니다. 이 질문을 명확히하기 위해 질문 제목을 편집했습니다.

답변

5

좋아, 나는 이렇게 것을 발견했다. 그렇지 않으면 주변 장치를 찾으면 해당하는 대리자 메서드를 호출하지만 해당 구현에 아무 것도 없으면 걱정할 필요가 없습니다.

+1

이것은 아이폰 4S 이상 및 iPad3 이상에서만 작동합니다 (모든 iPod Touch, iPad1, iPad2 등에서는 작동하지 않음) – Adam

0

이 질문에 대한 답변은 link입니다. 확인 해봐. 편집

당신이 Game Kit Framework reference를 체크 아웃 있나요? 애플에 따르면

:

게임 키트 응용 프로그램을 두 장치 사이에 블루투스 연결을 만들 수있는 기능을 제공합니다.

편집은

그런 다음이 프로젝트를 시도합니다. 블루투스가 꺼져있는 경우

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]; 

, 시스템에 블루투스 설정하는 선택을 제공합니다 경고보기를 나타납니다 : https://github.com/sergiomtzlosa/MultiContactsSelector-ios

+0

개인 API는 아니요? 나는 애플이 앱 스토어에서 허용 할 것이라고 생각하지 않는다. – Regan

+0

질문에 진술 한대로 GameKit을 사용하여 Bluetooth 연결을 만들었습니다. 그러나 문제는 GameKit이 블루투스 켜기/끄기에 관계없이 연결을 시도하기 때문에 상태를 확인해야합니다. – Regan

+0

@Regan 도움이 되었습니까? –

관련 문제