【问题标题】:C# Firebase Admin SDK Push NotificationsC# Firebase Admin SDK 推送通知
【发布时间】:2020-06-28 11:52:24
【问题描述】:

我想向移动应用发送推送通知,因此我在我的 .Net 项目中安装了 Firebase Admin SDK。 我按照 Firebase 文档上的说明进行操作,但是当我从 SDK 调用 SendAsync 时,它只是挂起。知道为什么它会挂起吗?我是否缺少步骤?

这是我的 API 代码(请注意,这只是让它工作的演示代码):

public async void SendPushNotification()
        {
            FirebaseApp.Create(new AppOptions()
            {
                Credential = GoogleCredential.FromFile("path to json file"),
            });

            var registrationToken = "fqCo_-tXKvY:APA91bGQ47Q2egnqn4Ml...";

            var message = new FirebaseAdmin.Messaging.Message()
            {
                Token = registrationToken,
            };

            string response = await FirebaseMessaging.DefaultInstance.SendAsync(message);

            Console.WriteLine("Successfully sent message: " + response);
        }

【问题讨论】:

  • 从哪里获得注册令牌?

标签: c# firebase firebase-cloud-messaging


【解决方案1】:

您遇到了死锁,因为 SendAsync 永远不会完成。 如果您从 ui 线程调用,则需要考虑使用 ConfigureAwait(false) 所以你的 sn-p 如下所示:

public async void SendPushNotification()
    {
        FirebaseApp.Create(new AppOptions()
        {
            Credential = GoogleCredential.FromFile("path to json file"),
        });

        var registrationToken = "fqCo_-tXKvY:APA91bGQ47Q2egnqn4Ml...";

        var message = new FirebaseAdmin.Messaging.Message()
        {
            Token = registrationToken,
        };

        string response = await FirebaseMessaging.DefaultInstance.SendAsync(message).ConfigureAwait(false);

        Console.WriteLine("Successfully sent message: " + response);
    }

【讨论】:

  • 这对我不起作用。我从来没有到达成功的写作线。
  • 你设置了你的registrationToken和凭证文件吗 p.s 我已经安装了以下包https://nugetmusthaves.com/Package/FirebaseAdmin version 1.13.0
【解决方案2】:

firebaseAdmin 消息在 .net 库中引发了一个令牌错误,因此我使用 Postman 进行了测试,并且我能够发送通知,并且我看到 postman 为 Resharper 库生成了一个代码,并且易于安装和使用,最好用Json序列化消息并作为参数发送

using Firebase.Auth;
using FirebaseAdmin;
using FirebaseAdmin.Auth;
using Google.Apis.Auth.OAuth2;
using System;
using System.Text;
using System.Collections.Generic;
using System.Linq;
using FirebaseAuth = FirebaseAdmin.Auth.FirebaseAuth;
using FirebaseAdmin.Messaging;
using RestSharp;
using Newtonsoft.Json;

namespace messaging
{
    class Program
    {
        static async System.Threading.Tasks.Task Main(string[] args)
        {

            string token = "dtPMeTshqr??????????????";


            var data = new
            {
                to = token,
                notification = new
                {
                    body = "Nueva notificacion de prueba",
                    title = "Notificacion de prueba",
                },
                priority = "high"
            };

            var json = JsonConvert.SerializeObject(data);

            Sendmessage(json);

        }

        private static string Sendmessage(string json)
        {
            var client = new RestClient("https://fcm.googleapis.com/fcm/send");
            client.Timeout = -1;
            var request = new RestRequest(Method.POST);
            request.AddHeader("Authorization", "key=AAAAexjc2Qg:APx??????????????");
            request.AddHeader("Content-Type", "application/json");
            request.AddParameter("application/json", json, ParameterType.RequestBody);
            IRestResponse response = client.Execute(request);
            Console.WriteLine(response.Content);
            return response.Content;
        } 
    }
}

【讨论】:

  • 如何使用 admin SDK 创建一个 firebase 令牌?我正在尝试在 asp.net MVC 中实现推送通知。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-02-01
  • 2016-09-26
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多