C# Firebase Admin SDK 推送通知

dea*_*lls 4 c# firebase firebase-cloud-messaging

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

这是我的 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);
        }

Run Code Online (Sandbox Code Playgroud)

小智 5

你遇到了死锁,因为 SendAsync 永远不会完成。如果您从 ui 线程调用,您需要考虑使用,ConfigureAwait(false) 因此您的代码片段将如下所示:

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);
    }
Run Code Online (Sandbox Code Playgroud)