Подтвердить что ты не робот

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

FCM

Я уже отправил сообщение GCM на сервер google с помощью asp .net в следующем методе,

Уведомление GCM Push с Asp.Net

Теперь я планировал обновление до FCM метода, у кого есть идея об этом или разработка этого в asp .net, дайте мне знать..

4b9b3361

Ответ 1

С# Кодовый код сервера Для Firebase Облачные сообщения

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)
        {
            try
            {    
                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 и senderId, вы получаете здесь --------- следующим образом (ниже изображений) (перейдите в ваше приложение Firebase)

Шаг 1

Шаг 2

Шаг 3

Ответ 2

 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);
            streamWriter.Write(json);
            streamWriter.Flush();
        }

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

Ответ 3

2019 Обновление

Там новый .NET Admin SDK, который позволяет отправлять уведомления с вашего сервера. Установить через Nuget

Install-Package FirebaseAdmin

Затем вам необходимо получить ключ учетной записи службы, загрузив его, следуя приведенным здесь инструкциям, а затем сослаться на него в своем проекте. Я был в состоянии отправлять сообщения, инициализируя клиента, как это

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);
    }
    //...          
}

После инициализации приложения вы можете создавать уведомления и сообщения с данными и отправлять их на нужные вам устройства.

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
}

..... в свою коллекцию услуг вы можете добавить его...

services.AddSingleton<IMobileMessagingClient, MobileMessagingClient >();

Ответ 4

Вот мой пример VbScript для тех, кто предпочитает vb:

//Create Json body
posturl="https://fcm.googleapis.com/fcm/send"
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

Ответ 5

Я не верю, что есть какие-то изменения в способах отправки push-уведомлений. В FCM также вы будете делать HTTP POST Request так же, как и для GCM:

https://fcm.googleapis.com/fcm/send
Content-Type:application/json
Authorization:key=AIzaSyZ-1u...0GBYzPu7Udno5aA

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

Подробнее о FCM Server для получения дополнительной информации.

Единственное изменение, которое я мог видеть сейчас, - это целевой URL. Период.

Ответ 6

Чтобы попасть в Firebase API, нам нужна некоторая информация из Firebase, нам нужен URL-адрес API (https://fcm.googleapis.com/fcm/send) и уникальные ключи, которые идентифицируют наш проект Firebase по соображениям безопасности.

Мы можем использовать этот метод для отправки уведомлений из бэкэнда .NET Core:

        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("Authorization",
                $"key={firebaseOptionsServerId}");
            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);
        }
    }

Эти параметры:

  • token: string представляет токен FCM, предоставляемый Firebase для каждой установки приложения. Это будет список приложений-установок, которые отправит уведомление.
  • title: Это смелый раздел уведомлений.
  • Тело: представляет поле "Текст сообщения" в Firebase SDK, это сообщение, которое вы хотите отправить пользователям.

Чтобы найти свой идентификатор отправителя и ключ API, вам необходимо:

  • Войдите в консоль разработчика Firebase и перейдите на панель инструментов
  • Нажмите на значок "шестеренка" и откройте "Настройки проекта"
  • Перейдите в раздел "Облачные сообщения", и у вас будет доступ к идентификатору отправителя и ключу API. enter image description here