.net 如何使用C#创建推送通知(FCM)

h9vpoimq  于 2023-02-25  发布在  .NET
关注(0)|答案(2)|浏览(165)

我有一个用.NET内核编写的REST API,现在需要创建一个Push NotificationFirebase Cloud Messaging (FCM)。为了测试,我使用Firebase Console,但我需要通过编程完成。我已经通过谷歌浏览了Firebase的文档和一些示例,但我更困惑。
我认为通过一个普通的Http创建一个消息是可能的,但是有人能发布一个简单的工作示例吗?这样我就可以拿起它了,拜托?或者也许,我的理解是完全错误的?

ffscu2ro

ffscu2ro1#

有了.NET Core,您可以使用这个轻量级的library来发送FCM推送通知和APN HTTP/2推送通知:

Install-Package CorePush

然后是Firebase:

using (var fcm = new FirebaseSender(serverKey, senderId))
{
    await fcm.SendAsync(notification);
}

或APN:

using (var apn = new ApnSender(privateKey, keyId, teamId, appbundleId, server)) 
{
    await apn.SendAsync(deviceToken, notification);
}
hgc7kmma

hgc7kmma2#

有些人也喜欢这个问题,所以想到提供我实现的解决方案,认为它可能会帮助其他人。如果你有任何问题,请随时提问。

如何获取服务器密钥:这里是question link,它会有所帮助。
Firebase云消息传递文档可在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();
    }
}

相关问题