2012-10-19 3 views
3

지난 주 동안이 문제를 저지르고있었습니다. 이미 다음 리소스를 살펴 보았습니다.Bonjour가 BT를 광고하지 않습니다.

  • StackOverflow : Bonjour over Gamekit? (3844189)
  • 에 StackOverflow : 어떻게 봉쥬르 이상의 블루투스 워크 (3350094)
  • 에 StackOverflow : 다른 플랫폼 (8070998)
  • 기술 Q & QA1753와 아이폰 OS GameKit의 "블루투스 Bonjour를 사용"- 애플 개발자
  • 샘플 응용 프로그램 WiTap
  • SRVResolver 샘플 응용 프로그램
  • DNSSDObjects 샘플 응용 프로그램

저는 Mac OS 10.7, Xcode 4.5, iOS 6가 설치된 iPhone 4, iOS 5.1.1이 적용된 iPad 1을 사용하고 있습니다.

내 문제는 다음과 같습니다. 현재 GameKit의 피어 선택기를 사용하여 iPad와 iPone touch 사이를 연결하는 응용 프로그램을 수정하고 있습니다. 연결이 끊어지면 Gamekit을 사용하여 장치를 다시 연결하는 데 문제가있어 Bluetooth 대신 Bonjour를 사용하도록이 설정을 수정하려고합니다. 나는 dns_sd.h API를 사용하여 wifi를 통해 광고하고 해결할 서비스를 얻었지만, kDNSServiceFlagsIncludeP2P를 전달하더라도 bluetooth를 통한 성공을 얻지는 못하고 있습니다.

나는 블루투스 Bonjour가 이미 기기간에 설정된 PAN을 필요로한다고 생각했지만 아이맥과 아이 패드를 짝을 지어주고 DNS-SD 서비스를 검색해도 아무 것도주지 못했다. 아이폰은 어쨌든 아이 패드와 쌍을 이루지 않을 것이다.

답변

3

지난 24 시간 동안 내 앱에서이 문제를 해결했습니다. OS X 샘플 애플리케이션 인 DNSSDObjects의 핵심 클래스를 사용했습니다. 블루투스에 대한 지원을 추가하기 위해 코드 세 줄만 변경해야했습니다. 이것은 내 IOS 애플 리케이션에서 잘 작동합니다.

DNSSDBrowser.m에서 DNSServiceBrowse에 대한 호출은 두 번째 매개 변수에 대해 kDNSServiceFlagsIncludeP2P이 전달되어야합니다.

DNSSDRegister.m에서 DNSServiceRegister을 호출해도 동일한 변경이 필요합니다.

DNSSDService.m에서 DNSServiceResolve에 대한 호출도 동일한 변경이 필요합니다. 3 매개 변수 kDNSServiceInterfaceIndexP2P 대신 kDNSServiceInterfaceIndexAny 그래서

그냥 블루투스 자신을 제한하려면

, 그리고 와이파이가, 다음의 코드 같은 세 가지 라인은 업데이트해야합니다.

+0

예! DNSSDObjects도 사용하고 있었지만 kDNSServiceFlagsIncludeP2P를 포함하도록 DNSServiceBrowse에 대한 호출을 업데이트하는 것을 잊었습니다. – alisonc

+0

결국 블루투스 Bonjour는 이미 장치간에 설정된 PAN이 필요합니까? –

0

사실, kDNSServiceInterfaceIndexP2P 플래그가 OSX에서 작동하지 않는 것처럼 보입니다.

IOS에서 코드를 실행하면 Bonjour가 로컬 WiFi 네트워크 용 및 Bluetooth 용 169.xx.xx.xx 주소 두 가지 IP 주소를 게시한다는 것을 알 수 있습니다.

OSX의 동일한 코드는 169.xx.xx.xx 주소를 절대 게시하지 않으므로 Wi-Fi에서만 발견됩니다.