Push-уведомление из веб-данных в мобильное приложение с использованием FCM - PullRequest
0 голосов
/ 28 января 2019

Итак, я уже настроил проект и даже попытался протестировать его, добавив образец уведомления из Cloud Messaging и получив это уведомление в моем эмуляторе Android.

enter image description here

Однако, когда в Интернете происходят изменения, мне нужно отправить их на мобильный.Поэтому я попробовал этот код в Интернете:

public void PushNotificationToFCM()
        {
            try
            {
                var applicationID = "AIzaSyDaWwl..........";
                var senderId = "487....";
                string deviceId = "1:487565223284:android:a3f0953e5fbdd790";
                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 = "sending to..",
                        title = "title-----"
                    }
                };
                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;
            }
        }

Ответ:

{"multicast_id":7985385082196953522,"success":0,"failure":1,"canonical_ids":0,"results":[{"error":"InvalidRegistration"}]}

Пожалуйста, помогите мне.Спасибо.

1 Ответ

0 голосов
/ 28 января 2019

Я бы посоветовал вам проверить это удивительное руководство Нико Боноро на Medium, которое объясняет все, что вам нужно сделать, шаг за шагом, чтобы настроить firebase с бэкэндом .Net

Создать статический классВызванный PushNotificationLogic.cs с этим методом:

Добавьте статический метод с именем SendPushNotifications, где эти параметры:

  • deviceTokens: массив строк, каждая строка представляет предоставленный токен FCMFirebase на каждой установке приложения.Это будет список установок приложений, которые будет отправлено уведомлением.
  • title: это выделенный жирным шрифтом раздел уведомления.
  • body: представляет поле «Текст сообщения»Firebase SDK - это сообщение, которое вы хотите отправить пользователям.
  • данные: существует динамический объект, он может быть любым, потому что этот объект будет использоваться в качестве дополнительной информации, которую вы хотитеотправить в приложение, это как скрытая информация.Например, действие, которое вы хотите выполнить, когда пользователь нажимает на уведомление или идентификатор какого-либо продукта.

Для метода я собираюсь предположить, что все параметры верны без неверных значений (вы можетедобавить все проверки, которые вы хотите).Первое, что нам нужно сделать, это создать объект со всеми данными, которые нам нужно отправить в API.

Добавьте два класса следующим образом:

public class Message
{
  public string[] registration_ids { get; set; }
  public Notification notification { get; set; }
  public object data { get; set; }
}
  public class Notification
{
   public string title { get; set; }
   public string text { get; set; }
}

Затем просто создайте новыйобъект типа «Сообщение» и сериализовать его, как я это сделал здесь:

var messageInformation = new Message()
{
   notification = new Notification()
  {
    title = title,
    text = body
  },
  data = data,
  registration_ids = deviceTokens
 };
 //Object to JSON STRUCTURE => using Newtonsoft.Json;
 string jsonMessage = JsonConvert.SerializeObject(messageInformation);

Примечание: Вам потребуется NewtonSoft.Json , добавленный в ваш проект

Теперь нам просто нужен запрос к Firebase API, и все готово.Запрос должен быть как «Post» метод к Firebase API-URL, мы должны добавить заголовок «Authorization» и использовать значение типа «key = {Your_Server_Key}».Затем мы добавляем контент (jsonMessage), и вы готовы использовать API.

// Create request to Firebase API
var request = new HttpRequestMessage(HttpMethod.Post, FireBasePushNotificationsURL);
request.Headers.TryAddWithoutValidation(“Authorization”, “key=” + ServerKey);
request.Content = new StringContent(jsonMessage, Encoding.UTF8, “application/json”);
HttpResponseMessage result;
using (var client = new HttpClient())
{
   result = await client.SendAsync(request);
}

Удачи, не стесняйтесь возвращаться в случае запросов.

...