2012-02-08 3 views
3

프로그래밍 방식으로 블루투스를 켜고 끄는 것은 애플의 아이튠즈 스토어에서 앱을 거부하게 될 iOS의 프리 버전 버전에서 "개인용 API"였다.iOS 5 : 프로그래밍 방식으로 블루투스 켜기 및 끄기

하지만 iOS 5에서는 프로그래밍 방식으로 화면 밝기를 변경하는 등 더 이상 비공개가 아닌 개인적인 사물에 대해 알고 있습니다. 이렇게하면 iOS 5가 설치된 iTunes에서 더 이상 앱이 거부되지 않으므로 블루투스 어댑터처럼 공개 된 다른 것들이 있는지 궁금합니다.

+1

[1] 질문 [이]를 살펴 보자 [1] : http://stackoverflow.com/questions/1743610/programmatically-turn-on-bluetooth-in-the-iphone- sdk –

+0

2009 년에는 존재하지 않았던 ios 5가 있습니다. – CQM

+2

죄송하지만, 방금 도왔습니다. –

답변

5

CoreBluetooth 불행하게도 그것은 단지 새로운 블루투스 LE (낮은 에너지) 장치를 작동하는 아이폰 OS 5에서 공개적으로 사용할 수 있습니다.

CoreBluetooth Documentation

참조
+2

이 PDF는 비어 있습니다. – whatchamacallit

+1

이전에는 사용되지 않았습니다. . https://developer.apple.com/library/ios/#documentation/CoreBluetooth/Reference/CoreBluetooth_Framework/_index를 방문하십시오.html – EricS

+0

그게 효과가있다. 사과가 어떻게 움직이는 지 나는 단지 좋아합니다. – whatchamacallit

1

아니, 블루투스는 여전히 사용할 수 없습니다 :(

+0

답변보다 댓글에 더 잘 어울립니다 –

2

이 공개되지 않습니다. 당신이 거부 얻을 것이다.

+1

"공개"및 "거부 됨"은 다른 두 가지입니다. 이것에 대한 API가있는 경우 public입니다. Apple은 사용 방법에 따라 앱을 거부 할 수 있습니다. – whatchamacallit

+1

@whatchamacallit : Bluetooth 사용 여부를 제어하는 ​​시스템 환경 설정에 대한 API가 없습니다. EricS의 PDF는 블루투스를 켜고 끄는 방법이 아니라 iOS 5에서 블루투스 LE를 사용하는 방법에 관한 것입니다. –

2

OS 5.1을 실행하는 iPod에서 개인 BluetoothManager API를 성공적으로 사용할 수있었습니다.

그래서 나는 여전히 작동한다고 말하고 싶습니다.

여기서는 샘플의 하단에 http://www.pocketmagic.net/?p=2827 샘플을 만들었습니다. 블루투스 켜기, 끄기뿐만 아니라 원격 블루투스 장치를 발견하고 사용자 인터페이스에 목록을 표시 할 때 더 많은 정보를 읽을 수 있습니다.

+2

방금 ​​정말 불쾌한 발견을했습니다. setPowered 및 setEnabled 호출은 주 스레드에서 실행해야합니다. viewDidLoad에 전화를 걸면 dispatch_get_main_queue로 디스패치 할 때까지 블루투스를 켜거나 끄지 않았습니다. – xaxxon

2

블루투스를 프로그래밍 방식으로 활성화해야했습니다. 내가 한 일은 GKPeerPickerController를 사용하는 것이 었습니다. 아직 켜져 있지 않다면 블루투스를 활성화 할 것을 요구합니다. 그런 다음 GKPeerPickerControllerDelegate에 대한 호출에서 피커를 닫습니다.

완벽하지 않으면 잠시 동안 "장치 검색 중"이 표시되지만,이 작업을 수행하는 다른 방법이 부족할 때도 작동합니다 (알고있는 한).

GKPeerPickerController * peerpicker = [[GKPeerPickerController alloc]init]; 
peerpicker.delegate = self; 
peerpicker.connectionTypesMask = GKPeerPickerConnectionTypeNearby; 
[peerpicker show]; 

피어 투 피어를 검색 할 준비가되면 피커에서 사용할 GKSession을 반환하는 대리자 메서드가 있습니다. 이것은 당신이 그것을 기각하는 곳입니다.

-(GKSession*)peerPickerController:(GKPeerPickerController *)picker sessionForConnectionType:(GKPeerPickerConnectionType)type 
{ 
    [picker dismiss]; 
    [picker autorelease]; 
    return nil; 
} 

귀하의 앱이 거부되지 않습니다.