Shiny.Push.AzureNotificationHubs
5.2.0
Prefix Reserved
dotnet add package Shiny.Push.AzureNotificationHubs --version 5.2.0
NuGet\Install-Package Shiny.Push.AzureNotificationHubs -Version 5.2.0
<PackageReference Include="Shiny.Push.AzureNotificationHubs" Version="5.2.0" />
<PackageVersion Include="Shiny.Push.AzureNotificationHubs" Version="5.2.0" />
<PackageReference Include="Shiny.Push.AzureNotificationHubs" />
paket add Shiny.Push.AzureNotificationHubs --version 5.2.0
#r "nuget: Shiny.Push.AzureNotificationHubs, 5.2.0"
#:package Shiny.Push.AzureNotificationHubs@5.2.0
#addin nuget:?package=Shiny.Push.AzureNotificationHubs&version=5.2.0
#tool nuget:?package=Shiny.Push.AzureNotificationHubs&version=5.2.0
Shiny Client for .NET
<img src="https://github.com/shinyorg/shiny/raw/master/art/logo.png" width="100" />
Shiny is a cross-platform framework designed to make working with device services and background processes easy, testable, and consistent while bringing things like dependency injection & logging in a structured way to your code!
Features
- Handles all of the cruft like Permissions, main thread traversal, persistent storage and app restarts
- Brings your infrastructure to the background
- Provides logging to ensure you know when your services fail in the background
- Gives a clean & testable API surface for your code
- Native AOT & trim-friendly across all modules
- Cross-platform: iOS, Android, Mac Catalyst, macOS, Windows, Linux, and Blazor WebAssembly (where the platform allows)
Modules
- Background Jobs - periodic background work backed by
BGTaskScheduler(iOS),WorkManager(Android), COM-activated background tasks (Windows), and an in-process managed runner for Linux/macOS/Blazor WASM - HTTP Transfers - resumable background uploads/downloads on
NSURLSession(iOS), anHttpClient-driven managed loop with Range-based resume (Android, Windows, Linux, macOS, .NET base), and Service Worker Background Sync (Blazor WASM). Pause/resume support - pause stops a transfer without cancelling it (downloads continue from where they left off, uploads restart). First-class Azure Blob Storage and AWS S3 (SigV4) request builders included - Data Sync - bidirectional JSON record sync over HTTP with the same platform tiers as HTTP Transfers: outbox + inbox on
NSURLSession(iOS/Mac Catalyst), Foreground Service + HttpClient (Android),HttpClient+ connectivity loop (Windows/Linux/macOS), and LocalStorage-backed HttpClient (Blazor WASM). Includes batched outbox, tombstones, conflict resolution, retry with exponential backoff, and AOT-safe serialization throughShiny.Json - BluetoothLE Client - scan, connect, GATT, and L2CAP CoC on iOS/macOS, Android, Windows, Linux (BlueZ), and Blazor WebAssembly (Web Bluetooth)
- BluetoothLE Hosting - GATT server, advertising, iBeacon broadcasting, and L2CAP CoC listeners on iOS/macOS, Android, Windows, and Linux (BlueZ AF_BLUETOOTH sockets)
- Locations - foreground/background GPS, geofence monitoring, and motion-activity recognition (CMMotionActivity / ActivityRecognition)
- Contacts - cross-platform device contact access with CRUD and LINQ queries (iOS/Android)
- Local Notifications - scheduled, repeating, and geofence-triggered notifications on iOS/macOS, Android, Windows, and Linux (
org.freedesktop.NotificationsD-Bus) - Push Notifications - native APNs/FCM, Firebase Cloud Messaging, Azure Notification Hubs, and Blazor (Web Push)
- Core - hosting, DI, key/value stores, object-store binding, lifecycle hooks, connectivity & battery monitoring, and the platform abstractions every Shiny module builds on
AI Tools
Optional *.Extensions.AI packages expose Shiny modules as Microsoft.Extensions.AI tool functions (AIFunctions) for LLM agents. You opt-in exactly which operations the model can see - a read/write allow-list you control on behalf of the agent (this is not an OS permission prompt; the underlying platform permissions must already be granted). Resolve the generated *AITools bundle from DI and pass .Tools to any IChatClient. All are AOT-compatible (hand-built schemas, no reflection).
- Shiny.Contacts.Extensions.AI -
AddContactsAITools(...)→search_contacts,get_contact, and (write)create_contact,update_contact,delete_contact - Shiny.Notifications.Extensions.AI -
AddNotificationAITools(...)→ reminder-framedlist_reminders, and (write)create_reminder(one-time or daily),cancel_reminder - Shiny.Locations.Extensions.AI -
AddLocationAITool()→ read-onlyget_current_location,get_distance_to,estimate_travel_time
builder.Services.AddContactStore();
builder.Services.AddContactsAITools(b => b.AddContacts(ContactAICapabilities.ReadWrite));
builder.Services.AddNotifications();
builder.Services.AddNotificationAITools(b => b.AddReminders(ReminderAICapabilities.ReadWrite));
builder.Services.AddGps();
builder.Services.AddLocationAITool();
// later, hand the tools to a chat client
var tools = sp.GetRequiredService<ContactAITools>().Tools;
var response = await chatClient.GetResponseAsync(messages, new ChatOptions { Tools = [.. tools] });
Links
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net10.0 is compatible. net10.0-android was computed. net10.0-android36.0 is compatible. net10.0-browser was computed. net10.0-ios was computed. net10.0-ios26.0 is compatible. net10.0-maccatalyst was computed. net10.0-maccatalyst26.0 is compatible. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. net10.0-windows10.0.19041 is compatible. |
-
net10.0
- Microsoft.Azure.NotificationHubs (>= 4.2.0)
- Microsoft.Extensions.DependencyInjection (>= 10.0.5)
- Microsoft.Extensions.Logging (>= 10.0.5)
- Shiny.Extensions.DependencyInjection (>= 5.1.1)
- Shiny.Extensions.Serialization (>= 5.1.1)
- Shiny.Extensions.Stores (>= 5.1.1)
- Shiny.Push (>= 5.2.0)
-
net10.0-android36.0
- Microsoft.Azure.NotificationHubs (>= 4.2.0)
- Microsoft.Extensions.DependencyInjection (>= 10.0.5)
- Microsoft.Extensions.Logging (>= 10.0.5)
- Shiny.Extensions.DependencyInjection (>= 5.1.1)
- Shiny.Extensions.Serialization (>= 5.1.1)
- Shiny.Extensions.Stores (>= 5.1.1)
- Shiny.Push (>= 5.2.0)
- Xamarin.AndroidX.Activity (>= 1.12.4.1)
- Xamarin.AndroidX.Core (>= 1.17.0.2)
- Xamarin.AndroidX.Fragment (>= 1.8.9.2)
- Xamarin.AndroidX.Lifecycle.Common (>= 2.10.0.2)
- Xamarin.AndroidX.Lifecycle.LiveData.Core (>= 2.10.0.2)
- Xamarin.AndroidX.Lifecycle.Process (>= 2.10.0.2)
- Xamarin.AndroidX.Lifecycle.Runtime (>= 2.10.0.2)
- Xamarin.AndroidX.Lifecycle.Runtime.Android (>= 2.10.0.2)
- Xamarin.AndroidX.Lifecycle.ViewModel (>= 2.10.0.2)
- Xamarin.AndroidX.Lifecycle.ViewModelSavedState (>= 2.10.0.2)
- Xamarin.AndroidX.Lifecycle.ViewModelSavedState.Android (>= 2.10.0.2)
- Xamarin.AndroidX.SavedState (>= 1.4.0.2)
- Xamarin.Firebase.Messaging (>= 125.0.1.2)
-
net10.0-ios26.0
- Microsoft.Azure.NotificationHubs (>= 4.2.0)
- Microsoft.Extensions.DependencyInjection (>= 10.0.5)
- Microsoft.Extensions.Logging (>= 10.0.5)
- Shiny.Extensions.DependencyInjection (>= 5.1.1)
- Shiny.Extensions.Serialization (>= 5.1.1)
- Shiny.Extensions.Stores (>= 5.1.1)
- Shiny.Push (>= 5.2.0)
-
net10.0-maccatalyst26.0
- Microsoft.Azure.NotificationHubs (>= 4.2.0)
- Microsoft.Extensions.DependencyInjection (>= 10.0.5)
- Microsoft.Extensions.Logging (>= 10.0.5)
- Shiny.Extensions.DependencyInjection (>= 5.1.1)
- Shiny.Extensions.Serialization (>= 5.1.1)
- Shiny.Extensions.Stores (>= 5.1.1)
- Shiny.Push (>= 5.2.0)
-
net10.0-windows10.0.19041
- Microsoft.Azure.NotificationHubs (>= 4.2.0)
- Microsoft.Extensions.DependencyInjection (>= 10.0.5)
- Microsoft.Extensions.Logging (>= 10.0.5)
- Shiny.Extensions.DependencyInjection (>= 5.1.1)
- Shiny.Extensions.Serialization (>= 5.1.1)
- Shiny.Extensions.Stores (>= 5.1.1)
- Shiny.Push (>= 5.2.0)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 5.2.0 | 0 | 7/6/2026 |
| 5.2.0-beta-0071 | 0 | 7/6/2026 |
| 5.1.1 | 51 | 7/1/2026 |
| 5.1.0 | 100 | 6/29/2026 |
| 5.0.1 | 95 | 6/29/2026 |
| 5.0.1-beta-0078 | 85 | 6/28/2026 |
| 5.0.1-beta-0072 | 91 | 6/27/2026 |
| 5.0.1-beta-0071 | 91 | 6/27/2026 |
| 5.0.0 | 124 | 6/20/2026 |
| 5.0.0-beta-0140 | 103 | 6/15/2026 |
| 5.0.0-beta-0138 | 92 | 6/15/2026 |
| 5.0.0-beta-0137 | 96 | 6/10/2026 |
| 5.0.0-beta-0136 | 95 | 6/9/2026 |
| 5.0.0-beta-0135 | 98 | 6/9/2026 |
| 5.0.0-beta-0134 | 95 | 6/9/2026 |
| 5.0.0-beta-0133 | 94 | 6/7/2026 |
| 5.0.0-beta-0132 | 98 | 6/6/2026 |
| 5.0.0-beta-0131 | 99 | 6/5/2026 |
| 5.0.0-beta-0130 | 98 | 6/5/2026 |
| 5.0.0-beta-0129 | 98 | 6/4/2026 |