방법: Windows Phone의 콜백 등록 요청 설정

2012-02-09

웹 서비스가 인증된 경우 콜백 URI 및 메시지와 구독을 연결하는 콜백 등록 요청을 설정할 수 있습니다. 콜백이 등록된 후 단말기가 비활성 상태로 바뀌면 Microsoft 푸시 알림 서비스는 콜백 URI로 메시지를 보냅니다. 단말기가 활성 상태로 돌아오면 웹 서비스는 콜백을 다시 등록해야 합니다.

각 구독에 대해 하나의 콜백만 등록될 수 있으며, 웹 서비스가 콜백 등록을 여러 번 시도할 경우에는 마지막 콜백의 데이터만 유지됩니다.

페이로드는 구독과 연결된 등록 이벤트가 트리거되면 웹 서비스로 푸시될 콘텐츠를 포함해야 합니다. 현재 콜백 알림을 트리거하는 유일한 이벤트는 단말기가 비활성 상태로 바뀔 때입니다. Microsoft 푸시 알림 서비스는 이 페이로드 정보를 구독과 함께 저장합니다. 페이로드는 최대 1KB의 텍스트 또는 이진 데이터로 구성될 수 있습니다.

다음 코드 샘플에서는 콜백 등록 요청을 보내는 방법을 보여 줍니다.


// The notification channel URI that the Push Notification Service returns to the application. 
// The following value is an example URI for an authenticated web service.
string notificationUri = "https://notify.mpnf1.live-int.com/unthrottledthirdparty/01.00/AAEecz4fHY3eRoEfxiI6WayjAgAAAAADAQAAAAQUZm52Ojk0MzAwOUIxRUExQkQ2ODY";

// The web service must append "/callback" to the notification channel URI.  
string mpnCallbackServiceUri = notificationUri + "/callback";

// The URI to post the set callback request to.
string callbackUri = "http://www.contoso.com";

// Sets the callback message payload to send to the Push Notification Service. It is an opaque blob that the Push Notification Service posts to the provided callback URI
// when an associated event triggers. The maximum allowed size for this payload is 1 KB.
byte[] callbackMessage = new byte[1024];

// Create a web request to send the register callback request to the Push Notification Service.
HttpWebRequest webRequest = (HttpWebRequest)WebRequest.Create(mpnCallbackServiceUri);

// A mandatory custom header that specifies the URI to post the callback message to when any registered event with the associated subscription triggers.
webRequest.Headers.Add("X-CallbackURI", callbackUri);  

// HTTP POST is the only allowed method to send the notification.
webRequest.Method = "POST";

// Sets the web request content length.
webRequest.ContentLength = callbackMessage.Length;

// Set the content type according to the type of callback message being sent. 
webRequest.ContentType = "application/*";

using (Stream requestStream = webRequest.GetRequestStream())
{
    requestStream.Write(callbackMessage, 0, callbackMessage.Length);
}

// Get the response. This example gets the web response synchronously, but a web service can get it asynchronously as well.
HttpWebResponse response = (HttpWebResponse)webRequest.GetResponse();

// Ensure that the 'HTTP 200 OK' response is received from the Push Notification Service.
Debug.Assert(response.StatusCode == HttpStatusCode.OK);

// You can get the status of the notification channel associated with the callback request
// using the custom headers in the received response. 
string subscriptionStatus = response.Headers.Get("X-SubscriptionStatus");

// You can get the device connection status of the notification channel associated with the callback request
// using the custom headers in the received response. 
string deviceConnectionStatus = response.Headers.Get("X-DeviceConnectionStatus");

표시: