Releases
3.0.1 - September 19, 2023
Core
Fix
Push
Fix
IOS
3.0.0 - September 5, 2023
MAUI
- Shiny.Hosting.Maui initial integration package created (Example how to setup shown below)
Core
BREAKING
Enhancement
BREAKING
Enhancement
BREAKING
Enhancement
Enhancement
Enhancement
Enhancement
Enhancement
Enhancement
Configuration
- Configuration is now part of the core library
Now loads platform specific json assets like appsettings.android.json, appsettings.ios.json, appsettings.maccatalyst.json, & appsettings.apple.jsonEnhancement
Notifications
Enhancement
ANDROID
Enhancement
Enhancement
Enhancement
Push
Enhancement
ANDROID
Enhancement
Enhancement
Locations
Enhancement
APPLE
Enhancement
ANDROID
BluetoothLE
Enhancement
ANDROID
BREAKING
Enhancement
ANDROID
BREAKING
Enhancement
BREAKING
Enhancement
BREAKING
Enhancement
BREAKING
Enhancement
ANDROID
BluetoothLE Hosting
Enhancement
ANDROID
Enhancement
Enhancement
Enhancement
HTTP Transfers
Enhancement
Enhancement
ANDROID
Enhancement
Beacons
Enhancement
ANDROID
Jobs
BREAKING
Enhancement
IOS
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
using Shiny;
namespace Sample;
public static class MauiProgram
{
public static MauiApp CreateMauiApp()
{
var builder = MauiApp
.CreateBuilder()
.UseMauiApp<App>()
// THIS IS REQUIRED TO BE DONE FOR SHINY TO RUN
.UseShiny();
// shiny.locations
builder.Services.AddGps<SampleGpsDelegate>();
builder.Services.AddGeofencing<SampleGeofenceDelegate>();
builder.Services.AddMotionActivity();
// shiny.notifications
builder.Services.AddNotifications<SampleNotificationDelegate>();
// shiny.bluetoothle
builder.Services.AddBluetoothLE<SampleBleDelegate>();
// shiny.bluetoothle.hosting
builder.Services.AddBluetoothLeHosting();
// shiny.beacons
builder.Services.AddBeaconRanging();
builder.Services.AddBeaconMonitoring<SampleBeaconMonitorDelegate>();
// shiny.net.http
builder.Services.AddHttpTransfers<SampleHttpTransferDelegate>();
// shiny.speechrecognition
builder.Services.AddSpeechRecognition();
// shiny.push
builder.Services.AddPush<SamplePushDelegate>();
// shiny.jobs
builder.Services.AddJob(typeof(SampleJob));
builder.Services.AddJobs(); // not required if using above
// shiny.core - startup task & persistent service registration
builder.Services.AddShinyService<StartupTask>();
// shiny.push
builder.Services.AddPush<SamplePushDelegate>();
// or shiny.push.firebasemessaging
builder.Services.AddPushFirebaseMessaging<SamplePushDelegate>();
// or shiny.push.azurenotificationhubs
builder.Services.AddPushAzureNotificationHubs<SamplePushDelegate>();
return builder.Build();
}
}
New Android Foreground Service Notification Customization
// ex. this is using a GPS background delegate
public class MyGpsDelegate : Shiny.Locations.IGpsDelegate
#if ANDROID
, Shiny.IAndroidForegroundServiceDelegate
#endif
{
// .. implementation details left out for brevity
#if ANDROID
public void Configure(Android.NotificationCompat.Builder builder)
{
var builder = new NotificationCompat.Builder(this.Context, "gps");
builder.SetContentTitle("GPS");
builder.SetContentText("GPS is running in the background");
builder.SetSmallIcon(Resource.Drawable.ic_launcher_foreground);
builder.SetPriority((int)NotificationCompat.PriorityHigh);
builder.SetCategory(NotificationCompat.CategoryService);
}
#endif
}