From 6b8e6cf657548eab89c7d2b8073bc9c238d033d8 Mon Sep 17 00:00:00 2001
From: Thomas Galliker <>
Date: Mon, 16 Jun 2025 13:36:20 +0200
Subject: [PATCH 01/22] Remove target framework net7.0 + add target framework
net9.0
---
.../Plugin.FirebasePushNotifications.csproj | 29 +++++++++----------
Samples/MauiSampleApp/MauiSampleApp.csproj | 13 ++++-----
.../Platforms/Android/AndroidManifest.xml | 4 ---
...gin.FirebasePushNotifications.Tests.csproj | 4 +--
azure-pipelines.yml | 4 +--
5 files changed, 23 insertions(+), 31 deletions(-)
diff --git a/Plugin.FirebasePushNotifications/Plugin.FirebasePushNotifications.csproj b/Plugin.FirebasePushNotifications/Plugin.FirebasePushNotifications.csproj
index 95f354e..e67fd53 100644
--- a/Plugin.FirebasePushNotifications/Plugin.FirebasePushNotifications.csproj
+++ b/Plugin.FirebasePushNotifications/Plugin.FirebasePushNotifications.csproj
@@ -1,18 +1,19 @@
- net7.0;net7.0-android33.0;net7.0-ios;net8.0;net8.0-android34.0;net8.0-ios17.0
+ net8.0;net8.0-android34.0;net8.0-ios17.0;net9.0;net9.0-android35.0;net9.0-ios18.0
Library
true
8.0.3
- 7.0.49
+ 9.0.0
true
enable
disable
true
True
- 12.0
+ 12.0
+ 12.2
24.0
true
@@ -45,6 +46,8 @@
- Synchronized notification handling behavior between Android and iOS.
- Renamed topic methods to follow the Async pattern: SubscribeToTopicAsync, UnsubscribeFromTopicAsync, etc.
- Use AddOnCompleteListener for asynchronous tasks in Android.
+- Add target framework net9.0, net9.0-android and net9.0-ios.
+- Remove target framework net7.0, net7.0-android and net7.0-ios.
- Bug fixes and refactorings.
3.2
@@ -97,27 +100,21 @@
-
-
-
-
-
+
+
+
+
+
-
-
-
-
-
-
-
+
-
+
diff --git a/Samples/MauiSampleApp/MauiSampleApp.csproj b/Samples/MauiSampleApp/MauiSampleApp.csproj
index 4063ce1..5d3ea20 100644
--- a/Samples/MauiSampleApp/MauiSampleApp.csproj
+++ b/Samples/MauiSampleApp/MauiSampleApp.csproj
@@ -1,11 +1,11 @@
- net8.0;net8.0-android;net8.0-ios
+ net9.0;net9.0-android;net9.0-ios
Exe
MauiSampleApp
true
- 8.0.100
+ 9.0.80
true
enable
disable
@@ -19,10 +19,10 @@
da8d1bd2-3ced-4171-b0da-3f1a7806e5af
- 1.0
+ 1.0.0
1
- 12.0
+ 12.2
24.0
@@ -82,7 +82,7 @@
None
apk
false
- true
+ false
SdkOnly
@@ -136,8 +136,7 @@
-
-
+
diff --git a/Samples/MauiSampleApp/Platforms/Android/AndroidManifest.xml b/Samples/MauiSampleApp/Platforms/Android/AndroidManifest.xml
index 9970642..9ce82b1 100644
--- a/Samples/MauiSampleApp/Platforms/Android/AndroidManifest.xml
+++ b/Samples/MauiSampleApp/Platforms/Android/AndroidManifest.xml
@@ -24,10 +24,6 @@
-
-
-
-
diff --git a/Tests/Plugin.FirebasePushNotifications.Tests/Plugin.FirebasePushNotifications.Tests.csproj b/Tests/Plugin.FirebasePushNotifications.Tests/Plugin.FirebasePushNotifications.Tests.csproj
index 151cd88..c11a2ab 100644
--- a/Tests/Plugin.FirebasePushNotifications.Tests/Plugin.FirebasePushNotifications.Tests.csproj
+++ b/Tests/Plugin.FirebasePushNotifications.Tests/Plugin.FirebasePushNotifications.Tests.csproj
@@ -1,7 +1,7 @@
- net8.0
+ net9.0
enable
disable
false
@@ -19,7 +19,7 @@
-
+
all
diff --git a/azure-pipelines.yml b/azure-pipelines.yml
index 2c98164..0fe2f37 100644
--- a/azure-pipelines.yml
+++ b/azure-pipelines.yml
@@ -68,9 +68,9 @@ steps:
DisableTelemetry: true
- task: UseDotNet@2
- displayName: 'Use .NET 8.x'
+ displayName: 'Use .NET 9.x'
inputs:
- version: 8.x
+ version: 9.x
- task: Bash@3
displayName: Install .NET MAUI
From a39c38249d28b9154f9d75ac5619bf57ce4f86bd Mon Sep 17 00:00:00 2001
From: Thomas Galliker <>
Date: Mon, 16 Jun 2025 14:00:38 +0200
Subject: [PATCH 02/22] Update community toolkit in sample app
---
Samples/MauiSampleApp/MauiSampleApp.csproj | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/Samples/MauiSampleApp/MauiSampleApp.csproj b/Samples/MauiSampleApp/MauiSampleApp.csproj
index 5d3ea20..4f169d7 100644
--- a/Samples/MauiSampleApp/MauiSampleApp.csproj
+++ b/Samples/MauiSampleApp/MauiSampleApp.csproj
@@ -134,7 +134,7 @@
-
+
From 1a9210c75a148d3918454a54b5cef7bcfe5bfb9d Mon Sep 17 00:00:00 2001
From: Thomas Galliker <>
Date: Mon, 16 Jun 2025 14:49:54 +0200
Subject: [PATCH 03/22] Replace arrow in log messages
---
.../Platforms/Android/FirebasePushNotificationManager.cs | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/Plugin.FirebasePushNotifications/Platforms/Android/FirebasePushNotificationManager.cs b/Plugin.FirebasePushNotifications/Platforms/Android/FirebasePushNotificationManager.cs
index 4fb6acb..c8f2c97 100644
--- a/Plugin.FirebasePushNotifications/Platforms/Android/FirebasePushNotificationManager.cs
+++ b/Plugin.FirebasePushNotifications/Platforms/Android/FirebasePushNotificationManager.cs
@@ -187,7 +187,7 @@ public void ProcessIntent(Activity activity, Intent intent)
if (!intent.GetBooleanExtra(intentAlreadyHandledKey, false))
{
intent.PutExtra(intentAlreadyHandledKey, true);
- this.logger.LogDebug($"ProcessIntent: {intentAlreadyHandledKey} not present --> Process notification");
+ this.logger.LogDebug($"ProcessIntent: {intentAlreadyHandledKey} not present → Process notification");
if (extras.TryGetInt(Constants.ActionNotificationIdKey, out var notificationId))
{
@@ -216,7 +216,7 @@ public void ProcessIntent(Activity activity, Intent intent)
}
else
{
- this.logger.LogDebug($"ProcessIntent: {intentAlreadyHandledKey} is present --> Notification already processed");
+ this.logger.LogDebug($"ProcessIntent: {intentAlreadyHandledKey} is present → Notification already processed");
}
}
}
From 5ad809c57d4a2e89fa2689b17ac03232b56642d0 Mon Sep 17 00:00:00 2001
From: Thomas Galliker <>
Date: Mon, 16 Jun 2025 14:50:33 +0200
Subject: [PATCH 04/22] Update nugets in test project
---
.../Plugin.FirebasePushNotifications.Tests.csproj | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/Tests/Plugin.FirebasePushNotifications.Tests/Plugin.FirebasePushNotifications.Tests.csproj b/Tests/Plugin.FirebasePushNotifications.Tests/Plugin.FirebasePushNotifications.Tests.csproj
index c11a2ab..492b3ab 100644
--- a/Tests/Plugin.FirebasePushNotifications.Tests/Plugin.FirebasePushNotifications.Tests.csproj
+++ b/Tests/Plugin.FirebasePushNotifications.Tests/Plugin.FirebasePushNotifications.Tests.csproj
@@ -9,7 +9,7 @@
-
+
all
runtime; build; native; contentfiles; analyzers; buildtransitive
@@ -20,8 +20,8 @@
-
-
+
+
all
runtime; build; native; contentfiles; analyzers
From 942e94efffa01d831c80c6eb88a711b431ef7476 Mon Sep 17 00:00:00 2001
From: Thomas Galliker <>
Date: Mon, 16 Jun 2025 14:51:58 +0200
Subject: [PATCH 05/22] GenerateDocumentationFile only in release mode
---
.../Plugin.FirebasePushNotifications.csproj | 7 +++++--
1 file changed, 5 insertions(+), 2 deletions(-)
diff --git a/Plugin.FirebasePushNotifications/Plugin.FirebasePushNotifications.csproj b/Plugin.FirebasePushNotifications/Plugin.FirebasePushNotifications.csproj
index e67fd53..43186d0 100644
--- a/Plugin.FirebasePushNotifications/Plugin.FirebasePushNotifications.csproj
+++ b/Plugin.FirebasePushNotifications/Plugin.FirebasePushNotifications.csproj
@@ -10,7 +10,6 @@
enable
disable
true
- True
12.0
12.2
@@ -97,7 +96,11 @@
-
+
+ true
+
+
+
From b844f38e3d61b3a71c187c9f7a62b7a524bdca22 Mon Sep 17 00:00:00 2001
From: Thomas Galliker <>
Date: Mon, 16 Jun 2025 14:53:45 +0200
Subject: [PATCH 06/22] Add Android proguard and trimmer config
---
.../Platforms/Android/ILLink.Descriptors.xml | 3 +++
.../Platforms/Android/proguard.cfg | 6 ++++++
.../Plugin.FirebasePushNotifications.csproj | 9 +++++++++
3 files changed, 18 insertions(+)
create mode 100644 Plugin.FirebasePushNotifications/Platforms/Android/ILLink.Descriptors.xml
create mode 100644 Plugin.FirebasePushNotifications/Platforms/Android/proguard.cfg
diff --git a/Plugin.FirebasePushNotifications/Platforms/Android/ILLink.Descriptors.xml b/Plugin.FirebasePushNotifications/Platforms/Android/ILLink.Descriptors.xml
new file mode 100644
index 0000000..5a86e3d
--- /dev/null
+++ b/Plugin.FirebasePushNotifications/Platforms/Android/ILLink.Descriptors.xml
@@ -0,0 +1,3 @@
+
+
+
\ No newline at end of file
diff --git a/Plugin.FirebasePushNotifications/Platforms/Android/proguard.cfg b/Plugin.FirebasePushNotifications/Platforms/Android/proguard.cfg
new file mode 100644
index 0000000..04a0f10
--- /dev/null
+++ b/Plugin.FirebasePushNotifications/Platforms/Android/proguard.cfg
@@ -0,0 +1,6 @@
+-dontwarn com.google.android.gms.**
+-keep class com.google.android.gms.** { *; }
+-keep class com.google.firebase.** { *; }
+-keep class androidx.startup.AppInitializer
+-keep class androidx.startup.InitializationProvider
+-keep class androidx.startup.Initializer
\ No newline at end of file
diff --git a/Plugin.FirebasePushNotifications/Plugin.FirebasePushNotifications.csproj b/Plugin.FirebasePushNotifications/Plugin.FirebasePushNotifications.csproj
index 43186d0..3cb1586 100644
--- a/Plugin.FirebasePushNotifications/Plugin.FirebasePushNotifications.csproj
+++ b/Plugin.FirebasePushNotifications/Plugin.FirebasePushNotifications.csproj
@@ -120,4 +120,13 @@
+
+
+
+
+
+
+
+
+
From d17cae4c2d5d34fea6b57c9b7734c57f8f88a667 Mon Sep 17 00:00:00 2001
From: Thomas Galliker <>
Date: Mon, 16 Jun 2025 15:04:02 +0200
Subject: [PATCH 07/22] Use .net 8 and .net 9
---
azure-pipelines.yml | 9 +++++++--
1 file changed, 7 insertions(+), 2 deletions(-)
diff --git a/azure-pipelines.yml b/azure-pipelines.yml
index 0fe2f37..fc9585e 100644
--- a/azure-pipelines.yml
+++ b/azure-pipelines.yml
@@ -68,9 +68,14 @@ steps:
DisableTelemetry: true
- task: UseDotNet@2
- displayName: 'Use .NET 9.x'
+ displayName: 'Use .NET 8'
inputs:
- version: 9.x
+ version: 8.0.x
+
+- task: UseDotNet@2
+ displayName: 'Use .NET 9'
+ inputs:
+ version: 9.0.x
- task: Bash@3
displayName: Install .NET MAUI
From 003d5bc92cf4d1679184301d934848c4633be8a1 Mon Sep 17 00:00:00 2001
From: Thomas Galliker <>
Date: Mon, 16 Jun 2025 15:09:18 +0200
Subject: [PATCH 08/22] Publish snupkg
---
.../Plugin.FirebasePushNotifications.csproj | 8 ++++++--
azure-pipelines.yml | 6 ++----
2 files changed, 8 insertions(+), 6 deletions(-)
diff --git a/Plugin.FirebasePushNotifications/Plugin.FirebasePushNotifications.csproj b/Plugin.FirebasePushNotifications/Plugin.FirebasePushNotifications.csproj
index 3cb1586..e27743f 100644
--- a/Plugin.FirebasePushNotifications/Plugin.FirebasePushNotifications.csproj
+++ b/Plugin.FirebasePushNotifications/Plugin.FirebasePushNotifications.csproj
@@ -32,11 +32,13 @@
firebase;push;notification;notifications
logo.png
LICENSE
+ README.md
https://github.com/thomasgalliker/Plugin.FirebasePushNotifications
git
https://github.com/thomasgalliker/Plugin.FirebasePushNotifications
superdev GmbH
false
+ Copyright $([System.DateTime]::Now.ToString(`yyyy`)) © Thomas Galliker
4.0
- Improved notification channel handling during app startup.
- Data-only notifications are no longer displayed in the notification tray.
@@ -86,8 +88,10 @@
1.0
- Initial release.
- Copyright $([System.DateTime]::Now.ToString(`yyyy`)) © Thomas Galliker
- README.md
+ true
+ snupkg
+ true
+ true
diff --git a/azure-pipelines.yml b/azure-pipelines.yml
index fc9585e..eee0312 100644
--- a/azure-pipelines.yml
+++ b/azure-pipelines.yml
@@ -163,11 +163,9 @@ steps:
displayName: 'Copy Files to: $(Build.ArtifactStagingDirectory)'
inputs:
SourceFolder: '$(system.defaultworkingdirectory)'
-
Contents: |
- **\bin\$(BuildConfiguration)\**
- **\bin\*.nupkg
-
+ **\bin\*.nupkg
+ **\bin\*.snupkg
TargetFolder: '$(Build.ArtifactStagingDirectory)'
- task: PublishCodeCoverageResults@2
From 2da03414c3063de47525170586f800643e47c72a Mon Sep 17 00:00:00 2001
From: Thomas Galliker <>
Date: Mon, 16 Jun 2025 15:28:04 +0200
Subject: [PATCH 09/22] Remove 32 bit runtime identifiers in android sample app
---
Samples/MauiSampleApp/MauiSampleApp.csproj | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/Samples/MauiSampleApp/MauiSampleApp.csproj b/Samples/MauiSampleApp/MauiSampleApp.csproj
index 4f169d7..e1012b4 100644
--- a/Samples/MauiSampleApp/MauiSampleApp.csproj
+++ b/Samples/MauiSampleApp/MauiSampleApp.csproj
@@ -90,7 +90,7 @@
aab
true
1G
- android-arm;android-arm64;android-x86;android-x64
+ android-arm64;android-x64
true
true
From ce138972dd93c4c73d8fa639355d9b8ecbb5b825 Mon Sep 17 00:00:00 2001
From: Thomas Galliker <>
Date: Mon, 16 Jun 2025 15:44:35 +0200
Subject: [PATCH 10/22] Restore nugets with release configuration
---
Samples/MauiSampleApp/MauiSampleApp.csproj | 2 +-
azure-pipelines.yml | 1 +
2 files changed, 2 insertions(+), 1 deletion(-)
diff --git a/Samples/MauiSampleApp/MauiSampleApp.csproj b/Samples/MauiSampleApp/MauiSampleApp.csproj
index e1012b4..4f169d7 100644
--- a/Samples/MauiSampleApp/MauiSampleApp.csproj
+++ b/Samples/MauiSampleApp/MauiSampleApp.csproj
@@ -90,7 +90,7 @@
aab
true
1G
- android-arm64;android-x64
+ android-arm;android-arm64;android-x86;android-x64
true
true
diff --git a/azure-pipelines.yml b/azure-pipelines.yml
index eee0312..d3d330d 100644
--- a/azure-pipelines.yml
+++ b/azure-pipelines.yml
@@ -102,6 +102,7 @@ steps:
inputs:
command: restore
projects: '$(solution)'
+ configuration: '$(buildConfiguration)'
- task: DownloadSecureFile@1
name: GoogleServiceFileAndroid
From bb5a834f4e2f1699880217356da9d11725e91da1 Mon Sep 17 00:00:00 2001
From: Thomas Galliker <>
Date: Mon, 16 Jun 2025 15:59:29 +0200
Subject: [PATCH 11/22] Use nuget restore arguments to add release
configuration parameter
---
azure-pipelines.yml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/azure-pipelines.yml b/azure-pipelines.yml
index d3d330d..0fa43be 100644
--- a/azure-pipelines.yml
+++ b/azure-pipelines.yml
@@ -102,7 +102,7 @@ steps:
inputs:
command: restore
projects: '$(solution)'
- configuration: '$(buildConfiguration)'
+ arguments: '--configuration $(buildConfiguration)'
- task: DownloadSecureFile@1
name: GoogleServiceFileAndroid
From f497f06616c44625a91b987e45b0740cdfe90c57 Mon Sep 17 00:00:00 2001
From: Thomas Galliker <>
Date: Mon, 16 Jun 2025 16:14:50 +0200
Subject: [PATCH 12/22] Try restoreArguments
---
azure-pipelines.yml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/azure-pipelines.yml b/azure-pipelines.yml
index 0fa43be..4823d5d 100644
--- a/azure-pipelines.yml
+++ b/azure-pipelines.yml
@@ -102,7 +102,7 @@ steps:
inputs:
command: restore
projects: '$(solution)'
- arguments: '--configuration $(buildConfiguration)'
+ restoreArguments: '--configuration $(buildConfiguration)'
- task: DownloadSecureFile@1
name: GoogleServiceFileAndroid
From dbe986bc88ec5d04ecb3a20ffe743280c9b12208 Mon Sep 17 00:00:00 2001
From: Thomas Galliker <>
Date: Mon, 16 Jun 2025 16:22:51 +0200
Subject: [PATCH 13/22] Reformat argument
---
azure-pipelines.yml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/azure-pipelines.yml b/azure-pipelines.yml
index 4823d5d..9c9e731 100644
--- a/azure-pipelines.yml
+++ b/azure-pipelines.yml
@@ -102,7 +102,7 @@ steps:
inputs:
command: restore
projects: '$(solution)'
- restoreArguments: '--configuration $(buildConfiguration)'
+ restoreArguments: '/p:Configuration=$(buildConfiguration)'
- task: DownloadSecureFile@1
name: GoogleServiceFileAndroid
From 2691600d1dcd129badd70869e487507d5dfb44e3 Mon Sep 17 00:00:00 2001
From: Thomas Galliker <>
Date: Mon, 16 Jun 2025 16:34:08 +0200
Subject: [PATCH 14/22] Cleanup
---
azure-pipelines.yml | 5 -----
1 file changed, 5 deletions(-)
diff --git a/azure-pipelines.yml b/azure-pipelines.yml
index 9c9e731..1cf9ccd 100644
--- a/azure-pipelines.yml
+++ b/azure-pipelines.yml
@@ -67,11 +67,6 @@ steps:
FailOnWarning: false
DisableTelemetry: true
-- task: UseDotNet@2
- displayName: 'Use .NET 8'
- inputs:
- version: 8.0.x
-
- task: UseDotNet@2
displayName: 'Use .NET 9'
inputs:
From 674673f93a2d9e6c84681a67db6fa5c04504e0f5 Mon Sep 17 00:00:00 2001
From: Thomas Galliker <>
Date: Tue, 17 Jun 2025 08:08:15 +0200
Subject: [PATCH 15/22] Extract release notes to text file
---
Plugin.FirebasePushNotifications.sln | 1 +
.../Plugin.FirebasePushNotifications.csproj | 50 +------------------
ReleaseNotes.txt | 48 ++++++++++++++++++
azure-pipelines.yml | 1 +
4 files changed, 51 insertions(+), 49 deletions(-)
create mode 100644 ReleaseNotes.txt
diff --git a/Plugin.FirebasePushNotifications.sln b/Plugin.FirebasePushNotifications.sln
index 2df1b09..daa184b 100644
--- a/Plugin.FirebasePushNotifications.sln
+++ b/Plugin.FirebasePushNotifications.sln
@@ -10,6 +10,7 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution
azure-pipelines.yml = azure-pipelines.yml
LICENSE = LICENSE
README.md = README.md
+ ReleaseNotes.txt = ReleaseNotes.txt
EndProjectSection
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Plugin.FirebasePushNotifications", "Plugin.FirebasePushNotifications\Plugin.FirebasePushNotifications.csproj", "{49F1F62D-5A20-49A6-B508-408BE32B0DC6}"
diff --git a/Plugin.FirebasePushNotifications/Plugin.FirebasePushNotifications.csproj b/Plugin.FirebasePushNotifications/Plugin.FirebasePushNotifications.csproj
index e27743f..2761199 100644
--- a/Plugin.FirebasePushNotifications/Plugin.FirebasePushNotifications.csproj
+++ b/Plugin.FirebasePushNotifications/Plugin.FirebasePushNotifications.csproj
@@ -39,55 +39,7 @@
superdev GmbH
false
Copyright $([System.DateTime]::Now.ToString(`yyyy`)) © Thomas Galliker
- 4.0
-- Improved notification channel handling during app startup.
-- Data-only notifications are no longer displayed in the notification tray.
-- NotificationBuilder support for Android API 26 and below (where no notification channels are available).
-- OpenNotificationSettings now also works for Android API 26 and below.
-- Synchronized notification handling behavior between Android and iOS.
-- Renamed topic methods to follow the Async pattern: SubscribeToTopicAsync, UnsubscribeFromTopicAsync, etc.
-- Use AddOnCompleteListener for asynchronous tasks in Android.
-- Add target framework net9.0, net9.0-android and net9.0-ios.
-- Remove target framework net7.0, net7.0-android and net7.0-ios.
-- Bug fixes and refactorings.
-
-3.2
-- Improved default notification channel handling.
-- Bug fixes and refactorings.
-
-3.1
-- Extend INotificationChannels to manage notification channel groups.
-- Internal refactoring of INotificationChannels implementation.
-- Removed properties IsActive and IsDefault from NotificationChannelRequest. Set the default notification channel via UseFirebasePushNotifications(o => o.Android.DefaultNotificationChannelId = ...).
-- Configure initial list of notification channels via o.Android.NotificationChannels and notification groups via o.Android.NotificationChannelGroups.
-
-3.0
-- Update firebase-ios-sdk by replacing nuget package Xamarin.Firebase.iOS.CloudMessaging with AdamE.Firebase.iOS.CloudMessaging.
-
-2.5
-- Move static properties from Android's FirebasePushNotificationManager to FirebasePushNotificationAndroidOptions.
-- iOS 18 workaround for duplicate notifications in foreground mode.
-- iOS options to override default UNNotificationPresentationOptions for notifications received in foreground mode.
-- Handle gcm.notification.click_action payload as click_action in Android.
-
-2.4
-- Refactor instanciation of IFirebasePushNotification.
-- Refactor startup procedure of platform-specific services.
-- Add singleton instance INotificationPermissions.Current.
-
-2.3
-- General bug fixes and code cleanup.
-- Bug fixes in the area of topic subscriptions.
-- IFirebasePushNotification.Current.
-- Add singleton instance IFirebasePushNotification.Current and INotificationPermissions.Current.
-
-2.2
-- Complete refactoring of the original 1.x implementation.
-- Simplified APIs, less static code, support for dependency injection.
-
-1.0
-- Initial release.
-
+ $([System.IO.File]::ReadAllText("$(MSBuildProjectDirectory)/../ReleaseNotes.txt"))
true
snupkg
true
diff --git a/ReleaseNotes.txt b/ReleaseNotes.txt
new file mode 100644
index 0000000..5e66fb4
--- /dev/null
+++ b/ReleaseNotes.txt
@@ -0,0 +1,48 @@
+4.0
+- Improved notification channel handling during app startup.
+- Data-only notifications are no longer displayed in the notification tray.
+- NotificationBuilder support for Android API 26 and below (where no notification channels are available).
+- OpenNotificationSettings now also works for Android API 26 and below.
+- Synchronized notification handling behavior between Android and iOS.
+- Renamed topic methods to follow the Async pattern: SubscribeToTopicAsync, UnsubscribeFromTopicAsync, etc.
+- Use AddOnCompleteListener for asynchronous tasks in Android.
+- Add target framework net9.0, net9.0-android and net9.0-ios.
+- Remove target framework net7.0, net7.0-android and net7.0-ios.
+- Bug fixes and refactorings.
+
+3.2
+- Improved default notification channel handling.
+- Bug fixes and refactorings.
+
+3.1
+- Extend INotificationChannels to manage notification channel groups.
+- Internal refactoring of INotificationChannels implementation.
+- Removed properties IsActive and IsDefault from NotificationChannelRequest. Set the default notification channel via UseFirebasePushNotifications(o => o.Android.DefaultNotificationChannelId = ...).
+- Configure initial list of notification channels via o.Android.NotificationChannels and notification groups via o.Android.NotificationChannelGroups.
+
+3.0
+- Update firebase-ios-sdk by replacing nuget package Xamarin.Firebase.iOS.CloudMessaging with AdamE.Firebase.iOS.CloudMessaging.
+
+2.5
+- Move static properties from Android's FirebasePushNotificationManager to FirebasePushNotificationAndroidOptions.
+- iOS 18 workaround for duplicate notifications in foreground mode.
+- iOS options to override default UNNotificationPresentationOptions for notifications received in foreground mode.
+- Handle gcm.notification.click_action payload as click_action in Android.
+
+2.4
+- Refactor instanciation of IFirebasePushNotification.
+- Refactor startup procedure of platform-specific services.
+- Add singleton instance INotificationPermissions.Current.
+
+2.3
+- General bug fixes and code cleanup.
+- Bug fixes in the area of topic subscriptions.
+- IFirebasePushNotification.Current.
+- Add singleton instance IFirebasePushNotification.Current and INotificationPermissions.Current.
+
+2.2
+- Complete refactoring of the original 1.x implementation.
+- Simplified APIs, less static code, support for dependency injection.
+
+1.0
+- Initial release.
\ No newline at end of file
diff --git a/azure-pipelines.yml b/azure-pipelines.yml
index 1cf9ccd..3903ea5 100644
--- a/azure-pipelines.yml
+++ b/azure-pipelines.yml
@@ -162,6 +162,7 @@ steps:
Contents: |
**\bin\*.nupkg
**\bin\*.snupkg
+ **\ReleaseNotes.txt
TargetFolder: '$(Build.ArtifactStagingDirectory)'
- task: PublishCodeCoverageResults@2
From 39cc949a29f6d41b91abd089200ffcfa0ccc7497 Mon Sep 17 00:00:00 2001
From: Thomas Galliker <>
Date: Wed, 18 Jun 2025 07:52:39 +0200
Subject: [PATCH 16/22] Replace communitytoolkit's EventToCommandBehavior with
Superdev.Maui
---
Samples/MauiSampleApp/MauiProgram.cs | 2 ++
Samples/MauiSampleApp/MauiSampleApp.csproj | 1 +
Samples/MauiSampleApp/Views/MainPage.xaml | 4 ++--
3 files changed, 5 insertions(+), 2 deletions(-)
diff --git a/Samples/MauiSampleApp/MauiProgram.cs b/Samples/MauiSampleApp/MauiProgram.cs
index 185adc9..289532e 100644
--- a/Samples/MauiSampleApp/MauiProgram.cs
+++ b/Samples/MauiSampleApp/MauiProgram.cs
@@ -7,6 +7,7 @@
using Plugin.FirebasePushNotifications.Model.Queues;
using MauiSampleApp.Services.Logging;
using NLog.Extensions.Logging;
+using Superdev.Maui;
#if ANDROID
using Android.App;
@@ -66,6 +67,7 @@ public static MauiApp CreateMauiApp()
// o.iOS.iOS18Workaround.Enable = true;
#endif
})
+ .UseSuperdevMaui()
.ConfigureFonts(fonts =>
{
fonts.AddFont("IBMPlexSans-Regular.ttf", "IBMPlexSans");
diff --git a/Samples/MauiSampleApp/MauiSampleApp.csproj b/Samples/MauiSampleApp/MauiSampleApp.csproj
index 4f169d7..5c267a9 100644
--- a/Samples/MauiSampleApp/MauiSampleApp.csproj
+++ b/Samples/MauiSampleApp/MauiSampleApp.csproj
@@ -139,6 +139,7 @@
+
diff --git a/Samples/MauiSampleApp/Views/MainPage.xaml b/Samples/MauiSampleApp/Views/MainPage.xaml
index cf3f9e1..119d049 100644
--- a/Samples/MauiSampleApp/Views/MainPage.xaml
+++ b/Samples/MauiSampleApp/Views/MainPage.xaml
@@ -3,9 +3,9 @@
-
From 2e83c6b7486e8a5fdab0942e7bf8bf70b2930833 Mon Sep 17 00:00:00 2001
From: Thomas Galliker <>
Date: Wed, 18 Jun 2025 07:54:31 +0200
Subject: [PATCH 17/22] Update nugets in sample app
---
Samples/MauiSampleApp/MauiSampleApp.csproj | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/Samples/MauiSampleApp/MauiSampleApp.csproj b/Samples/MauiSampleApp/MauiSampleApp.csproj
index 5c267a9..4b3485b 100644
--- a/Samples/MauiSampleApp/MauiSampleApp.csproj
+++ b/Samples/MauiSampleApp/MauiSampleApp.csproj
@@ -135,10 +135,10 @@
-
+
-
-
+
+
From 8527ec70a8e9cb23ffca3eeea2f2ff3094611ff5 Mon Sep 17 00:00:00 2001
From: Thomas Galliker <>
Date: Tue, 1 Jul 2025 08:39:59 +0200
Subject: [PATCH 18/22] Update mauiversion in sample app
---
Samples/MauiSampleApp/MauiSampleApp.csproj | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/Samples/MauiSampleApp/MauiSampleApp.csproj b/Samples/MauiSampleApp/MauiSampleApp.csproj
index 4b3485b..5d52c14 100644
--- a/Samples/MauiSampleApp/MauiSampleApp.csproj
+++ b/Samples/MauiSampleApp/MauiSampleApp.csproj
@@ -5,7 +5,7 @@
Exe
MauiSampleApp
true
- 9.0.80
+ 9.0.81
true
enable
disable
From ed0859fbdc22c2c01e3d5c0721180568ed35d83e Mon Sep 17 00:00:00 2001
From: Thomas Galliker <>
Date: Mon, 14 Jul 2025 13:04:34 +0200
Subject: [PATCH 19/22] Updates maui version in sample app
---
Samples/MauiSampleApp/MauiSampleApp.csproj | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/Samples/MauiSampleApp/MauiSampleApp.csproj b/Samples/MauiSampleApp/MauiSampleApp.csproj
index 5d52c14..f9b7492 100644
--- a/Samples/MauiSampleApp/MauiSampleApp.csproj
+++ b/Samples/MauiSampleApp/MauiSampleApp.csproj
@@ -5,7 +5,7 @@
Exe
MauiSampleApp
true
- 9.0.81
+ 9.0.82
true
enable
disable
From f86789e798739807c4ba404907965b1f4ca8c9ae Mon Sep 17 00:00:00 2001
From: Thomas Galliker <>
Date: Fri, 18 Jul 2025 08:32:35 +0200
Subject: [PATCH 20/22] Update maui version in sample app
---
Samples/MauiSampleApp/MauiSampleApp.csproj | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/Samples/MauiSampleApp/MauiSampleApp.csproj b/Samples/MauiSampleApp/MauiSampleApp.csproj
index f9b7492..7438294 100644
--- a/Samples/MauiSampleApp/MauiSampleApp.csproj
+++ b/Samples/MauiSampleApp/MauiSampleApp.csproj
@@ -5,7 +5,7 @@
Exe
MauiSampleApp
true
- 9.0.82
+ 9.0.90
true
enable
disable
From 6b1ddce8e7fcbe03fc045a5510ba4ff72dae13b2 Mon Sep 17 00:00:00 2001
From: Thomas Galliker <>
Date: Fri, 18 Jul 2025 08:33:03 +0200
Subject: [PATCH 21/22] Remove obsolete tfm in sample app
---
Samples/MauiSampleApp/MauiSampleApp.csproj | 7 +------
1 file changed, 1 insertion(+), 6 deletions(-)
diff --git a/Samples/MauiSampleApp/MauiSampleApp.csproj b/Samples/MauiSampleApp/MauiSampleApp.csproj
index 7438294..d50fe2e 100644
--- a/Samples/MauiSampleApp/MauiSampleApp.csproj
+++ b/Samples/MauiSampleApp/MauiSampleApp.csproj
@@ -1,7 +1,7 @@
- net9.0;net9.0-android;net9.0-ios
+ net9.0-android;net9.0-ios
Exe
MauiSampleApp
true
@@ -26,11 +26,6 @@
24.0
-
-
- Library
-
-
Date: Fri, 18 Jul 2025 08:33:32 +0200
Subject: [PATCH 22/22] Update nugets in sample app + test project
---
Samples/MauiSampleApp/MauiSampleApp.csproj | 4 ++--
.../Plugin.FirebasePushNotifications.Tests.csproj | 2 +-
2 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/Samples/MauiSampleApp/MauiSampleApp.csproj b/Samples/MauiSampleApp/MauiSampleApp.csproj
index d50fe2e..63236bc 100644
--- a/Samples/MauiSampleApp/MauiSampleApp.csproj
+++ b/Samples/MauiSampleApp/MauiSampleApp.csproj
@@ -129,9 +129,9 @@
-
+
-
+
diff --git a/Tests/Plugin.FirebasePushNotifications.Tests/Plugin.FirebasePushNotifications.Tests.csproj b/Tests/Plugin.FirebasePushNotifications.Tests/Plugin.FirebasePushNotifications.Tests.csproj
index 492b3ab..451990d 100644
--- a/Tests/Plugin.FirebasePushNotifications.Tests/Plugin.FirebasePushNotifications.Tests.csproj
+++ b/Tests/Plugin.FirebasePushNotifications.Tests/Plugin.FirebasePushNotifications.Tests.csproj
@@ -17,7 +17,7 @@
-
+