public string GetPayload() { return(Win8Notifications.GetMessage(this)); }
// (INotification notification, SendNotificationCallbackDelegate callback) public void Send(WindowsNotification winNotification, string packageName, string packageSecurityIdentifier, string clientSecret) { //See if we need an access token if (string.IsNullOrEmpty(AccessToken)) { RenewAccessToken(packageSecurityIdentifier, clientSecret); } //https://cloud.notify.windows.com/?token=..... //Authorization: Bearer {AccessToken} // string wnsType, contentType, tag; Win8Notifications.GetHeaders(winNotification, out wnsType, out contentType, out tag); var request = (HttpWebRequest)HttpWebRequest.Create(winNotification.ChannelUri); // "https://notify.windows.com"); request.Method = "POST"; request.Headers.Add("X-WNS-Type", wnsType); request.Headers.Add("Authorization", string.Format("Bearer {0}", this.AccessToken)); request.ContentType = contentType; if (!string.IsNullOrEmpty(tag)) { request.Headers.Add("X-WNS-Tag", tag); } //Microsoft recommends we disable expect-100 to improve latency request.ServicePoint.Expect100Continue = false; var payload = winNotification.GetPayload(); var data = Encoding.UTF8.GetBytes(payload); request.ContentLength = data.Length; using (var rs = request.GetRequestStream()) rs.Write(data, 0, data.Length); try { request.BeginGetResponse(new AsyncCallback(getResponseCallback), new object[] { request, winNotification }); } catch (WebException wex) { //Handle different httpstatuses var status = ParseStatus(wex.Response as HttpWebResponse, winNotification); // If token expired, reset AccessToken in order to obtain a new one if (status.NotificationStatus == WindowsNotificationSendStatus.TokenExpired) { AccessToken = null; } HandleStatus(status); } catch (Exception ex) { UnhandledException(winNotification, ex); } }