FCM (Firebase Cloud Messaging) Push Notification with Asp.Net


I have already push the GCM message to google server using asp .net in following method,

GCM Push Notification with Asp.Net

Now i have planned upgrade to FCM method, anyone have idea about this or developing this in asp .net let me know..


Thank you for visiting the Q&A section on Magenaut. Please note that all the answers may not help you solve the issue immediately. So please treat them as advisements. If you found the post helpful (or not), leave a comment & I’ll get back to you as soon as possible.

Method 1

2019 Update

There’s a new .NET Admin SDK that allows you to send notifications from your server.
Install via Nuget

Install-Package FirebaseAdmin

You’ll then have to obtain the service account key by downloading it by following the instructions given here, and then reference it in your project. I’ve been able to send messages by initializing the client like this

using FirebaseAdmin;
using FirebaseAdmin.Messaging;
using Google.Apis.Auth.OAuth2;

public class MobileMessagingClient : IMobileMessagingClient
    private readonly FirebaseMessaging messaging;

    public MobileMessagingClient()
        var app = FirebaseApp.Create(new AppOptions() { Credential = GoogleCredential.FromFile("serviceAccountKey.json").CreateScoped("https://www.googleapis.com/auth/firebase.messaging")});           
        messaging = FirebaseMessaging.GetMessaging(app);

After initializing the app you are now able to create notifications and data messages and send them to the devices you’d like.

private Message CreateNotification(string title, string notificationBody, string token)
    return new Message()
        Token = token,
        Notification = new Notification()
            Body = notificationBody,
            Title = title

public async Task SendNotification(string token, string title, string body)
    var result = await messaging.SendAsync(CreateNotification(title, body, token)); 
    //do something with result

….. in your service collection you can then add it…

services.AddSingleton<IMobileMessagingClient, MobileMessagingClient >();

Method 2

C# Server Side Code For Firebase Cloud Messaging

using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Net;
using System.Text;
using System.Web;
using System.Web.Script.Serialization;

namespace Sch_WCFApplication
    public class PushNotification
        public PushNotification(Plobj obj)
                var applicationID = "AIza---------4GcVJj4dI";

                var senderId = "57-------55";

                string deviceId = "euxqdp------ioIdL87abVL";

                WebRequest tRequest = WebRequest.Create("https://fcm.googleapis.com/fcm/send");

                tRequest.Method = "post";

                tRequest.ContentType = "application/json";

                var data = new


                    to = deviceId,

                    notification = new


                        body = obj.Message,

                        title = obj.TagMsg,

                        icon = "myicon"


                var serializer = new JavaScriptSerializer();

                var json = serializer.Serialize(data);

                Byte[] byteArray = Encoding.UTF8.GetBytes(json);

                tRequest.Headers.Add(string.Format("Authorization: key={0}", applicationID));

                tRequest.Headers.Add(string.Format("Sender: id={0}", senderId));

                tRequest.ContentLength = byteArray.Length; 

                using (Stream dataStream = tRequest.GetRequestStream())

                    dataStream.Write(byteArray, 0, byteArray.Length);   

                    using (WebResponse tResponse = tRequest.GetResponse())

                        using (Stream dataStreamResponse = tResponse.GetResponseStream())

                            using (StreamReader tReader = new StreamReader(dataStreamResponse))

                                String sResponseFromServer = tReader.ReadToEnd();

                                string str = sResponseFromServer;


            catch (Exception ex)

                string str = ex.Message;




APIKey and senderId , You get is here———as follow(Below Images)
(go to your firebase App)

Step. 1

Step. 2

Step. 3

Method 3

 public class Notification
    private string serverKey = "kkkkk";
    private string senderId = "iiddddd";
    private string webAddr = "https://fcm.googleapis.com/fcm/send";

    public string SendNotification(string DeviceToken, string title ,string msg )
        var result = "-1";
        var httpWebRequest = (HttpWebRequest)WebRequest.Create(webAddr);
        httpWebRequest.ContentType = "application/json";
        httpWebRequest.Headers.Add(string.Format("Authorization: key={0}", serverKey));
        httpWebRequest.Headers.Add(string.Format("Sender: id={0}", senderId));
        httpWebRequest.Method = "POST";

        var payload = new
            to = DeviceToken,
            priority = "high",
            content_available = true,
            notification = new
                body = msg,
                title = title
        var serializer = new JavaScriptSerializer();
        using (var streamWriter = new StreamWriter(httpWebRequest.GetRequestStream()))
            string json = serializer.Serialize(payload);

        var httpResponse = (HttpWebResponse)httpWebRequest.GetResponse();
        using (var streamReader = new StreamReader(httpResponse.GetResponseStream()))
            result = streamReader.ReadToEnd();
        return result;

Method 4

To hit Firebase API we need some information from Firebase, we need the API URL (https://fcm.googleapis.com/fcm/send) and unique keys that identify our Firebase project for security reasons.

We can use this method to send notifications from .NET Core backend:

        public async Task<bool> SendNotificationAsync(string token, string title, string body)
        using (var client = new HttpClient())
            var firebaseOptionsServerId = _firebaseOptions.ServerApiKey;
            var firebaseOptionsSenderId = _firebaseOptions.SenderId;

            client.BaseAddress = new Uri("https://fcm.googleapis.com");
            client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
            client.DefaultRequestHeaders.TryAddWithoutValidation("Sender", $"id={firebaseOptionsSenderId}");

            var data = new
                to = token,
                notification = new
                    body = body,
                    title = title,
                priority = "high"

            var json = JsonConvert.SerializeObject(data);
            var httpContent = new StringContent(json, Encoding.UTF8, "application/json");

            var result = await _client.PostAsync("/fcm/send", httpContent);
            return result.StatusCode.Equals(HttpStatusCode.OK);

These parameters are:

  • token: string represents a FCM token provided by Firebase on each app-installation. This is going to be the list of app-installations that the notification is going to send.
  • title: It’s the bold section of notification.
  • body: It represents “Message text” field of the Firebase SDK, this is the message you want to send to the users.

To find your Sender ID and API key you have to:

  • Login to the Firebase Developer Console and go to your Dashboard
  • Click on the “gear” icon and access “project settings”
  • Go to the
    “Cloud Messaging Section” and you will have access to the sender ID
    and the API Key.
    enter image description here

Method 5

Here is my VbScript sample for who prefers vb:

//Create Json body
body=body & "{ ""notification"": {"
body=body & """title"": ""Your Title"","
body=body & """text"": ""Your Text"","
body=body & "},"
body=body & """to"" : ""target Token""}"

//Set Headers :Content Type and server key
set xmlhttp = server.Createobject("MSXML2.ServerXMLHTTP")
xmlhttp.Open "POST",posturl,false
xmlhttp.setRequestHeader "Content-Type", "application/json"
xmlhttp.setRequestHeader "Authorization", "Your Server key"

xmlhttp.send body
result= xmlhttp.responseText
//response.write result to check Firebase response
Set xmlhttp = nothing

Method 6


download this file from Firebase -> Settings -> Service accounts -> Firebase Admin SDK

FCM (Firebase Cloud Messaging) Push Notification with Asp.Net

Move the downloaded file to Your dotnet Core Root folder then change it’s name to key.json for example .

then add this code to your .csproj file: YourProjectName.csproj in your project root folder :

    <None Update="key.json">

then add this code to your Program.cs in Main function :

var defaultApp = FirebaseApp.Create(new AppOptions()
  Credential = 

Last thing is the code that will push notification :

public async Task SendNotificationAsync(string DeviceToken, string title ,string body){
 var message = new Message()
  Notification = new FirebaseAdmin.Messaging.Notification
     Title = title,
     Body = body
  Token = DeviceToken,
 var messaging = FirebaseMessaging.DefaultInstance;
 var result = await messaging.SendAsync(message);

Put it in any Controller then u can call it to send notification …

that is what i did to push notificaion and it is working very well and fast …

Method 7

Use CorePush lib

It’s very lightweight. I use it across all my projects to send Firebase Android and Apple iOS push notifications. Useful links:

  1. NuGet package
  2. Documentation

The interface is very simple and minimalistic:

Send APN message:

var apn = new ApnSender(settings, httpClient);
await apn.SendAsync(notification, deviceToken);

Send FCM message:

var fcm = new FcmSender(settings, httpClient);
await fcm.SendAsync(deviceToken, notification);

Method 8

I don’t believe there is any change in the way you are sending push notifications. In FCM also, you are going to make HTTP POST Request the same way you did for GCM:


{ "data": {
    "score": "5x1",
    "time": "15:10"
  "to" : "bk3RNwTe3H0:CI2k_HHwgIpoDKCIZvvDMExUdFQ3P1..."

Read about FCM Server for more information.

The only change I could see now, is the target Url. Period.

All methods was sourced from stackoverflow.com or stackexchange.com, is licensed under cc by-sa 2.5, cc by-sa 3.0 and cc by-sa 4.0

0 0 votes
Article Rating
Notify of

Inline Feedbacks
View all comments
Would love your thoughts, please comment.x