다음을 통해 공유


알림 채널을 요청, 생성 및 저장하는 방법(HTML)

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

참고  JavaScript를 사용하지 않는 경우 알림 채널을 요청, 생성 및 저장하는 방법(XAML)을 참조하세요.

 

앱이 푸시 알림을 받을 때 사용하는 채널 URI(Uniform Resource Identifier)를 열 수 있습니다. 그런 다음 이 채널을 사용하여 푸시 알림을 보내는 서버로 채널을 보내고, 더 이상 필요하지 않으면 채널을 닫을 수 있습니다. 채널은 특정 앱 또는 보조 타일에 대해 단일 장치의 단일 사용자를 나타내는 고유한 주소입니다.

앱을 시작할 때마다 새 채널을 요청하고 URI가 변경되면 클라우드 서버를 업데이트해야 합니다. 자세한 내용은 설명을 참조하세요.

중요  알림 채널은 30일 후에 자동으로 만료됩니다.

 

알아야 할 사항

기술

  • Windows Runtime

사전 요구 사항

  • XML과 타일 및 알림 용어와 개념에 대한 기본 지식. 또한 이 항목에서는 Windows 런타임 API를 사용하여 JavaScript로 기본 Windows 스토어 앱을 만드는 방법을 알고 있다고 가정합니다.
  • 푸시 알림 및 WNS(Windows 푸시 알림 서비스) 개념, 요구 사항 및 작업에 대해 잘 알고 있어야 합니다. 자세한 내용은 WNS(Windows 푸시 알림 서비스) 개요를 참조하세요.

지침

단계 1: 채널 URI 요청

이 예에서는 채널 URI를 요청합니다. 알림 클라이언트 플랫폼에 요청이 수행된 다음 이 플랫폼이 WNS로부터 채널 URI를 요청합니다. 요청이 완료될 때 반환되는 값은 URI가 포함된 PushNotificationChannel 개체입니다.


var channel;
var pushNotifications = Windows.Networking.PushNotifications;
var channelOperation = pushNotifications.PushNotificationChannelManager.createPushNotificationChannelForApplicationAsync();

return channelOperation.then(function (newChannel) {
    channel = newChannel;
    // Success. The channel URI is found in newChannel.uri.
    },
    function (error) {
        // Could not create a channel. Retrieve the error through error.number.
    }
);

단계 2: 채널 URI를 서버로 보내기

채널 URI는 HTTP POST 요청에 패키지되어 서버로 전송됩니다.

중요  이 정보를 안전하게 서버로 보내야 합니다. 앱이 채널 URI를 전송할 때 서버에 자체 인증하도록 해야 합니다. 정보를 암호화하고 HTTPS 등의 보안 프로토콜을 사용합니다.

 


var serverUrl = "https://www.contoso.com";

var xhr = new WinJS.xhr({
        type: "POST", 
        url: serverUrl,
        headers: {"Content-Type": "application/x-www-form-urlencoded"},
        data: "channelUri=" + channel.uri
}).then(function (req) {
        // Channel URI successfully sent to server. Retrieve the response from req.response.
    },
    function (req) {
        // Could not send channel URI to server. Retrieve the error through req.statusText.
    }
);

설명

채널 요청

다음 논리를 사용하여 앱이 호출될 때마다 새 채널을 요청해야 합니다.

  1. 채널을 요청합니다.
  2. 이전 채널과 새 채널을 비교합니다. 채널이 같으면 추가 작업을 수행할 필요가 없습니다. 이 경우 나중에 채널을 비교하기 위해 앱이 서비스에 채널을 보낼 때마다 로컬에 저장해야 합니다.
  3. 채널이 변경된 경우 웹 서비스에 새 채널을 보냅니다. 다음과 같은 경우 항상 새 채널을 보내는 오류 처리 논리를 포함합니다.
    • 앱에서 웹 서비스에 채널을 보낸 적이 없는 경우
    • 웹 서비스에 채널을 보내려고 한 앱의 마지막 시도가 실패한 경우

createPushNotificationChannelForApplicationAsync 메서드를 호출할 때마다 항상 다른 채널이 반환되는 것은 아닙니다. 마지막 호출 이후 채널이 변경되지 않은 경우에는 앱이 같은 채널을 서비스로 다시 보내지 않음으로써 불필요한 작업을 수행하지 않고 인터넷 트래픽을 절약할 수 있습니다. 앱 하나가 유효한 채널 URI 여러 개를 동시에 사용할 수 있습니다. 각 고유 채널은 만료될 때까지 유효한 상태로 유지되므로, 새 채널을 요청해도 이전 채널의 만료 시간에는 영향을 주지 않기 때문에 문제가 없습니다.

앱을 호출할 때마다 새 채널을 요청하면 유효한 채널에 항상 액세스할 수 있는 기회가 많아 집니다. 콘텐츠가 항상 라이브 상태인 타일 또는 알림 시나리오에 반드시 필요한 요소인 경우 특히 중요합니다. 사용자가 30일마다 두 번 이상 앱을 실행하지 못할 수도 있다고 염려되는 경우에는 백그라운드 작업을 구현하여 정기적으로 채널 요청 코드를 실행할 수 있습니다.

채널 요청의 오류 처리

인터넷을 사용할 수 없으면 createPushNotificationChannelForApplicationAsync 메서드 호출이 실패할 수 있습니다. 이를 처리하려면 2단계에 나와 있는 코드에 다시 시도 논리를 추가하세요. 3회 다시 시도(실패한 각 시도 사이의 지연 시간 10초)하도록 지정하는 것이 좋습니다. 3회의 시도가 모두 실패하면 앱은 사용자가 다음번에 앱을 실행할 때까지 기다렸다가 다시 시도합니다.

채널 닫기

앱에서 close 메서드를 호출하여 모든 채널의 알림 배달을 즉시 중지할 수 있습니다. 일반적이지는 않지만 앱에 대한 모든 알림 배달을 중지하려는 경우가 있을 수 있습니다. 예를 들어 앱에 사용자 계정의 개념이 있고 사용자가 앱에서 로그아웃하는 경우 타일에 더 이상 해당 사용자의 개인 정보가 표시되지 않아야 합니다. 타일에서 콘텐츠를 지우고 알림 배달을 중지하려면 다음을 수행해야 합니다.

  1. 사용자에게 타일, 알림 메시지, 배지 또는 원시 알림을 배달하는 모든 알림 채널에서 PushNotificationChannel.close 메서드를 호출하여 모든 타일 업데이트를 중지합니다. close 메서드를 호출하면 해당 사용자에 대한 알림을 더 이상 클라이언트에 배달할 수 없습니다.
  2. TileUpdater.clear 메서드 호출을 통해 타일 콘텐츠를 지워 타일에서 이전 사용자의 데이터를 제거합니다.

관련 항목

푸시 알림 및 정기 알림 샘플

WNS(Windows 푸시 알림 서비스) 개요

빠른 시작: 푸시 알림 보내기

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

채널 만료 및 갱신을 관리하는 방법

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

푸시 알림 서비스 요청 및 응답 헤더