From ceba5eb766db97fcc4e21c323252f1d8ed944a00 Mon Sep 17 00:00:00 2001 From: Andrew Fahlgren Date: Wed, 29 Jul 2020 16:30:51 -0700 Subject: [PATCH] Added X-WNS-PRIORITY header for WNS notifications --- PushSharp.Windows/WnsConnection.cs | 5 ++++- PushSharp.Windows/WnsNotification.cs | 2 ++ PushSharp.Windows/WnsNotificationStatus.cs | 9 +++++++++ 3 files changed, 15 insertions(+), 1 deletion(-) diff --git a/PushSharp.Windows/WnsConnection.cs b/PushSharp.Windows/WnsConnection.cs index 6ab72c43..77ce483d 100644 --- a/PushSharp.Windows/WnsConnection.cs +++ b/PushSharp.Windows/WnsConnection.cs @@ -64,7 +64,10 @@ public async Task Send (WnsNotification notification) http.DefaultRequestHeaders.TryAddWithoutValidation ("X-WNS-Type", string.Format ("wns/{0}", notification.Type.ToString().ToLower ())); - if(!http.DefaultRequestHeaders.Contains("Authorization")) //prevent double values + if (notification.Priority != WnsPriority.Unspecified) + http.DefaultRequestHeaders.TryAddWithoutValidation("X-WNS-PRIORITY", ((int)notification.Priority).ToString()); + + if (!http.DefaultRequestHeaders.Contains("Authorization")) //prevent double values http.DefaultRequestHeaders.TryAddWithoutValidation("Authorization", "Bearer " + accessToken); if (notification.RequestForStatus.HasValue) diff --git a/PushSharp.Windows/WnsNotification.cs b/PushSharp.Windows/WnsNotification.cs index a8a16dca..97afb2c7 100644 --- a/PushSharp.Windows/WnsNotification.cs +++ b/PushSharp.Windows/WnsNotification.cs @@ -14,6 +14,8 @@ public abstract class WnsNotification : INotification public abstract WnsNotificationType Type { get; } + public WnsPriority Priority { get; set; } + public bool IsDeviceRegistrationIdValid () { return true; diff --git a/PushSharp.Windows/WnsNotificationStatus.cs b/PushSharp.Windows/WnsNotificationStatus.cs index c32b62f3..d4970902 100644 --- a/PushSharp.Windows/WnsNotificationStatus.cs +++ b/PushSharp.Windows/WnsNotificationStatus.cs @@ -43,5 +43,14 @@ public enum WnsNotificationType Toast, Raw } + + public enum WnsPriority + { + Unspecified = 0, + High = 1, + Meduim = 2, + Low = 3, + VeryLow = 4 + } }