I have a REST Api written in .NET Core, now has a requirement to create a Push Notification
to Firebase Cloud Messaging (FCM)
. For testing, am using the Firebase Console
but I need to get this done programtically. I have gone through the documentation of Firebase and some examples via Google but am more confused.
I think it is possible to create a message via a regular Http
but can someone post a simple working example so that I can pick it up, please? Or maybe, my understanding is totally wrong?
Access the device registration tokenOn initial startup of your app, the FCM SDK generates a registration token for the client app instance. If you want to target single devices or create device groups, you'll need to access this token by extending FirebaseMessagingService and overriding onNewToken .
Some people have also liked this question, so thought of providing the solution I implemented, thinking it may help others. Please feel free to ask questions, if you have any.
How to get the Server Key: Here is the question link which helps.
Firebase Cloud Messaging Documentation can be found here.
public class FirebaseNotificationModel
{
[JsonProperty(PropertyName = "to")]
public string To { get; set; }
[JsonProperty(PropertyName = "notification")]
public NotificationModel Notification { get; set; }
}
using System.Net.Http;
using System.Text;
public static async void Send(FirebaseNotificationModel firebaseModel)
{
HttpRequestMessage httpRequest = null;
HttpClient httpClient = null;
var authorizationKey = string.Format("key={0}", "YourFirebaseServerKey");
var jsonBody = SerializationHelper.SerializeObject(firebaseModel);
try
{
httpRequest = new HttpRequestMessage(HttpMethod.Post, "https://fcm.googleapis.com/fcm/send");
httpRequest.Headers.TryAddWithoutValidation("Authorization", authorizationKey);
httpRequest.Content = new StringContent(jsonBody, Encoding.UTF8, "application/json");
httpClient = new HttpClient();
using (await httpClient.SendAsync(httpRequest))
{
}
}
catch
{
throw;
}
finally
{
httpRequest.Dispose();
httpClient.Dispose();
}
}
With .NET Core you can use this lightweight library for FCM push notifications and APN HTTP/2 Push notifications:
Install-Package CorePush
And then for Firebase:
using (var fcm = new FcmSender(serverKey, senderId))
{
await fcm.SendAsync(deviceToken, notification);
}
Or APN:
using (var apn = new ApnSender(privateKey, keyId, teamId, appbundleId, server))
{
await apn.SendAsync(deviceToken, notification);
}
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With