백그라운드 연결 옵션을 설정하는 방법(HTML)

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

이 항목에서는 JavaScript 및 HTML로 작성된 Windows 런타임 앱에서 사용할 수 있는 백그라운드 네트워크 연결 기능 및 백그라운드 연결 옵션을 구성하는 방법에 대해 설명합니다.

알아야 할 사항

기술

  • IXMLHTTPRequest2

    XMLHttpRequest 개체에 대한 확장을 사용하여 웹 리소스에 액세스할 수 있게 합니다.

  • System.Net.Http

    최신 웹 클라이언트로 웹 서비스에 연결할 수 있게 합니다.

사전 요구 사항

  • 다음 정보는 네트워크 연결을 항상 연결된 상태로 유지해야 하는 모든 연결된 Windows 런타임 앱 또는 네트워크 인식 Windows 런타임 앱에 적용됩니다. 이 항목은 Windows 8.1, Windows Phone 8.1 및 Windows Server 2012 R2에서 JavaScript 및 HTML로 작성된 앱에 적용됩니다. JavaScript 앱에 적용되는 백그라운드 작업에 대한 자세한 내용은 백그라운드 작업을 사용하여 앱 지원을 참조하세요.

    C++/XAML로 작성된 모든 연결된 Windows 스토어 앱과 네트워크 인식 Windows 스토어 앱 및 Windows 8.1과 Windows Server 2012 R2에서 C#, VB.NET 또는 관리 C++으로 작성된 .NET Framework 4.5를 사용하는 앱에 대한 자세한 내용은 백그라운드에서 연결된 상태로 유지하는 방법을 참조하세요.

Windows 스토어 앱용 수명 주기 모델

Windows 8 이상은 Windows 8 데스크톱 앱 및 Windows 이전 버전의 앱에 사용되는 모델과 다른 새로운 Windows 런타임 앱용 수명 주기 모델을 제공합니다. 기본적으로 Windows 런타임 앱은 백그라운드로 이동되면 작동이 완전히 일시 중단됩니다. 앱의 일시 중단에 대한 몇 가지 예외가 있습니다(예: 인쇄가 진행 중이거나, 오디오 스트림에 액세스하고 있거나, Windows.Networking.BackgroundTransfer를 사용하여 백그라운드에서 파일을 전송하는 경우). 이러한 예외(예: Windows.Networking.BackgroundTransfer)로 인해 앱은 여전히 일시 중단 상태일 수 있지만 Windows는 별도의 프로세스로 네트워크 전송을 계속합니다.

이 새로운 Windows 런타임 앱용 모델에서는 포그라운드에서 실행 중인 앱의 응답성이 개선되는 한편, 시스템에서 사용하는 전반적인 전력이 감소됩니다. 전력 사용이 줄어들기 때문에 배터리 사용 시스템의 경우 재충전까지의 작동 시간이 길어집니다. 또한 이 새로운 모델은 최종 사용자에게 항상 연결된 환경을 제공해야 하는 VoIP(Voice over Internet Protocol), IM(인스턴트 메시징), 메일 등 백그라운드에서 작동해야 하는 앱을 위한 메커니즘을 제공합니다. 즉, 원격 서버에 대한 장기 실행 네트워크 연결에 의존하는 앱이 일시 중단 상태에서도 여전히 작동할 수 있음을 의미합니다. 이는 실시간 앱을 위해 항상 연결되어 있어야 하는 것과 전력 사용량을 줄이고 앱 응답성을 높이고자 하는 것 사이의 경쟁적인 요구입니다.

항상 연결되어 있어야 하는, JavaScript로 작성된 Windows 런타임 앱의 실시간 네트워킹 시나리오를 지원하기 위해 Windows 8에 도입된 몇 가지 새로운 기능을 사용할 수 있습니다.

  • 백그라운드 작업
  • SessionConnected에 대한 시스템 트리거
  • 시간 트리거
  • WNS(Windows 푸시 알림 서비스)
  • 원시 푸시 알림

이러한 기능은 Windows 런타임 앱이 일시 중단되었을 때 원시 푸시 알림을 받아야 하는 항상 연결된 앱을 지원합니다. 이러한 앱을 항상 연결 가능한 앱이라고도 합니다. 이 항목에서는 개발자가 WNS와 원시 푸시 알림을 사용하여 실시간의 항상 연결된 앱을 빌드하는 방법에 초점을 맞춥니다. 이러한 기능을 사용하려면 앱이 잠금 화면용 앱이어야 합니다.

기타 백그라운드 작업 기능은 네트워크 앱에서도 사용될 수 있습니다. Windows 런타임 앱에서 사용할 수 있는 몇 가지 기타 트리거는 다음과 같습니다.

  • 유지 관리 트리거(유지 관리를 위한 주기적인 시간 이벤트)
  • 사용자 및 세션에 대한 시스템 트리거(사용자 세션 연결됨/연결 끊김, 사용자 있음/자리 비움 및 온라인 ID 변경)
  • 네트워킹 상태에 대한 시스템 트리거(네트워크 상태 변경, 인터넷 사용 가능/사용 불가)
  • 잠금 화면에 대한 시스템 트리거(앱 추가/제거)

앱에 실시간 연결이 필요하지 않으며 시간 간격을 두고 잠깐씩 실행해야 하는 경우 시간 트리거를 사용할 수 있습니다. 앱이 이벤트를 인식해야 하는 경우 시스템 트리거를 사용할 수 있습니다(예: 인터넷 연결 사용 가능 또는 사용자 있음). 다양한 시나리오를 지원하도록 한 앱에 다양한 트리거를 결합할 수 있습니다. 자세한 내용은 백그라운드 작업을 사용하여 앱 지원을 참조하세요.

대부분의 Windows 런타임 앱에서는 이 항목에서 설명하는 원시 푸시 알림을 사용할 필요가 없습니다. 라이브 타일을 단독으로, 또는 WNS의 원시 푸시 알림 외의 푸시 알림과 함께 사용할 경우 앱이 백그라운드에서 항상 실행되고 있다는 인상을 사용자에게 줄 수 있습니다. 앱이 반드시 잠금 화면용 앱(이 항목의 뒷부분에서 설명)이거나 백그라운드에서 실행되어야만 라이브 타일을 사용할 수 있는 것은 아닙니다. 그러나 앱이 원시 푸시 알림과 함께 라이브 타일을 사용하려면 앱이 잠금 화면에 있어야 합니다.

항상 연결되기 위한 요구 사항

앱이 항상 연결되어 있고 연결 가능하려면 일반적으로 두 가지 요소가 필요합니다.

  • 들어오는 네트워크 알림을 수신하고 앱에서 신속하게 처리할 수 있도록 보장하는 장기 실행 프로세스.
  • 필요 시 데이터를 받고 보낼 수 있는 원격 끝점에 대한 장기 실행 네트워크 연결.

Windows의 이전 버전에서는 앱이 포커스를 잃어도 백그라운드에서 계속 실행됩니다. 이러한 앱은 백그라운드에 있을 때 데이터 및 keep-alive 메시지를 보내고 받을 수 있으므로 장기 실행 연결을 유지할 수 있습니다. 백그라운드에서 앱이 실행되면 리소스가 소모되어, 다른 앱의 응답성 및 배터리 수명에 영향을 줄 수 있습니다.

Windows 런타임 앱 및 잠금 화면

Windows 8에서는 백그라운드로 이동한 Windows 런타임 앱을 일시 중단하는 새로운 소프트웨어 모델을 제공합니다. 앱이 일시 중단되면 시스템에 의해 수신된 패킷이 즉시 앱으로 전달되지 못하며 들어오는 네트워크 패킷이 누락될 수 있습니다. 또한 앱이 일시 중단되었을 때는 새 패킷이 전송되지 않습니다. 이러한 조건의 결과로 기존 네트워크 연결이 닫힐 수 있습니다.

항상 연결된 상태를 유지하려면 앱이 잠금 화면용 앱이어야 합니다. 잠금 화면용 앱은 포그라운드에 있지 않을 때에도 잠금 화면에 알림을 표시하고 백그라운드에서 코드를 실행할 수 있는 특수한 유형의 앱입니다. 하나 이상의 백그라운드 작업을 사용하는 앱만이 잠금 화면용 앱이 될 수 있습니다.

잠금 화면용 앱에는 몇 가지 소셜 기능이 있습니다.

  • 알림을 받으면 코드를 실행할 수 있는 원시 푸시 알림을 WNS에서 받을 수 있습니다.
  • 시간 트리거가 발생하면 코드를 실행할 수 있습니다.
  • 사용자 세션이 시작되면 코드를 실행할 수 있습니다.

잠금 화면에 고정된 앱은 새 정보가 있을 때 잠금 화면에서 배지 아이콘을 업데이트 및 표시하여 백그라운드에 있는 동안 사용자에게 정보를 제공할 수 있습니다. 이러한 앱은 또한 메시지가 도착하면 화면 알림을 표시할 수 있습니다. 알림을 탭하거나 클릭하면 장치의 잠금을 해제하라는 메시지가 사용자에게 표시됩니다. 장치의 잠금이 해제되면 알림에 해당하는 앱이 컨텍스트 정보와 함께 실행됩니다.

잠금 화면용 앱에는 몇 가지 중요한 제한 사항이 있습니다. 사용자는 동시에 최대 일곱 개의 잠금 화면용 앱을 사용할 수 있습니다. 사용자는 언제든지 잠금 화면에서 앱을 추가 또는 제거할 수 있습니다.

잠금 화면용 앱은 사용자가 자리를 비운 동안 놓칠 수 있는 정보를 제공한다는 점에서 매우 유용합니다. 걸려오는 전화 통화, 들어오는 인스턴트 메시지 또는 긴급 메일 등 즉각적인 사용자 동작이 필요할 수 있는 이벤트를 화면으로 알린다는 점에서도 매우 유용합니다.

대부분의 앱은 잠금 화면용 앱일 필요가 없습니다. 앱이 백그라운드에서 일시 중단되면 WNS의 푸시 알림(원시 푸시 알림 아님)을 사용해 라이브 타일을 업데이트하고, 사용자에게 앱이 실행 중이고 활성 상태이며 새로운 콘텐츠를 제공한다는 인상을 줄 수 있습니다. 앱은 또한 WNS를 사용해 언제든지 사용자에게 알림 메시지를 표시하고, 앱의 타일에서 배지 카운트를 업데이트할 수 있습니다.

잠금 화면용 앱 슬롯의 수가 제한적이므로, 잠금 화면용 앱 허가 없어도 작동하도록 앱의 빌드 계획을 세워야 합니다. 사용자는 앱이 잠금 화면에 추가되도록 명시적으로 허용해야 합니다. 앱은 포그라운드에서 보일 때 항상 작동해야 합니다. 잠금 화면용 앱이 되면 백그라운드에 있는 동안 몇 가지 동일한 시나리오가 지원됩니다.

JavaScript 및 HTML로 작성한 앱이 백그라운드에서 실행될 때 들어오는 네트워크 패킷을 받을 수 있도록 하는 기능이 있습니다.

  • 시스템에서 받고 앱에서 백그라운드 작업이 실행되도록 하는 원시 푸시 알림. 앱은 이 기능을 사용하여 WNS(Windows 푸시 알림 서비스)에서 원시 데이터를 받습니다. 앱은 이 데이터의 내용을 이해해야 합니다. 원시 푸시 알림을 받으려면 앱이 WNS에 등록해야 합니다.

잠금 화면에 배치된 앱에 대해 실시간 시나리오가 지원되도록 아래에서 설명하는 몇 가지 메커니즘을 사용할 수 있습니다. 각각에는 장점과 단점이 있습니다. 각 메커니즘은 상호 배타적이지 않으므로 일부 앱에서는 결합하여 사용할 수 있습니다.

Windows 스토어 앱에서 WNS 사용

WNS는 Windows 8용으로 Microsoft에서 호스트하는 클라우드 서비스로서, 코드를 실행할 수 있는 알림을 받거나, 라이브 타일을 업데이트하거나, 화면 알림을 표시하기 위해 Windows 런타임 앱에서 사용할 수 있습니다. WNS를 사용하려면, WNS 서비스와 통신할 수 있도록 로컬 컴퓨터가 인터넷에 연결되어 있어야 합니다. 자세한 내용은 푸시 알림 개요를 참조하세요.

포그라운드의 Windows 런타임 앱은 WNS를 사용해 라이브 타일을 업데이트하거나, 사용자에게 알림을 표시하거나, 배지를 업데이트할 수 있습니다. WNS를 사용하기 위해 앱이 잠금 화면에 있어야 할 필요는 없습니다. 푸시 알림에 응답하여 코드를 실행해야 하는 앱의 경우 WNS 사용을 고려해야 합니다.

잠금 화면에 있을 필요가 없는 앱(대부분의 앱)에서는 라이브 타일 업데이트를 제공하기 위해 WNS를 사용할 수 있습니다.

Windows 런타임 앱을 잠금 화면에 고정하고 백그라운드에서 WNS를 사용하면, 앱은 WNS에서 실시간으로 원시 푸시 알림을 받고 이를 배지 업데이트 또는 알림으로써 잠금 화면에 표시할 수 있습니다. 원시 푸시 알림이 잠금 화면용 앱으로 배달되면 앱은 알림에 응답하여 코드를 실행할 수 있습니다. WNS 사용은 Windows 8.1과 Windows Server 2012 R2에서 C++/XAML로 작성된 Windows 스토어 앱 및 C#, VB.NET 또는 관리 C++로 작성된 .NET Framework 4.5를 사용하는 앱에서 네트워크 트리거를 사용하는 경우보다 전력 효율성이 높을 수 있습니다.

WNS는 여러 가지 이점을 제공합니다.

  • WNS는 잠금 화면용 앱에 실시간 알림을 배달하기 위한 최고의 전원 효율성 메커니즘을 제공합니다.
  • WNS는 앱의 개발자 모델을 간소화합니다. 운영 체제에서 타일이나 알림을 렌더링하므로, 대부분의 시나리오에서 개발자는 백그라운드 작업을 작성할 필요가 없습니다. 앱이 백그라운드 작업을 실행해야 하는 경우 시나리오의 소규모 하위 집합에서는 원시 푸시 알림과 백그라운드 작업을 등록하여 실행해야 합니다.
  • Windows가 WNS에 대한 연결을 유지 관리하므로 클라이언트 앱과 원격 서버 간에 지속적인 소켓 연결을 유지 관리할 필요가 없습니다. 따라서 keep-alive 메시지 전송의 오버헤드가 필요하지 않습니다.
  • 클라이언트와 클라우드 서비스 간 단일 WNS 연결로 로컬 컴퓨터의 모든 앱을 지원할 수 있습니다. 따라서 클라이언트의 배터리 수명 효율성이 향상될 수 있습니다.
  • 서버 쪽 서비스의 경우 클라이언트와 원격 서비스 간의 여러 파킹된 TCP 소켓 연결을 유지 관리할 필요가 없으므로 운영 비용을 줄일 수 있습니다.
  • 앱이 종료되어도 들어오는 원시 푸시 알림을 받으면 WNS에서 타일을 업데이트하거나 알림을 표시하거나 백그라운드 작업을 트리거하도록 할 수 있으므로, 앱이 항상 메모리에 상주할 필요가 없습니다.
  • 원시 푸시 알림을 사용하는 백그라운드 작업은 JavaScript, C++/XAML로 작성할 수 있으며 Windows 8.1과 Windows Server 2012 R2에서 C#, VB.NET 또는 관리 C++로 작성된 .NET Framework 4.5를 사용하여 작성할 수 있습니다.

ControlChannelTrigger를 사용하는 네트워크 트리거 기능은 JavaScript에서 사용할 수 없습니다.

참고  ControlChannelTrigger는 Windows Phone에서 지원되지 않습니다.

 

네트워크 트리거를 사용하는 백그라운드 네트워킹은 C++/XAML로만 작성할 수 있으며 Windows 8과 Windows Server 2012에서 C#, VB.NET 또는 관리 C++로 작성된 .NET Framework 4.5를 사용하여 작성할 수 있습니다. 자세한 내용은 백그라운드에서 연결된 상태로 유지하는 방법을 참조하세요.

WNS에는 또한 일부 앱에 영향을 줄 수 있는 몇 가지 제한 사항이 있습니다. 공용 인터넷 액세스를 차단하는 개인 홈 또는 직장 네트워크에 연결된 로컬 컴퓨터에서는 WNS를 사용할 수 없습니다. 인터넷 액세스가 사용 가능하더라도 일부 네트워크 방화벽에서 WNS를 차단할 수도 있습니다. 그 밖에도 WNS 사용과 관련하여 고려해야 할 몇 가지 단점이 있습니다. 특히, 알림은 최선의 노력으로 배달되지만 성공이 보장되지는 않습니다. 원시 푸시 알림에서 최대 페이로드 크기는 5KB입니다.

여러 가지 이점을 생각해볼 때 VoIP, IM 또는 메일 앱을 빌드하는 개발자는 잠금 화면용 앱에 WNS 알림을 사용하는 것이 좋지만, 이것이 요구 사항에 맞지 않을 경우 대안도 고려해야 합니다.

WNS를 사용해 단지 라이브 타일 업데이트를 제공하거나 알림을 표시하려는 경우에는 잠금 화면용 앱을 빌드할 필요가 없습니다. 백그라운드 작업 실행을 트리거하기 위해 앱에 원시 푸시 알림이 필요할 경우에만 WNS를 사용하는 동안 잠금 화면용 앱이 필요합니다.

Windows 런타임 앱에서 시간 트리거 또는 시스템 이벤트 트리거 사용

최소 15분 간격으로 시간 트리거를 사용해 주기적으로 코드를 실행하도록 잠금 화면용 앱을 구성할 수 있습니다. 예를 들어 앱이 POP3 또는 IMAP 메일 서버에 연결될 때 새로운 메일 메시지에 대한 폴링을 요구합니다.

사용자가 로컬 컴퓨터에 로그온할 때(세션에 대한 시스템 트리거 시작) 코드를 실행하도록 잠금 화면용 앱에서 시스템 이벤트 트리거를 사용할 수도 있습니다. 예를 들어 사용자가 인스턴트 메시지 서비스에 로그인하면, 인스턴트 메시지를 받을 수 있도록 사용자 세션을 시작합니다.

이 항목에서는 WNS 또는 네트워크 트리거 기능과 함께 원시 푸시 알림을 사용하는 잠금 화면용 앱의 빌드를 중점적으로 다룹니다. 타이머 사용에 대한 자세한 내용은 타이머에 따라 백그라운드 작업을 실행하는 방법을 참조하세요. 백그라운드 작업에 대한 자세한 내용은 백그라운드 작업을 사용하여 앱 지원을 참조하세요.

백그라운드 작업 및 샌드박스 적용

백그라운드 작업의 수명은 백그라운드 작업을 구현하는 함수에 의해 결정됩니다. 백그라운드 작업으로 배터리 수명이 단축되는 것을 막기 위해, Windows에서는 앱이 백그라운드 작업 중 사용할 수 있는 CPU 및 네트워크 I/O 리소스에 대해 제한을 강제로 적용합니다. 각 앱에는 이러한 리소스의 할당량이 주기적으로 주어지며 이 할당량을 다 쓸 경우 앱의 백그라운드 작업이 일시 중단됩니다. 앱은 샌드박스 적용으로 인한 일시 중단으로부터 복원이 가능해야 합니다.

자세한 내용은 백그라운드 작업을 사용하여 앱 지원을 참조하세요.

이후 단계

원시 푸시 알림을 사용하는 백그라운드 네트워크 알림을 받는 잠금 화면용 앱을 만드는 방법에 대한 자세한 내용은 백그라운드 원시 푸시 알림을 사용하는 잠금 화면용 앱을 만드는 방법을 참조하세요.

푸시 알림 채널을 등록하여 서버로 보내고 백그라운드 작업을 등록하여 원시 푸시 알림에서 활성화하며 원시 푸시 알림을 채널로 보내고 백그라운드 작업을 활성화하는 프로세스에 대한 자세한 내용은 WNS를 사용하여 잠금 화면용 앱에 원시 푸시 알림을 배달하는 방법을 참조하세요.

원시 푸시 알림을 사용하는 백그라운드 네트워크 알림을 받는 백그라운드 작업을 작성하는 방법에 대한 자세한 내용은 원시 푸시 알림에 대해 백그라운드 작업을 작성하는 방법을 참조하세요.

원시 푸시 알림 사용에 대한 지침 및 검사 목록에 대한 자세한 내용은 원시 알림에 대한 지침 및 검사 목록을 참조하세요.

관련 항목

다른 리소스

네트워킹 지원 추가

백그라운드 네트워킹

배지 개요

원시 알림에 대한 지침 및 검사 목록

WNS(Windows 푸시 알림 서비스)를 사용하여 인증하는 방법

WNS를 사용하여 잠금 화면용 앱에 원시 푸시 알림을 배달하는 방법

원시 푸시 알림에 대해 백그라운드 작업을 작성하는 방법

잠금 화면 개요

푸시 알림 개요

백그라운드 원시 푸시 알림을 사용하는 잠금 화면용 앱을 만드는 방법

백그라운드에서 연결된 상태로 유지하는 방법

백그라운드 작업을 사용하여 앱 지원

타일 및 타일 알림 개요

알림 메시지 개요

백그라운드에서 데이터 전송

네트워크 연결 문제 해결 및 디버깅

참조

ControlChannelTrigger

HttpClient

HttpClientHandler

IXMLHTTPRequest2

MessageWebSocket

StreamSocket

StreamWebSocket

System.Net.Http

Windows.ApplicationModel.Background

Windows.Networking.BackgroundTransfer

Windows.Networking.PushNotifications

Windows.Networking.Sockets

샘플

백그라운드 작업 샘플

잠금 화면용 앱 샘플

푸시 및 정기 알림 클라이언트 쪽 샘플

원시 알림 샘플