Skip to content

Repository files navigation

NuGetAzure DevOps builds

Softeq.NetKit.Services.PushNotifications

Softeq.NetKit.Services.PushNotifications component simplifies the process of bringing support for Push notificaitons to your project. It's build around Azure Notification Hub and supports the following push notification platforms:

  1. Android
  2. iOS

Getting Started

Install

  1. Check-out master branch from repository;
  2. Add a reference to Softeq.NetKit.Services.PushNotifications into target project.

Configure Azure Notification Hub

Add Notification Hub settings to your appsettings.json file:

"Notifications": {
"Push": {
"NotificationHub": {
"ConnectionString": "CONN_STR",
"HubName": "HUB_NAME"
}
}
}

Configure DI Container

Softeq.NetKit.Services.PushNotifications comes with Autofac Module to register its dependencies. If Autofac is used on your project, add PushNotificationsModule to the container:

builder.RegisterModule(newSofteq.NetKit.Services.PushNotifications.PushNotificationsModule());

If different IoC container is used or manual registration is required, the following registrations need to be performed:

  1. Set up and register NotificationHub configuration AzureNotificationHubConfiguration in your DI container
builder.Register(context =>{varconfig=context.Resolve<IConfiguration>();returnnewAzureNotificationHubConfiguration(config["Notifications:Push:NotificationHub:ConnectionString"],config["Notifications:Push:NotificationHub:HubName"]);}).SingleInstance();
  1. Register IPushNotificationSubscriber implementation
builder.RegisterType<AzureNotificationHubSender>().As<IPushNotificationSubscriber>();
  1. Register IPushNotificationSender implementation
builder.RegisterType<AzureNotificationHubSubscriber>().As<IPushNotificationSender>();

Develop

Softeq.NetKit.Services.PushNotifications comes with PushNotificationMessage that represents a simple push message with the following structure;

publicclassPushNotificationMessage{[JsonIgnore]publicintNotificationType{get;set;}[JsonIgnore]publicstringTitle{get;set;}=string.Empty;[JsonIgnore]publicstringBody{get;set;}=string.Empty;[JsonIgnore]publicintBadge{get;set;}=0;[JsonIgnore]publicstringSound{get;set;}="default";publicvirtualstringGetData(){returnJsonConvert.SerializeObject(this);}}

If an additional properties are required to be sent with push, create custom push message class and inherit from PushNotificationMessage

publicclassArticleLikedPush:PushNotificationMessage{publicArticleLikedPush(){Title="Article liked.";Body="Someone liked your article. Check it out!";NotificationType=(int)PushNotificationType.ArticleLiked;}[JsonProperty("articleId")]publicGuidArticleId{get;set;}[JsonProperty("newsHeader")]publicstringNewsHeader{get;set;}}

Localization

Project supports client-side message localization by providing platform-specific localization keys:

  1. For iOS - loc-key \ loc-args and title-loc-key \ title-loc-args
  2. For Android - body_loc_key \ body_loc_args and title_loc_key \ title_loc_args

To enable client-size localization for a particular message, BodyLocalizationKey and TitleLocalizationKey properties need to be initialized with valid resource names, available in client:

publicclassArticleLikedPush:PushNotificationMessage{privatestaticstring_bodyLocalizationKey="article_Liked_body";privatestaticstring_titleLocalizationKey="article_Liked_title";publicArticleLikedPush(){BodyLocalizationKey=_bodyLocalizationKey;TitleLocalizationKey=_titleLocalizationKey;NotificationType=(int)PushNotificationType.ArticleLiked;}[JsonProperty("articleId")]publicGuidArticleId{get;set;}[JsonProperty("newsHeader")]publicstringNewsHeader{get;set;}[JsonProperty("userIdWhoLikedArticle")]publicstringUserIdWhoLikedArticle{get;set;}[JsonIgnore][LocalizationParameter(LocalizationTarget.Title,1)][LocalizationParameter(LocalizationTarget.Body,1)]publicstringUserNameWhoLikedArticle{get;set;}}

Use

Inject IPushNotificationSubscriber into your service to subscribe or unsubscribe user device from push notifications.

Inject IPushNotificationSender into your service to send push notifications to registered devices.

About

This project is maintained by Softeq Development Corp.

We specialize in .NET core applications.

Contributing

We welcome any contributions.

License

The Query Utils project is available for free use, as described by the LICENSE (MIT).

About

No description or website provided.

Topics

Resources

Stars

2 stars

Watchers

11 watching

Forks

Releases

Packages

Used by

Contributors

Languages