앱의 근접 연결 테스트 및 문제 해결(HTML)

[ 이 문서는 Windows 런타임 앱을 작성하는 Windows에서 8.x 및 Windows Phone 8.x 개발자를 대상으로 합니다. Windows 10용으로 개발하는 경우에는 최신 설명서를 참조하세요.]

이 항목에서는 앱을 스토어에 제출하기 전에 앱에서 근접 연결을 테스트하고 문제를 해결할 수 있도록 앱 개발자를 위한 지침을 제공합니다.

시작하기 전에

근접 연결은 서로 다른 두 장치에서 실행되는 두 개의 앱 인스턴스 간에 공유 앱 환경을 만드는 유용한 방법입니다. 근접 연결 사용이 가능한 앱에서는 앱 사용자가 두 장치를 함께 탭하여 연결을 시작하거나, 찾아보기를 통해 무선 범위 내에서 앱을 실행하는 다른 장치를 찾을 수 있습니다. 다른 PC의 피어 앱 브라우징은 WiFi-Direct를 통해 수행됩니다. Windows Phone에서는 피어 앱 검색이 Bluetooth를 통해 수행되며, 다른 휴대폰에서 실행되는 피어 앱을 찾습니다.

탭 제스처에 응답하는 접근 권한 값을 테스트하려면 각 장치에 NFC(근거리 통신) 라디오 등의 근접 연결 장치가 설치되어 있어야 합니다. PC에서 무선 검색을 사용하는 접근 권한 값을 테스트하려면 각 PC가 Wi-Fi Direct를 지원해야 합니다.

참고  Windows Phone에서 검색 기능을 테스트하려면 각 휴대폰이 Bluetooth를 지원해야 합니다.

테스트를 위한 설정:

NFC(근거리 통신) 라디오 등의 근접 연결 탭을 지원하는 하드웨어가 없는 경우 WDK(Windows 드라이버 키트) 샘플에 포함된 근접 연결 드라이버 샘플을 사용할 수 있습니다. 샘플 드라이버를 사용하여 네트워크 연결을 통해 두 장치 간에 탭 제스처를 시뮬레이트할 수 있습니다. WDK를 다운로드하는 방법에 대한 자세한 내용은 WDK(Windows 드라이버 키트)를 참조하세요. WDK와 샘플을 설치한 경우 WDK 샘플을 설치한 위치에 있는 src\nfp 디렉터리에서 근접 연결 드라이버 샘플을 찾을 수 있습니다. 시뮬레이터를 빌드 및 실행하는 방법에 대해서는 src\nfp\net 디렉터리에 있는 NetNfpProvider.html 파일을 참조하세요. 시뮬레이터는 근접 연결 앱이 포그라운드에서 실행 중인 동안에는 백그라운드에서 실행됩니다. 탭 시뮬레이션을 수행하려면 앱이 포그라운드에 있어야 합니다.

PeerFinder 클래스를 사용하여 앱 연결

PeerFinder 클래스를 사용하여 서로 다른 두 장치에서 실행 중인 동일한 앱, 즉 피어 앱 간의 소켓 연결을 만들 수 있습니다. PeerFinder 클래스를 사용하여 탭 제스처로 피어 앱을 연결하거나 Wi-Fi Direct를 사용하여 무선 범위 이내의 피어를 검색할 수 있습니다. 피어 앱을 연결하는 두 가지 방법에서는 모두 피어 앱 사이의 열린 소켓을 만듭니다. 따라서 앱에서 트리거(탭) 및 찾아보기(Wi-Fi Direct) 연결 접근 권한 값을 모두 지원하는 것이 좋습니다.

피어 앱 연결에 대한 예제를 보려면 빠른 시작: 탭 또는 브라우징을 사용한 응용 프로그램 연결 또는 샘플 갤러리의 근접 연결 샘플(영문)을 참조하세요. 근접 연결을 사용하는 앱을 만드는 방법에 대한 자세한 내용은 근접 연결을 사용한 개발에 대한 지침을 참조하세요.

Hh967765.wedge(ko-kr,WIN.10).gif피어 앱 연결 테스트

  1. 두 장치에 앱을 설치하고 두 장치에서 모두 앱을 시작합니다.
  2. 두 장치에서 모두 피어 연결을 알립니다. 이 작업은 Start 메서드를 호출하여 수행합니다.
  3. 트리거된 연결을 테스트하려면 장치를 함께 탭합니다.
  4. 앱의 UI에 탭 제스처의 상태가 반영되는지 확인합니다. 즉, 피어를 찾은 경우, 장치를 연결 중인 경우 등이 있습니다. 자세한 내용은 TriggeredConnectionStateChanged 이벤트를 참조하세요.
  5. 연결이 성공한 경우 네트워크 접근 권한 값이 두 장치에 모두 적용되고 있다는 사실이 앱의 UI에 반영되는지 확인합니다.
  6. 연결이 실패한 경우 네트워크 연결이 실패했다는 알림이 앱의 UI에 표시되는지 확인합니다.
  7. 무선 연결을 테스트하려면 두 장치 중 하나에서 사용 가능한 피어 연결을 찾습니다. 이 작업은 FindAllPeersAsync 메서드를 호출하여 수행합니다. 브라우징은 PC 간 또는 휴대폰 간에만 지원되고 휴대폰과 PC 간에는 지원되지 않습니다. 브라우징이 수행되는 메커니즘은 PC에서 실행되는 앱과 휴대폰에서 실행되는 앱에서 서로 다릅니다. Windows Phone에서는 Bluetooth를 통한 브라우징만 지원하고 PC는 WiFi-Direct를 통한 브라우징만 지원합니다.
  8. 연결이 성공한 경우 네트워크 접근 권한 값이 두 장치에 모두 적용되고 있다는 사실이 앱의 UI에 반영되는지 확인합니다.
  9. 연결이 실패한 경우 네트워크 연결이 실패했다는 알림이 앱의 UI에 표시되는지 확인합니다.
  10. 앱에서 세 개 이상의 피어에 대한 연결을 지원하는 경우 여러 장치를 사용하도록 테스트를 확장합니다.

트리거(탭)된 연결을 지원하는 앱이 두 장치에 설치되어 있는 경우 탭 제스처를 사용하여 한 장치에서 연결을 요청하면 두 번째 장치의 사용자에게 앱을 시작하거나 설치하라는 메시지가 표시됩니다. 요청하는 장치에서 앱이 포그라운드로 실행되고 있어야 합니다. FindAllPeersAsync 메서드를 사용하여 연결을 검색하는 경우에는 이 접근 권한 값이 지원되지 않습니다.

Hh967765.wedge(ko-kr,WIN.10).gif탭 제스처로 시작되는 앱 테스트

  1. 두 장치에 앱을 설치합니다. 첫 번째 장치에서만 앱을 시작합니다.
  2. 앱을 실행 중인 장치에서 피어 연결을 알립니다. 이 작업은 Start 메서드를 호출하여 수행합니다.
  3. 두 장치를 함께 탭합니다.
  4. 두 번째 장치에서 앱을 시작하라는 알림 메시지가 표시되는지 확인합니다. 알림을 수락합니다.
  5. 두 번째 장치에서 앱이 시작되고 앱에서 근접 연결 네트워크 소켓을 즉시 설정하는지 확인합니다. 네트워크 접근 권한 값이 두 장치에 모두 적용되고 있다는 사실이 앱의 UI에 반영되는지 확인합니다.
  6. 앱이 시작되지 않는 경우 요청하는 장치에서 앱의 UI에 실패한 시도가 반영되는지 확인합니다. 앱이 시작되었지만 근접 연결 네트워크 소켓이 설정되지 않는 경우 두 장치에서 모두 앱의 UI에 실패가 반영되는지 확인합니다.

피어 앱에 대한 시작 요청이 거부되는 시나리오를 처리하도록 앱을 작성해야 합니다.

Hh967765.wedge(ko-kr,WIN.10).gif탭 제스처로 거부된 요청 테스트

  1. 두 장치에 앱을 설치합니다. 첫 번째 장치에서만 앱을 시작합니다.
  2. 앱을 실행 중인 장치에서 피어 연결을 알립니다. 이 작업은 Start 메서드를 호출하여 수행합니다.
  3. 두 장치를 함께 탭합니다.
  4. 두 번째 장치에서 앱을 시작하거나 설치하라는 알림 메시지가 표시되는지 확인합니다. 알림을 거부합니다.
  5. 앱이 두 번째 장치에서 시작되지 않고 요청하는 앱의 UI에 요청이 거부된 사실이 반영되는지 확인합니다.

ProximityDevice 클래스를 사용하여 메시지 게시 및 구독

ProximityDevice 클래스를 사용하여 탭 제스처 중 장치 간에 작은 메시지를 게시할 수 있습니다. 장치가 설치된 근접 연결 하드웨어의 범위 이내에 있어야 합니다. 이 거리는 일반적으로 2-3cm입니다.

탭 제스처 중 메시지를 게시하려면 게시하는 장치에서 PublishMessage, PublishBinaryMessage 또는 PublishUriMessage 메서드를 사용하고 수신 장치에서 SubscribeForMessage 메서드를 사용합니다. 메시지 게시 및 구독에 대한 예제를 보려면 빠른 시작: 탭을 사용한 메시지 게시 및 구독 또는 샘플 갤러리의 근접 연결 샘플(영문)을 참조하세요.

Hh967765.wedge(ko-kr,WIN.10).gif메시지를 게시 및 구독하는 앱 테스트

  1. 한 장치에서 게시 앱을 시작하고 다른 장치에서 구독 앱을 시작합니다. 두 장치에서 모두 동일한 앱을 시작해도 되지만, 반드시 같을 필요는 없습니다.
  2. 앱을 메시지 게시 및 수신 상태로 전환합니다. 이때 게시 앱에서 게시 메서드 중 하나를 호출하고 수신 앱에서 SubscribeForMessage 메서드를 호출합니다.
  3. 두 장치를 함께 탭합니다.
  4. 메시지가 전송된 경우 구독 앱의 UI에 메시지가 수신되었다는 내용이 반영되어 있는지 확인합니다. 선택적으로 게시 앱에서, 메시지가 전송된 경우에 호출되는 MessageTransmittedHandler 형식의 이벤트 처리기에 대한 매개 변수를 포함하는 게시 메서드의 오버로드를 호출할 수 있습니다. 이 이벤트 처리기에 대한 코드에서 메시지가 전송된 사실을 반영하도록 게시 앱의 UI를 업데이트할 수 있습니다.
  5. 메시지가 게시되지 않거나 수신되지 않는 경우 앱의 코드를 검토하여 문제를 확인합니다. 문제 해결 단계에 대한 자세한 내용은 이 항목의 "문제 해결" 섹션에서 "게시 및 구독되는 메시지가 수신되지 않는 경우"를 참조하세요.
  6. 두 앱이 모두 메시지 게시 및 구독 상태에서 해제될 수 있는지 확인합니다. 게시 장치에서 StopPublishingMessage 메서드를 호출합니다. 구독 장치에서 StopSubscribingForMessage 메서드를 호출합니다. 장치를 함께 탭한 후 메시지가 더 이상 게시되거나 수신되지 않는지 확인합니다.

문제 해결

발생한 문제가 위의 목록에 없는 경우 Windows 개발자 포럼에서 대답을 찾아 볼 수 있습니다.

문제 문제 해결 단계
탭이 응답하지 않습니다. 탭 제스처를 사용하여 피어 앱을 연결하거나 탭 중에 메시지를 게시 및 구독할 때 탭 제스처에 응답하는 코드가 실행되지 않습니다.

탭 제스처에 포함된 장치가 근접 연결 범위(최소 2cm) 이내에 있는지 확인합니다. 근접 연결 장치의 위치를 기준으로 장치를 정렬해야 할 수도 있습니다. Windows에서는 장치가 근접 연결 범위 이내에 있을 경우 소리를 재생합니다.

DeviceArrivedDeviceDeparted 이벤트를 사용하여 장치가 근접 연결을 시작하는 시점이나 종료하는 시점을 알 수 있습니다. DeviceArrivedDeviceDeparted 이벤트에 대한 코드에 이벤트 처리기를 추가합니다. 이벤트 처리기 코드가 실행되면 탭 제스처가 성공한 것입니다. DeviceArrivedDeviceDeparted 이벤트에 대한 이벤트 처리기 코드가 실행되지 않으면 근접 연결 하드웨어 또는 드라이버에 문제가 발생했을 수 있습니다.

앱에서 PeerFinder 클래스를 사용하여 트리거된 연결을 설정할 때 DeviceArrived 이벤트는 발생하지만 TriggeredConnection 이벤트는 발생하지 않는 경우 다음을 모두 확인하세요.

  • 앱에 연결하기 전에 앱의 모든 인스턴스에서 Start 메서드 호출을 완료했습니다.
  • 이전 탭의 장치 간에 열린 소켓 연결이 없습니다. 이 경우 입이 더 이상 필요하지 않은 소켓에서 Close 메서드를 호출하는지 확인합니다. 필요한 경우 앱을 종료하고 다시 시작하여 앱의 피어 인스턴스 사이의 열린 소켓 연결을 닫을 수 있습니다.
탭 후에 앱이 시작되지 않습니다.

탭에 포함된 두 장치 중 하나 이상에서 앱이 포그라운드로 실행되고 있는지 확인합니다. 이러한 경우에도 탭 후에 앱이 실행되지 않는다면 "탭이 응답하지 않습니다."에 나오는 문제 해결 단계를 참조하세요.

포그라운드에서 실행 중인 앱에서 TriggeredConnection 이벤트가 발생했지만 탭 제스처에 포함된 다른 장치에 앱을 시작하라는 메시지가 표시되지 않는 경우 앱이 올바르게 설치되어 있는지 확인합니다. 앱이 올바르게 설치되어 있으면 앱이 시작 타일에서 시작되어 포그라운드에서 실행 중인 동안 탭 제스처를 통해 연결됩니다.

검색 중에 피어를 찾을 수 없습니다.
  • 앱이 포그라운드에서 실행 중이고 검색 중이거나 연결할 수 있는 모든 장치에서 Start 메서드를 호출했는지 확인합니다. Windows 장치에서 피어 앱을 찾는 경우 연결에 사용할 수 있는 모든 장치에서 Wi-Fi Direct가 사용되는지 확인합니다. Window Phone에서 피어 앱을 찾는 경우 모든 휴대폰에서 Bluetooth가 사용되는지 확인합니다. SupportedDiscoveryTypes 속성을 사용하여 컴퓨터에서 피어 찾기를 지원하는지를 확인할 수 있습니다.

  • 검색 앱에 ConnectAsync 메서드에 대한 이전 호출에서 열린 소켓 연결이 없는지 확인합니다. 이 경우 입이 더 이상 필요하지 않은 소켓에서 Close 메서드를 호출하는지 확인합니다. 필요한 경우 앱을 종료하고 다시 시작하여 앱의 피어 인스턴스 사이의 열린 소켓 연결을 닫을 수 있습니다.

  • 피어 브라우징은 동일한 근접 연결 사용 앱을 실행 중인 피어 장치만 찾습니다. 테스트 중인 모든 장치에서 동일한 앱이 실행 중인지 확인합니다. ConnectAsync 메서드를 사용하여 한 번에 두 개의 장치만 연결할 수 있습니다.

  • 연결하려는 장치가 도메인에 가입되어 있는 경우 도메인 정책에서 새 연결을 금지하거나 기존 연결을 닫을 수 있습니다. 도메인에 가입되지 않은 장치에는 연결되지만 도메인에 가입된 장치에는 연결되지 않는 경우 도메인에 대한 방화벽 정책을 검토해 보세요.

  • PC에서 연결되지 않는 경우 Wi-Fi Direct 하드웨어 제한 때문일 수 있습니다. 두 PC에서 모두 무선 라디오를 켜고 모든 무선 네트워크 연결을 끊은 상태로 앱을 실행해 보세요.

탭을 통한 연결 시도가 1분 후에 실패합니다.

탭에 포함된 두 장치에서 모두 무선 설정을 확인하고 Wi-Fi 및 Bluetooth 무선 송수신 장치가 켜져 있는지 확인합니다. 두 장치 중 하나에 Wi-Fi Direct 또는 Bluetooth 송수신 장치를 지원하는 무선 장치가 없는 경우 두 장치를 모두 동일한 네트워크에 연결해야 합니다.

게시 및 구독되는 메시지가 수신되지 않는 경우 메시지를 게시 및 구독할 때 게시된 메시지가 구독 장치에 수신되지 않습니다.

게시 장치에서, 메시지가 전송된 경우에 호출되는 MessageTransmittedHandler 형식의 이벤트 처리기에 대한 매개 변수를 포함하는 PublishMessage, PublishUriMessage 또는 PublishBinaryMessage 메서드의 오버로드를 호출할 수 있습니다. 게시 메서드에 대한 호출이 성공하고 MessageTransmittedHandler 이벤트 처리기의 모드가 실행되면 메시지가 성공적으로 전송된 것입니다.

구독 장치에서 SubscribeForMessage 메서드에 전달된 messageType 매개 변수의 값이 PublishMessage 또는 PublishBinaryMessage 메서드에 전달된 messageType 매개 변수의 값과 일치하는지 확인합니다. PublishUriMessage 메서드의 경우 messageType 값은 항상 WindowsUri입니다. 메시지 유형 값은 대/소문자를 구분합니다.

 

관련 항목

근접 연결 및 탭 지원

빠른 시작: 탭 또는 브라우징을 사용한 응용 프로그램 연결

빠른 시작: 탭을 사용한 메시지 게시 및 구독

근접 연결에 대한 지침 및 검사 목록

Windows.Networking.Proximity namespace

샘플

근접 연결 샘플