Client v5: BLE, BLE Hosting, HTTP, Jobs - Linux, MacOS, & Blazor Support! Full AOT, RX on BLE only & MANY other features! Check It Out
Native
Overview
Section titled “Overview”The default provider uses Firebase on Android and APNs on iOS directly. No additional NuGet package is needed beyond Shiny.Push.
services.AddPush<MyPushDelegate>();Firebase Messaging
Section titled “Firebase Messaging”Firebase Cloud Messaging can be used as a unified provider across both platforms.
NuGet: Shiny.Push.FirebaseMessaging
// Auto-config from google-services.jsonservices.AddPushFirebaseMessaging<MyPushDelegate>();Custom Provider
Section titled “Custom Provider”Create your own push provider by implementing IPushProvider.
public class MyPushProvider : IPushProvider{#if ANDROID public async Task<string> Register(string nativeToken) { // Register with your backend, return your provider token var providerToken = await MyBackend.RegisterToken(nativeToken); return providerToken; }#elif IOS public async Task<string> Register(NSData nativeToken) { var tokenString = nativeToken.ToPushTokenString(); var providerToken = await MyBackend.RegisterToken(tokenString); return providerToken; }#elif WINDOWS public async Task<string> Register(string nativeToken) { // nativeToken is the WNS channel URI var providerToken = await MyBackend.RegisterToken(nativeToken); return providerToken; }#endif
public async Task UnRegister() { await MyBackend.UnregisterToken(); }}Registration
Section titled “Registration”Tag the provider with [Singleton] from Shiny.Extensions.DependencyInjection (or register it manually for every interface) and call AddGeneratedServices():
services.AddPush<MyPushDelegate>();services.AddGeneratedServices(); // emits the registration for [Singleton] MyPushProviderIf you prefer explicit registration without the source generator:
services.AddSingleton<MyPushProvider>();services.AddSingleton<IPushProvider>(sp => sp.GetRequiredService<MyPushProvider>());