Client Release
4.0.0 - TBD 2024
Core
-
BREAKING EnhancementShiny will now only target .NET 8 or higher
Push
-
Enhancement iOSYou can now IFDEF IOS to get an AppleNotification that contains the raw NSDictionary
-
Enhancement iOSWe now maintain our own Firebase FOCUSED (slim) binding that is used by Shiny.Push.FirebaseMessaging
Locations
-
FixThe base GpsDelegate calculations could receive a batch and trigger multiple calculations. This has been made into a synchronized operation
PLANNED
Locations
-
Enhancement iOSGPS background will now request background permission right away
Local Notifications
-
BREAKING EnhancementRequestAccess & RequestRequiredAccess(Notification) now return a NotificationAccessState which includes states for all the various permissions needed for a notification
-
EnhancementINotificationManager.GetCurrentAccess added which allows you to get current permission set without requesting access from user
-
BREAKING Enhancement iOSIAppleNotificationManager now allows more ways to control the native platform
3.3.3 - April 8, 2024
Push
-
Fix AndroidOnEntry intent action was not being defaulted if not set
-
Enhancement AndroidOnReceived now sends an AndroidPushNotification which gives you access to the native message as well as helper methods to send the notification if in the foreground
3.3.2 - March 29, 2024
Push
-
Enhancement AndroidAbility to set a custom push intent instead of the Shiny static string
-
EnhancementEnsure OnRegistered is always called
3.3.1 - March 26, 2024
Push
-
Fix AndroidIPushDelegate.OnRegistered was being called twice during IPushManager.RequestAccess calls
-
Fix AndroidIPushDelegate.OnRegistered was not passing provider token
3.3.0 - March 18, 2024
Core
-
FixObservableList index out of range
HTTP Transfers
-
Enhancement iOSAllow fine tuned control of the nsurlsessionconfiguration and the mutable native request on iOS via implementing (& registering) INativeConfigurator
BluetoothLE
-
Fix AndroidIBleDelegate now reports adapter state properly
-
Fix AndroidUnsubscribing from a connection may be temporarily unstable if sub/unsub is performed rapidly
-
Fix AndroidReduce logging severity for characteristic events
-
FixCharacteristic extension (GetAllCharacteristics) was only returning characteristics from last service
Local Notifications
Push
-
BREAKING EnhancementPushDelegate now contains an OnUnRegistered event
-
BREAKING EnhancementPushDelegate.OnTokenRefreshed has been renamed to OnNewToken to be more concise as to its purpose
-
Enhancement AndroidFirebase will not attempt to initialize if it done by other libraries like Firebase Crashlytics
-
EnhancementMicrosoft.Azure.NotificationHubs updated to 4.2.0 for FCMv1 parameter which is set as default now
-
EnhancementIPushManager now access NativeRegistrationToken which is useful for debugging purposes
Speech Recognition
-
BREAKING EnhancementThis module is now deprecated since Community Toolkit also has an offering in this space
AppCenter Logging
-
BREAKING EnhancementAppCenter has officially announced they are shutting down in 2025, so this library has been removed
3.2.4 - February 3, 2024
Push
-
Enhancement iOSIPushManager.RequestAccess now return AccessState.Unsupported on the simulator instead of letting an exception be thrown
-
EnhancementOld extensions for tags added back to IPushManager
3.2.3 - January 18, 2024
HTTP Transfers
-
Fix AndroidEnsure HTTP transfer foreground service does start multiple times
-
Fix AndroidCheck for the presence of FOREGROUND_SERVICE_DATA_SYNC on API 34
Push
-
Enhancement AndroidAbility to configure intent action during registration
3.2.2 - January 3, 2024
Locations
-
Enhancement AndroidReplace deprecated location request used in Android GPS request
Local Notifications
-
FixCrash tapping local notification on iOS earlier than 16 when accessing FilterCriteria
Push - Azure Notification Hubs
3.2.1 - December 19, 2023
Core
Enhancement Android
Use ServiceCompat to start and stop android foreground service
Locations
Fix Android
Ensure post_notifications permissions is also requested
Configuration
Enhancement
You can now pass environment variable to configuration that will allow to use file name likes appsettings.apple.debug.json
AppCenter Logging
Enhancement
Support for scopes
3.2.0 - December 8, 2023
Core
BREAKING Enhancement
Moving from .NET 7 to .NET 8
BREAKING Enhancement
Target moved from monoandroid 12 to monoandroid 13 classic
Enhancement
BLE, BLE Hosting, GPS, & Geofencing managers now allow you to check current permissions without requesting
Locations
Fix Android
GPS won’t always auto-restart post reboot
BLE Hosting
Fix Android
Managed BLE Services won’t always auto-restart post reboot
3.1.2 - November 7, 2023
Core
Enhancement Android
No longer emits notification for “foreground” service on older Android versions
Local Notifications
Enhancement Android
Using AndroidNotification, you can now set the android specific Category
Jobs
Fix
Base Job was not calculating runtime difference properly
3.1.1 - November 1, 2023
Locations
Fix Android
GPS Foreground Service start/stop fix
Local Notifications
Fix Android
Listen to activity.OnCreate intents
3.1.0 - October 26, 2023
Core
Enhancement Android
Android OnCreate events are now hookable through standard lifecycle interfaces
Fix
Connectivity.WhenInternetStatusChanged will now prevent repeated firing if the value hasn’t changed
HTTP Transfers
Fix Android
More aggressive retrying of transfers in queue
Fix Android
Appropriate amount of wizardary applied to remove foreground service notifications
Push
Enhancement iOS
IPushDelegate can now add IApplePushDelegate on Apple platforms to manage certain specific return values (UIBackgroundFetchResult & UIPresentationOptions) - Example below
Fix Android
OnEntry now responds to OnCreate for new activities
3.0.1 - September 19, 2023
Core
Fix
Race condition when subscribed to ShinySubject based subjects (HTTP Transfers)
Push
Fix iOS
Provider push token is now returned by PushManager.RequestAccess instead of native token
3.0.0 - September 5, 2023
MAUI
- Shiny.Hosting.Maui initial integration package created (Example how to setup shown below)
Core
BREAKING
Don’t use the Shiny package any longer. It contains all of the source generator stuff that is no longer needed as part of v3.
BREAKING
IShinyStartup is gone - we now have a new HostBuilder pattern to allow classic to align with MAUI/NET6. Use extensions methods to build on this for classic/non-MAUI setups
BREAKING
IShinyModule is gone - use extensions methods instead
Enhancement
IShinyStartupTask and INotifyPropertyChanged persistent services are now registered using the service collection extension .AddShinyService during your bootstrapping
Enhancement
New hosting model that is meant to carry Shiny forward to other platforms and improve on the original ShinyHost model. It also allows us to move to other platforms outside of MAUI
Enhancement
New internal lifecycle processor
Enhancement
Any Shiny library that uses an Android foreground service (Beacon Monitoring, GPS, HTTP Transfers) now has a new mechanism that allows for FULL control over the persistent notification
Enhancement
Repositories and other “fatty” code has been moved out of Shiny.Core where possible
Configuration
- Configuration is now part of the core library
EnhancementNow loads platform specific json assets like appsettings.android.json, appsettings.ios.json, appsettings.maccatalyst.json, & appsettings.apple.json
Notifications
Enhancement Android
Android 13 Support for new POST_NOTIFICATION permissions
Enhancement
OS specific configuration for Android and iOS
Enhancement
Ability to customize actual native notification before it is sent/queued
Enhancement
Improved sound customization via new channel flag - Channel.Sound = ChannelSound.Custom|High|Default|None
Push
Enhancement Android
Android 13 Support for new POST_NOTIFICATION permissions
Enhancement
Now works on new xplat lifecycle management from Core
Enhancement
nternally rewritten to make architecture easier going forward - firebase, azure, etc all become plugins on top of native instead of full implementations
Locations
Enhancement
You can now control location manager properties like ActivityType and ShowsBackgroundLocationIndicator via AppleLocationConfiguration service
Enhancement Android
To configure the foreground service notification, your IGpsDelegate can also implement IAndroidForegroundServiceDelegate with ANDROID preprocessor directives
BluetoothLE
Enhancement Android
RequestAccess(bool connect) now allows you to additionally request access to GATT connections (defaults to true). This allows Shiny to use Android API 31 properly. It will always ask for scan permissions.
BREAKING Android
Adapter control is no longer support through the Shiny API, but you do have raw access to the native adapter if needed
BREAKING
Managed scan now require you to set scan configuration values in Start instead of the constructor & property setters
BREAKING
The API has been simplified and no longer requires you to maintain (and refresh) instances of services/characteristics/descriptors
BREAKING
Managed peripheral is now gone. This functionality is now built into the main API.
BREAKING Enhancement Android
Android MTU requests are moved to the IPeripheral.Connect(AndroidConnectionConfig)
BluetoothLE Hosting
Enhancement Android
RequestAccess now exists - you can specifically target your permissions to take advantage of Android API 31
Enhancement
All characteristic hooks are now async
Enhancement
New “managed” model for characteristics
Enhancement
Advertise iBeacons is now supported - it exists here instead of Shiny.Beacons because all of the advertising code is here
HTTP Transfers
Enhancement
Rewritten API makes it easier than ever to monitor metrics of your transfers
Enhancement Android
Now supports persistent progress notifications
Enhancement
You can pass AppleHttpTransferRequest & AndroidHttpTransferRequest to the HttpTransferManager to customize the native request
Beacons
Enhancement Android
To configure the foreground service notification on beacon monitoring, your IBeaconMonitorDelegate can also implement IAndroidForegroundServiceDelegate with ANDROID preprocessor directives
Jobs
BREAKING iOS
We no longer support the background fetch style (old) job management - only bgtasks will be used going forward
Libraries that will not move to v3
- Shiny.NFC
- Shiny.Sensors
MAUI Setup
- Install Shiny.Hosting.Maui
- Install the nuget package(s) shown above each comment below to get that functionality
- Ensure you add UseShiny as shown below