다음을 통해 공유


푸시 알림 서비스 요청 및 응답 헤더(Windows 런타임 앱)

이 항목에서는 푸시 알림을 보내는 데 필요한 서비스 간 웹 API 및 프로토콜에 대해 설명합니다.

푸시 알림 및 WNS 개념, 요구 사항 및 작업에 대한 개념적 논의는 WNS(Windows Push Notification Services) 개요 참조하세요.

액세스 토큰 요청 및 받기

이 섹션에서는 WNS를 사용하여 인증할 때 관련된 요청 및 응답 매개 변수에 대해 설명합니다.

액세스 토큰 요청

HTTP 요청은 클라우드 서비스를 인증하고 그 대가로 액세스 토큰을 검색하기 위해 WNS로 전송됩니다. SSL(보안 소켓 계층)를 사용하여 요청이 https://login.live.com/accesstoken.srf으로 발송됩니다.

액세스 토큰 요청 매개 변수

클라우드 서비스는 "application/x-www-form-urlencoded" 형식을 사용하여 HTTP 요청 본문에 이러한 필수 매개 변수를 제출합니다. 모든 매개 변수가 URL로 인코딩되었는지 확인해야 합니다.

Parameter Required Description
grant_type TRUE client_credentials로 설정해야 합니다.
client_id TRUE Microsoft Store에 앱을 등록할 때 할당된 클라우드 서비스에 대한 SID(패키지 보안 식별자)입니다.
client_secret TRUE Microsoft Store에 앱을 등록할 때 할당된 클라우드 서비스에 대한 비밀 키입니다.
scope TRUE notify.windows.com으로 설정해야 합니다.

액세스 토큰 응답

WNS는 클라우드 서비스를 인증하고, 성공하면 액세스 토큰을 포함하여 "200 OK"로 응답합니다. 그렇지 않으면 WNS는 OAuth 2.0 프로토콜 초안설명된 대로 적절한 HTTP 오류 코드로 응답합니다.

액세스 토큰 응답 매개 변수

클라우드 서비스가 성공적으로 인증되면 액세스 토큰이 HTTP 응답에 반환됩니다. 이 액세스 토큰은 만료될 때까지 알림 요청에서 사용할 수 있습니다. HTTP 응답은 "application/json" 미디어 형식을 사용합니다.

Parameter Required Description
access_token TRUE 클라우드 서비스가 알림을 보낼 때 사용할 액세스 토큰입니다.
token_type FALSE 항상 bearer로 반환됩니다.

응답 코드

HTTP 응답 코드 Description
200 확인 요청이 성공했습니다.
400 잘못된 요청 인증에 실패했습니다. 응답 매개 변수는 OAuth 초안 RFC(Request for Comments)를 참조하세요.

Example

다음은 성공적인 인증 응답의 예를 보여줍니다.

 HTTP/1.1 200 OK   
 Cache-Control: no-store
 Content-Length: 422
 Content-Type: application/json
 
 {
     "access_token":"EgAcAQMAAAAALYAAY/c+Huwi3Fv4Ck10UrKNmtxRO6Njk2MgA=", 
     "token_type":"bearer",
     "expires_in": 86400
 }

알림 요청 보내기 및 응답 수신

이 섹션에서는 알림을 전달하기 위해 WNS에 대한 HTTP 요청과 관련된 헤더와 회신에 관련된 헤더에 대해 설명합니다.

  • 알림 요청 보내기
  • 알림 응답 보내기
  • 지원되지 않는 HTTP 기능

알림 요청 보내기

알림 요청을 보낼 때 호출 앱은 채널 URI(Uniform Resource Identifier)에 주소가 지정된 SSL을 통해 HTTP 요청을 수행합니다. "Content-Length"는 요청에 지정해야 하는 표준 HTTP 헤더입니다. 다른 모든 표준 헤더는 선택 사항이거나 지원되지 않습니다.

또한 여기에 나열된 사용자 지정 요청 헤더를 알림 요청에 사용할 수 있습니다. 일부 헤더는 필수이지만 다른 헤더는 선택 사항입니다.

요청 매개 변수

헤더 이름 Required Description
Authorization TRUE 알림 요청을 인증하는 데 사용되는 표준 HTTP 권한 부여 헤더입니다. 클라우드 서비스는 이 헤더에 액세스 토큰을 제공합니다.
Content-Type TRUE 표준 HTTP 권한 부여 헤더입니다. 알림, 타일 및 배지 알림의 경우 이 헤더를 text/xml로 설정해야 합니다. 원시 알림의 경우 이 헤더를 application/octet-stream으로 설정해야 합니다.
Content-Length TRUE 요청 페이로드의 크기를 나타내는 표준 HTTP 권한 부여 헤더입니다.
X-WNS-Type TRUE 페이로드의 알림 유형을 정의합니다: 타일, 토스트, 배지 또는 원시 데이터.
X-WNS-Cache-Policy FALSE 알림 캐싱을 사용하거나 사용하지 않도록 설정합니다. 이 헤더는 타일, 배지 및 원시 알림에만 적용됩니다.
X-WNS-RequestForStatus FALSE 알림 응답에서 디바이스 상태 및 WNS 연결 상태를 요청합니다.
X-WNS-Tag FALSE 알림 큐를 지원하는 타일에 사용되는 식별 레이블을 통해 알림을 제공하는 데 사용되는 문자열입니다. 이 헤더는 타일 알림에만 적용됩니다.
X-WNS-TTL FALSE TTL(Time to Live)을 지정하는 정수 값(초)입니다.
MS-CV FALSE 상관 관계 벡터 요청에 사용되는 값입니다.

중요한 참고 사항

  • Content-Length 및 Content-Type은 다른 표준 헤더가 요청에 포함되었는지 여부에 관계없이 클라이언트에 전달되는 알림에 포함된 유일한 표준 HTTP 헤더입니다.
  • 다른 모든 표준 HTTP 헤더는 무시되거나 기능이 지원되지 않는 경우 오류를 반환합니다.
  • 2023년 2월부터 WNS는 디바이스가 오프라인 상태일 때 타일 알림을 하나만 캐시합니다.

Authorization

권한 부여 헤더는 전달자 토큰에 대한 OAuth 2.0 권한 부여 방법에 따라 호출 당사자의 자격 증명을 지정하는 데 사용됩니다.

구문은 문자열 리터럴 "Bearer", 뒤에 공백, 액세스 토큰으로 구성됩니다. 이 액세스 토큰은 위에서 설명한 액세스 토큰 요청을 실행하여 검색됩니다. 만료될 때까지 후속 알림 요청에 동일한 액세스 토큰을 사용할 수 있습니다.

이 헤더는 필수입니다.

Authorization: Bearer <access-token>

X-WNS-Type

WNS에서 지원하는 알림 유형입니다. 이 헤더는 알림 유형과 WNS에서 이를 처리하는 방법을 나타냅니다. 알림이 클라이언트에 도달하면 지정된 형식에 대해 실제 페이로드의 유효성이 검사됩니다. 이 헤더는 필수입니다.

X-WNS-Type: wns/toast | wns/badge | wns/tile | wns/raw
Value Description
wns/badge 타일에 배지 오버레이를 만드는 알림입니다. 알림 요청에 포함된 Content-Type 헤더는 반드시 text/xml로 설정해야 합니다.
wns/tile 타일 콘텐츠를 업데이트하는 알림입니다. 알림 요청에 포함된 Content-Type 헤더는 반드시 text/xml로 설정해야 합니다.
wns/toast 클라이언트에서 축배를 들라는 알림입니다. 알림 요청에 포함된 Content-Type 헤더는 반드시 text/xml로 설정해야 합니다.
wns/raw 사용자 지정 페이로드를 포함할 수 있고 앱에 직접 배달되는 알림입니다. 알림 요청에 포함된 Content-Type 헤더는 반드시 application/octet-stream로 설정해야 합니다.

X-WNS-Cache-Policy

알림 대상 디바이스가 오프라인 상태이면 WNS는 각 채널 URI에 대해 배지 1개, 타일 1개, 알림 메시지 1개를 캐시합니다. 기본적으로 원시 알림은 캐시되지 않지만 원시 알림 캐싱을 사용하도록 설정하면 하나의 원시 알림이 캐시됩니다. 항목은 캐시에 무기한 보관되지 않으며 적절한 기간 후에 삭제됩니다. 그렇지 않으면 다음 디바이스가 온라인 상태가 되면 캐시된 콘텐츠가 배달됩니다.

X-WNS-Cache-Policy: cache | no-cache
Value Description
cache Default. 사용자가 오프라인 상태인 경우 알림이 캐시됩니다. 타일 및 배지 알림의 기본 설정입니다.
no-cache 사용자가 오프라인 상태이면 알림이 캐시되지 않습니다. 원시 알림의 기본 설정입니다.

X-WNS-RequestForStatus

응답에 디바이스 상태 및 WNS 연결 상태를 포함할지 여부를 지정합니다. 이 헤더는 선택 사항입니다.

    X-WNS-RequestForStatus: true | false
Value Description
true 응답에서 디바이스 상태 및 알림 상태를 반환합니다.
false Default. 디바이스 상태 및 알림 상태를 반환하지 마세요.

X-WNS-Tag

알림에 태그 레이블을 할당합니다. 태그는 앱이 알림 순환을 선택한 경우 알림 큐에서 타일의 대체 정책에 사용됩니다. 이 태그가 있는 알림이 큐에 이미 있는 경우 동일한 태그가 있는 새 알림이 해당 위치를 차지합니다.

Note

이 헤더는 선택 사항이며 타일 알림을 보낼 때만 사용됩니다.

    X-WNS-Tag: <string value>
Value Description
문자열 값 16자 이하의 영숫자 문자열입니다.

X-WNS-TTL

알림에 대한 TTL(만료 시간)을 지정합니다. 일반적으로 필요하지는 않지만 알림이 특정 시간보다 늦게 표시되지 않도록 하려는 경우 사용할 수 있습니다. TTL은 초 단위로 지정되며 WNS가 요청을 수신하는 시간을 기준으로 합니다. TTL을 지정하면 디바이스는 해당 시간 이후에 알림을 표시하지 않습니다. TTL이 너무 짧으면 알림이 전혀 표시되지 않을 수 있습니다. 일반적으로 만료 시간은 최소 몇 분 안에 측정됩니다.

이 헤더는 선택 사항입니다. 값을 지정하지 않으면 알림이 만료되지 않으며 일반 알림 대체 체계에 따라 대체됩니다.

X-WNS-TTL: <integer value>

Value Description
정수 값 WNS가 요청을 수신한 후 알림의 수명(초)입니다.

X-WNS-SuppressPopup

Note

Windows Phone 스토어 앱의 경우 토스트 알림의 사용자 인터페이스(UI)를 표시하지 않고 알림 센터에 직접 보내는 옵션이 있습니다. 이렇게 하면 알림이 자동으로 전달될 수 있으며, 이는 덜 긴급한 알림을 위한 잠재적으로 우수한 옵션입니다. 이 헤더는 선택 사항이며 Windows Phone 채널에서만 사용됩니다. Windows 채널에 이 헤더를 포함하면 알림이 삭제되고 WNS에서 오류 응답이 수신됩니다.

X-WNS-SuppressPopup: 참 | 거짓

Value Description
true 토스트 알림을 알림 센터에 직접 보냅니다. 토스트 알림 UI를 표시하지 마십시오.
false Default. 토스트 알림 UI를 표시하고 알림 센터에 알림을 추가합니다.

X-WNS-Group

Note

Windows Phone 스토어 앱의 액션 센터에서는 서로 다른 그룹에 속한 것으로 레이블이 지정된 경우에만 동일한 태그를 사용하여 여러 토스트 알림을 표시할 수 있습니다. 예를 들어 레시피 책 앱을 고려해 보세요. 각 레시피는 태그로 식별됩니다. 해당 레시피에 대한 댓글이 포함된 토스트에는 레시피 태그가 있지만 댓글 그룹 레이블이 있습니다. 해당 레시피에 대한 등급을 포함하는 토스트는 해당 레시피의 태그를 가지고 있으며, 그와 함께 등급 그룹 레이블도 표시됩니다. 서로 다른 그룹 레이블은 알림 센터에서 두 개의 토스트 알림을 동시에 표시할 수 있게 해줍니다. 이 헤더는 선택 사항입니다.

X-WNS-그룹: <string value>

Value Description
문자열 값 16자 이하의 영숫자 문자열입니다.

X-WNS-Match

Note

HTTP DELETE 메서드와 함께 특정 알림, 알림 집합(태그 또는 그룹별) 또는 Windows Phone 스토어 앱용 알림 센터에서 모든 알림을 제거하는 데 사용됩니다. 이 헤더는 그룹, 태그 또는 둘 다를 지정할 수 있습니다. 이 헤더는 HTTP DELETE 알림 요청에 필요합니다. 이 알림 요청에 포함된 페이로드는 무시됩니다.

X-WNS-Match: type:wns/toast; group=<string value>; tag=<string value> | type:wns/toast; group=<string value> | type:wns/toast; tag=<string value> | type:wns/toast; 모두

Value Description
type:wns/toast; group=<string value>; tag=<string value> 지정된 태그와 그룹이 모두 있는 레이블이 지정된 단일 알림을 제거합니다.
type:wns/toast; group=<string value> 지정된 그룹으로 레이블이 지정된 모든 알림을 제거합니다.
type:wns/toast; tag=<string value> 지정된 태그로 레이블이 지정된 모든 알림을 제거합니다.
type:wns/toast;all 알림 센터에서 앱의 모든 알림을 지웁니다.

알림 응답 보내기

WNS는 알림 요청을 처리한 후 응답으로 HTTP 메시지를 보냅니다. 이 섹션에서는 해당 응답에서 찾을 수 있는 매개 변수 및 헤더에 대해 설명합니다.

응답 매개 변수

헤더 이름 Required Description
X-WNS-Debug-Trace FALSE 문제를 보고할 때 문제를 해결하는 데 도움이 되도록 기록해야 하는 정보를 디버깅합니다.
X-WNS-DeviceConnectionStatus FALSE X-WNS-RequestForStatus 헤더를 통해 알림 요청에서 요청된 경우에만 반환되는 장치 상태입니다.
X-WNS-Error-Description FALSE 디버깅에 도움이 되도록 기록해야 하는 사람이 읽을 수 있는 오류 문자열입니다.
X-WNS-Msg-ID FALSE 디버깅 목적으로 사용되는 알림의 고유 식별자입니다. 문제를 보고할 때 문제 해결에 도움이 되도록 이 정보를 기록해야 합니다.
X-WNS-Status FALSE WNS가 알림을 성공적으로 수신하고 처리했는지 여부를 나타냅니다. 문제를 보고할 때 문제 해결에 도움이 되도록 이 정보를 기록해야 합니다.
MS-CV FALSE 문제를 보고할 때 문제를 해결하는 데 도움이 되도록 기록해야 하는 정보를 디버깅합니다.

X-WNS-Debug-Trace

이 헤더는 유용한 디버깅 정보를 문자열로 반환합니다. 개발자가 문제를 디버그하는 데 도움이 되도록 이 헤더를 기록하는 것이 좋습니다. 이 헤더는 X-WNS-Msg-ID 헤더 및 MS-CV와 함께 WNS에 문제를 보고할 때 필요합니다.

X-WNS-Debug-Trace: <string value>

Value Description
문자열 값 영숫자 문자열입니다.

X-WNS-DeviceConnectionStatus

이 헤더는 알림 요청의 XWNS-RequestForStatus 헤더에서 요청된 경우 호출 애플리케이션에 디바이스 상태를 반환합니다.

X-WNS-DeviceConnectionStatus: 연결됨 | 연결 끊김 | tempdisconnected

Value Description
connected 디바이스가 온라인 상태이며 WNS에 연결됩니다.
disconnected 디바이스가 오프라인 상태이며 WNS에 연결되지 않았습니다.
tempconnected(사용되지 않음) 3G 연결이 끊어지거나 노트북의 무선 스위치가 꺼지는 경우처럼, 디바이스가 일시적으로 WNS와의 연결을 잃습니다. 알림 클라이언트 플랫폼에서는 의도적인 연결 끊김이 아닌 일시적인 중단으로 표시됩니다.

X-WNS-Error-Description

이 헤더는 디버깅에 도움이 되도록 기록해야 하는 사람이 읽을 수 있는 오류 문자열을 제공합니다.

X-WNS-Error-Description: <string value>

Value Description
문자열 값 영숫자 문자열입니다.

X-WNS-Msg-ID

이 헤더는 호출자에게 알림에 대한 식별자를 제공하는 데 사용됩니다. 문제를 디버그하는 데 도움이 되도록 이 헤더를 기록하는 것이 좋습니다. 이 헤더는 X-WNS-Debug-Trace 및 MS-CV와 함께 WNS에 문제를 보고할 때 필요합니다.

X-WNS-Msg-ID: <string value>

Value Description
문자열 값 16자 이하의 영숫자 문자열입니다.

X-WNS-Status

이 헤더는 WNS가 알림 요청을 처리하는 방법을 설명합니다. 응답 코드를 성공 또는 실패로 해석하는 대신 사용할 수 있습니다.

X-WNS-Status: 수신됨 | 드롭됨 | 채널제한됨

Value Description
received WNS에서 알림을 받고 처리했습니다. 참고: 디바이스에서 알림을 받았다고 보장할 수는 없습니다.
dropped 오류로 인해 또는 클라이언트가 이러한 알림을 명시적으로 거부했기 때문에 알림이 명시적으로 삭제되었습니다. 디바이스가 오프라인인 경우에도 토스트 알림이 전달되지 않습니다.
channelthrottled 앱 서버가 이 특정 채널의 속도 제한을 초과했기 때문에 알림이 삭제되었습니다.

MS-CV

이 헤더는 주로 디버깅에 사용되는 요청과 관련된 상관 관계 벡터를 제공합니다. CV가 요청의 일부로 제공되면 WNS는 이 값을 사용하며, 그렇지 않으면 WNS는 CV를 생성하고 다시 응답합니다. 이 헤더는 X-WNS-Debug-Trace 및 X-WNS-Msg-ID 헤더와 함께 WNS에 문제를 보고할 때 필요합니다.

Important

고유한 CV를 제공하는 경우 각 푸시 알림 요청에 대해 새 CV를 생성하세요.

MS-CV: <string value>

Value Description
문자열 값 상관 관계 벡터 표준 따릅니다.

응답 코드

각 HTTP 메시지에는 이러한 응답 코드 중 하나가 포함됩니다. WNS는 개발자가 디버깅에 사용할 응답 코드를 기록하는 것이 좋습니다. 개발자는 WNS에 문제를 보고할 때 응답 코드 및 헤더 정보를 제공해야 합니다.

HTTP 응답 코드 Description 권장 작업
200 확인 WNS에서 알림을 수락했습니다. 필수 항목이 없습니다.
400 잘못된 요청 하나 이상의 헤더가 잘못 지정되었거나 다른 헤더와 충돌했습니다. 요청의 세부 정보를 기록합니다. 귀하의 요청을 확인하고 이 문서와 비교하십시오.
401 권한 없음 클라우드 서비스에서 유효한 인증 티켓을 제시하지 않았습니다. OAuth 티켓이 잘못되었을 수 있습니다. 액세스 토큰 요청을 사용하여 클라우드 서비스를 인증하여 유효한 액세스 토큰을 요청합니다.
403 금지됨 클라우드 서비스는 인증된 경우에도 이 URI에 알림을 보낼 권한이 없습니다. 요청에 제공된 액세스 토큰이 채널 URI를 요청한 앱의 자격 증명과 일치하지 않습니다. 앱 매니페스트의 패키지 이름이 대시보드에서 앱에 제공된 클라우드 서비스 자격 증명과 일치하는지 확인합니다.
404 찾을 수 없음 채널 URI가 잘못되었거나 WNS에서 인식되지 않습니다. 요청의 세부 정보를 기록합니다. 이 채널에 추가 알림을 보내지 마세요. 이 주소에 대한 알림이 실패합니다.
405 메서드가 허용되지 않음 잘못된 메서드(GET, CREATE); POST(Windows 또는 Windows Phone) 또는 DELETE(Windows Phone에만 해당)만 허용됩니다. 요청의 세부 정보를 기록합니다. HTTP POST 사용으로 전환합니다.
406 허용되지 않음 클라우드 서비스가 속도 제한을 초과했습니다. 응답의 Retry-After 헤더 값 이후에 요청을 보내주세요.
410 사라지다 채널이 만료되었습니다. 요청의 세부 정보를 기록합니다. 이 채널에 추가 알림을 보내지 마세요. 앱에서 새 채널 URI를 요청합니다.
410 도메인 차단됨 보내는 도메인이 WNS에 의해 차단되었습니다. 이 채널에 추가 알림을 보내지 마세요. 푸시 알림을 남용하여 보내는 도메인이 WNS에 의해 차단되었습니다.
413 요청된 개체가 너무 큽니다 알림 페이로드가 5000 바이트 크기 제한을 초과합니다. 요청의 세부 정보를 기록합니다. 페이로드를 검사하여 크기 제한 내에 있는지 확인합니다.
500 내부 서버 오류 내부 오류로 인해 알림 배달이 실패했습니다. 요청의 세부 정보를 기록합니다. 개발자 포럼을 통해 이 문제를 보고합니다.
503 서비스를 사용할 수 없음 서버를 현재 사용할 수 없습니다. 요청의 세부 정보를 기록합니다. 개발자 포럼을 통해 이 문제를 보고합니다. Retry-After 헤더가 관찰되면 응답의 Retry-After 헤더 값 다음에 요청을 보내주세요.

지원되지 않는 HTTP 기능

WNS 웹 인터페이스는 HTTP 1.1을 지원하지만 다음 기능은 지원하지 않습니다.

  • Chunking
  • 파이프라이닝(POST는 멱등성이 아님)
  • 지원되지만 개발자는 알림을 보낼 때 대기 시간이 발생하므로 Expect-100을 사용하지 않도록 설정해야 합니다.