using Microsoft.Azure.NotificationHubs; using System; using System.Collections.Generic; using System.Linq; using System.Runtime.InteropServices; using System.Text; using System.Text.Json; using System.Text.Json.Serialization; using System.Threading.Tasks; namespace gehGassi.External.Helper { /// /// Vorlage für Pushnotification Nachrichten /// public class PushnotificationTemplateGenerator { public const string Android_Alert = "{ \"notification\": { \"title\" : \"$(title)\", \"body\" : \"$(message)\"} }"; public const string Android_Alert_Payload = "{ \"notification\": { \"title\" : \"$(title)\", \"body\" : \"$(message)\"}, \"data\": $(payload) }"; public const string Android_Silent_Payload = "{\"data\": $(payload) }"; //Änderung auf Version V1 public const string Android_Alert_v1 = "{\"message\": { \"notification\": { \"title\" : \"$(title)\", \"body\" : \"$(message)\"} } }"; public const string Android_Alert_Payload_v1 = "{\"message\": { \"notification\": { \"title\" : \"$(title)\", \"body\" : \"$(message)\"}, \"data\": $(payload) } }"; public const string Android_Silent_Payload_v1 = "{\"message\": {\"data\": $(payload) } }"; public const string Ios_Alert = "{ \"aps\" : {\"alert\" : {\"title\": \"$(title)\", \"body\": \"$(message)\"}} }"; public const string Ios_Alert_Payload = "{ \"aps\" : {\"alert\" : {\"title\": \"$(title)\", \"body\": \"$(message)\"}}, $(payload) }"; public const string Iso_Silent_Payload = "{ \"aps\" : {\"content-available\" : 1, \"apns-priority\": 5, \"sound\" : \"\", \"badge\" : 0}, $(payload) }"; /// /// Erstellt eine Notification-Template für Android /// /// Title /// Nachricht /// true wenn eine Silent-Message gesendet werden soll, false sonst /// Optional: Payload der mitgesendet werden soll /// Erstelltes Message-Template public static string GetAndroid(string title, string message, bool silent, object payload = null) { var payloadJson = string.Empty; if (payload != null) { payloadJson = payload is string ? payload.ToString() : JsonSerializer.Serialize(payload); } return silent switch { false when payload == null => Android_Alert.Replace("$(title)", title).Replace("$(message)", message), false => Android_Alert_Payload.Replace("$(title)", title).Replace("$(message)", message).Replace("$(payload)", payloadJson), _ => Android_Silent_Payload.Replace("$(payload)", payloadJson) }; } /// /// Erstellt eine Notification-Template für Android V1 /// /// Title /// Nachricht /// true wenn eine Silent-Message gesendet werden soll, false sonst /// Optional: Payload der mitgesendet werden soll /// Erstelltes Message-Template public static string GetAndroidV1(string title, string message, bool silent, object payload = null) { var payloadJson = string.Empty; if (payload != null) { payloadJson = payload is string ? payload.ToString() : JsonSerializer.Serialize(payload); } return silent switch { false when payload == null => Android_Alert_v1.Replace("$(title)", title).Replace("$(message)", message), false => Android_Alert_Payload_v1.Replace("$(title)", title).Replace("$(message)", message).Replace("$(payload)", payloadJson), _ => Android_Silent_Payload_v1.Replace("$(payload)", payloadJson) }; } /// /// Erstellt eine Notification-Template für Ios /// /// Title /// Nachricht /// true wenn eine Silent-Message gesendet werden soll, false sonst /// Optional: Payload der mitgesendet werden soll /// Erstelltes Message-Template public static string GetIos(string title, string message, bool silent, object payload = null) { var payloadJson = string.Empty; if (payload != null) { payloadJson = payload is string ? payload.ToString() : JsonSerializer.Serialize(payload); if (payloadJson.StartsWith("{") && payloadJson.EndsWith("}")) { payloadJson = payloadJson.TrimStart('{'); payloadJson = payloadJson.TrimEnd('}'); } } return silent switch { false when payload == null => Ios_Alert.Replace("$(title)", title).Replace("$(message)", message), false => Ios_Alert_Payload.Replace("$(title)", title).Replace("$(message)", message).Replace("$(payload)", payloadJson), _ => Iso_Silent_Payload.Replace("$(payload)", payloadJson) }; } } }