d0972058277 / KnstNotify

A sender for Apple Push Notification(APN) and Firebase Cloud Message(FCM)

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Build Status Board Status Nuget Nuget (with prereleases)

ICON

KnstNotify

A sender for Apple Push Notification(APN) and Firebase Cloud Message(FCM).

Reference: CorePush


Quick Start

APN

Register in Startup.cs ConfigureServices, for example :

services.AddApnConfig(new ApnConfig("{P8-PrivateKey}", "{P8-PrivateKeyId}", "{TeamId}", "{Topic}", ApnServerType.Development));
services.AddKnstNotify();

P8-PrivateKey(without newline) : P8_PrivateKey

Create an apn payload : ApnPayload

ApnPayload apnPayload = new ApnPayload();
apnPayload.DeviceToken = "{deviceToken}";
apnPayload.Aps.Badge = 1;
apnPayload.Aps.Alert.Title = "title";
apnPayload.Aps.Alert.Subtitle = "subtitle";
apnPayload.Aps.Alert.Body = "body";
apnPayload.Aps.Sound = "default";
apnPayload.Aps.Add("Key1", "Value1");
apnPayload.Aps["Key2"] = "Value2";

Send apn payload :

IApnSender apnSender = provider.GetRequiredService<IApnSender>();
ApnResult apnResult = await apnSender.SendAsync(apnPayload);

FCM

Register in Startup.cs ConfigureServices, for example :

services.AddFcmConfig(new FcmConfig("{ServerKey}", HostEnvironment.IsDevelopment()));
// or
services.AddFcmConfig(new FcmConfig("{ServerKey}", "{SenderId}", HostEnvironment.IsDevelopment()));
services.AddKnstNotify();

Create an fcm payload : FcmPayload

FcmPayload fcmPayload = new FcmPayload()
{
    Data = new Dictionary<string, object>(),
    Notification = new Dictionary<string, object>()
};
fcmPayload.To = "{deviceToken}";
fcmPayload.Notification.Add("title", "title");
fcmPayload.Notification.Add("body", "body");
fcmPayload.Data.Add("Key1", "Value1");
fcmPayload.Data["Key2"] = "Value2";

Send fcm payload :

IFcmSender fcmSender = provider.GetRequiredService<IFcmSender>();
FcmResult fcmResult = await fcmSender.SendAsync(fcmPayload);

Multi Notifications

100 tokens for example :

IEnumerable<string> tokens = new string[100];

APN

IEnumerable<ApnPayload> apnPayloads = tokens.Select(token => {
    ApnPayload apnPayload = new ApnPayload();
    apnPayload.DeviceToken = token;
    apnPayload.Aps.Badge = 1;
    apnPayload.Aps.Alert.Title = "title";
    apnPayload.Aps.Alert.Subtitle = "subtitle";
    apnPayload.Aps.Alert.Body = "body";
    apnPayload.Aps.Sound = "default";
    apnPayload.Aps.Add("Key1", "Value1");
    apnPayload.Aps["Key2"] = "Value2";
    return apnPayload;
});
IEnumerable<ApnResult> apnResults = await apnSender.SendAsync(apnPayloads);

FCM

IEnumerable<FcmPayload> fcmPayloads = tokens.Select(token =>
{
    FcmPayload fcmPayload = new FcmPayload()
    {
        Data = new Dictionary<string, object>(),
        Notification = new Dictionary<string, object>()
    };
    fcmPayload.To = token;
    fcmPayload.Notification.Add("title", "title");
    fcmPayload.Notification.Add("body", "body");
    fcmPayload.Data.Add("Key1", "Value1");
    fcmPayload.Data["Key2"] = "Value2";
    return fcmPayload;
});
IEnumerable<FcmResult> fcmResults = await fcmSender.SendAsync(fcmPayloads);

Support Multi Configs

APN Example :

// In Startup.cs ConfigureServices
services.AddApnConfig(new ApnConfig("{P8-PrivateKey-1}", "{P8-PrivateKeyId-1}", "{TeamId-1}", "{Topic-1}", HostEnvironment.IsDevelopment() ? ApnServerType.Development : ApnServerType.Production){ Name = "Config1" });
services.AddApnConfig(new ApnConfig("{P8-PrivateKey-2}", "{P8-PrivateKeyId-2}", "{TeamId-2}", "{Topic-2}", HostEnvironment.IsDevelopment() ? ApnServerType.Development : ApnServerType.Production){ Name = "Config2" });
services.AddKnstNotify();

// Usage
IEnumerable<ApnResult> apnResults = await apnSender.SendAsync(apnPayloads, sender => sender.Configs.Single(x => x.Name == "Config1"));

FCM Example :

// In Startup.cs ConfigureServices
services.AddFcmConfig(new FcmConfig("{ServerKey-1}"){ Name = "Config1" }, HostEnvironment.IsDevelopment());
services.AddFcmConfig(new FcmConfig("{ServerKey-2}"){ Name = "Config2" }, HostEnvironment.IsDevelopment());
services.AddKnstNotify();

// Usage
IEnumerable<FcmResult> fcmResults = await fcmSender.SendAsync(fcmPayloads, sender => sender.Configs.Single(x => x.Name == "Config1"));

About

A sender for Apple Push Notification(APN) and Firebase Cloud Message(FCM)


Languages

Language:C# 100.0%