Firebase Cloud Messaging (FCM) in .NET (C#) (edit)
Introduction To Firebase Cloud Messaging (FCM)
https://www.c-sharpcorner.com/article/introduction-to-firebase-cloud-messaging-fcm/
Snippet
Snippet
using System; using System.IO; using System.Net; using System.Text; using System.Threading.Tasks; using System.Web.Script.Serialization; namespace Fago.FCM { class Program { /// <summary> /// https://www.c-sharpcorner.com/article/introduction-to-firebase-cloud-messaging-fcm/ /// </summary> /// <param name="args"></param> static void Main(string[] args) { Console.WriteLine("Started."); var result = (new FCMPushNotification()).SendNotification( _title: "0982411958" , _message: "Anh Manh ban Notification. Neu nhan duoc thi alo cho anh nhe!" , _topic: "OK" , deviceId: MySecretKeys.DeviceToken ); Console.WriteLine("Finished."); Console.ReadKey(); } } public static class MySecretKeys { public static string ServerKey = "YourServerKey"; public static string DeviceToken = "YourDeviceToken"; public static string SenderId = "YourSenderId"; } public class FCMPushNotification { public FCMPushNotification() { // TODO: Add constructor logic here } public bool Successful { get; set; } public string Response { get; set; } public Exception Error { get; set; } public FCMPushNotification SendNotification(string _title, string _message, string _topic, string deviceId) { FCMPushNotification result = new FCMPushNotification(); try { result.Successful = true; result.Error = null; // var value = message; string serverKey = MySecretKeys.ServerKey; //"Your server key"; string senderId = MySecretKeys.SenderId; //"your sender id"; var requestUri = "https://fcm.googleapis.com/fcm/send"; WebRequest webRequest = WebRequest.Create(requestUri); webRequest.Method = "POST"; webRequest.Headers.Add(string.Format("Authorization: key={0}", serverKey)); webRequest.Headers.Add(string.Format("Sender: id={0}", senderId)); webRequest.ContentType = "application/json"; var data = new { to = deviceId, // this if you want to test for single device // to = "/topics/" + _topic, // this is for topic priority = "high", notification = new { title = _title, body = _message, show_in_foreground = "True", icon = "myicon" } }; var serializer = new JavaScriptSerializer(); var json = serializer.Serialize(data); Byte[] byteArray = Encoding.UTF8.GetBytes(json); webRequest.ContentLength = byteArray.Length; using (Stream dataStream = webRequest.GetRequestStream()) { dataStream.Write(byteArray, 0, byteArray.Length); using (WebResponse webResponse = webRequest.GetResponse()) { using (Stream dataStreamResponse = webResponse.GetResponseStream()) { using (StreamReader tReader = new StreamReader(dataStreamResponse)) { String sResponseFromServer = tReader.ReadToEnd(); result.Response = sResponseFromServer; } } } } } catch (Exception ex) { result.Successful = false; result.Response = null; result.Error = ex; } return result; } } }