Skip to content
Client v5: BLE, BLE Hosting, HTTP, Jobs - Linux, MacOS, & Blazor Support! Full AOT, RX on BLE only & MANY other features! Power up!

Push (Server) Releases

Feature

Initial release — provider-agnostic server-side push core: IPushManager orchestrator, IPushProvider transport seam, IPushRepository persistence, IPushInterceptor pipeline, structured PushFilter targeting, rich PushNotification model, automatic dead-token pruning + token rotation, bounded-concurrency dispatch, and an in-memory repository + debug provider. AOT/trim-safe.

Feature

One package, four transports — APNs, FCM, Web Push and WNS all ship inside Shiny.Extensions.Push; there are no separate *.Apns / *.Fcm / *.WebPush / *.Wns packages. Each keeps its own namespace (Shiny.Extensions.Push.Apns / .Fcm / .WebPush / .Wns) and stays opt-in via AddApns / AddFcm / AddWebPush / AddWns, so you only pay for what you register. Shiny.Extensions.Push.DocumentDb stays a separate package (it pulls a third-party dependency). The implementation types you don’t inject directly (PushManager, InMemoryPushRepository, DebugPushProvider, PushMetrics) live in the Shiny.Extensions.Push.Infrastructure namespace — resolve the interfaces from the root namespace; you only need the Infrastructure import to name a concrete type, e.g. AddProvider<DebugPushProvider>().

Feature

Direct APNs provider — HTTP/2 with token-based .p8 / ES256 JWT auth (no FCM dependency), per-registration sandbox/production, cached provider JWT, pooled HTTP/2 connection, Apple-specific payload options, and multi-app keyed registration via AddApns("key", …) + AppId.

Feature

WNS / Windows provider — delivers to Windows devices via WNS using the modern Windows App SDK / Microsoft Entra (Azure AD) auth model (AddWns with TenantId / ClientId / ClientSecret; OAuth2 client-credentials token, cached). Sends a ToastGeneric toast by default (or a raw/tile/badge payload via WindowsPushOptions) to the channel URI, maps 410/404 to dead-token pruning and 406/429 to rate-limited, and supports multi-app keyed registration.

Feature

Shiny.DocumentDb persistence (Shiny.Extensions.Push.DocumentDb) — IPushRepository over any DocumentDb backend with O(1) token-keyed writes; SQLite integration-tested.

Feature

MetricsSystem.Diagnostics.Metrics counters (push.notifications.sent/.failed/.skipped, push.tokens.pruned) and a push.send.duration histogram under the meter Shiny.Extensions.Push, tagged by platform/provider/status. OpenTelemetry-ready.

Feature

Provider batching / FCM multicast — a new optional IPushBatchProvider capability lets a transport deliver one notification to many devices in a single call. FcmProvider implements it (up to 500 devices per multipart /batch request), so broadcasts and topic fan-out use far fewer round trips. Enabled by default (PushManagerOptions.EnableBatching); devices are grouped by the identical notification instance, so per-device localization falls back to per-device sends. Per-device pruning, token rotation, metrics, and OnSent/OnFailed are all preserved.