- Breaking change [Android]
zonedSchedule()'s implementation has switched to using desugaring instead of the ThreeTen Android Backport library. This required the plugin to update to using Android Gradle plugin 4.2.2 and applications may need to bump their Android Gradle plugin dependency to at least 4.2.2 as a result. Added a "Gradle setup" section underneath "Android setup" with details on the extra setup needed - [Android] Breaking change the following error codes included in
PlatformExceptions that can occur on Android have been updatedINVALID_ICON->invalid_iconINVALID_LARGE_ICON->invalid_large_iconINVALID_BIG_PICTURE->invalid_big_pictureINVALID_SOUND->invalid_soundINVALID_LED_DETAILS->invalid_led_detailsGET_ACTIVE_NOTIFICATIONS_ERROR_CODE->unsupported_os_versionGET_NOTIFICATION_CHANNELS_ERROR_CODE->getNotificationChannelsErrorGET_ACTIVE_NOTIFICATION_MESSAGING_STYLE_ERROR_CODE->getActiveNotificationMessagingStylePERMISSION_REQUEST_IN_PROGRESS->permissionRequestInProgress
- [Android] Breaking change the
categoryof theAndroidNotificationDetailsnow requires an instance of the newly addedAndroidNotificationCategoryclass instead of a string. This was to improve the discoverability of the APIs and improve the semantics as the category can specified in a similar fashion to using an enum value - Breaking change callbacks have now been reworked. There are now the following callbacks and both will pass an instance of the
NotificationResponseclassonDidReceiveNotificationResponse: invoked only when the app is running. This works for when a user has selected a notification or notification action. This replaces theonSelectNotificationcallback that existed before. For notification actions, the action needs to be configured to indicate the the app or user interface should be shown on invoking the action for this callback to be invoked i.e. by specifying theDarwinNotificationActionOption.foregroundoption on iOS and theshowsUserInterfaceproperty on Android. On macOS and Linux, as there's no support for background isolates it will always invoke this callbackonDidReceiveBackgroundNotificationResponse: invoked on a background isolate for when a user has selected a notification action. This replaces theonSelectNotificationActioncallback
- Breaking change the
NotificationAppLaunchDetailshas been updated to contain an instanceNotificationResponseclass with thepayloadbelonging to theNotificationResponseclass. This is to allow knowing more details about what caused the app to launch e.g. if a notification action was used to do so - [iOS][macOS] Breaking changes iOS and macOS classes have been renamed and refactored as they are based on the same operating system and share the same notification APIs. Rather than having a prefix of either
IOSorMacOS, these are now replaced by classes with aDarwinprefix. For example,IOSInitializationSettingscan be replaced withDarwinInitializationSettings - [macOS] Breaking change the
requestPermissions()method of theMacOSFlutterLocalNotificationsPluginclass now only accepts non-nullable parameters that default tofalse. This makes it consistent with the iOS implementation of the plugin - Added support for notification actions. Massive thanks to Sebastian Roth, Pieter van Loon and Yaroslav Pronin for their work on this. Note that on Apple's platforms, notification actions are only supported on iOS 10 or newer and macOS 10.14 or newer
- [Linux] Breaking change the linux notification categories defined by
LinuxNotificationCategoryno longer has factory constructors but has static constant fields instead to make the semantics more similar to access enum values - [Android] Updated how scheduled notifications are saved to shared preferences so it is done in the background. This is to fix issue 1378 where
pendingNotificationRequestsmethod may not report the correct number of scheduled notifications if it is invoked before the data had been saved to shared preferences - [Android] fixed issue 1702 by handling deprecation warnings using specific Android Intent APIs on Android 13 (API level 33) or newer
- [iOS]
getActiveNotifications()is now supported for iOS versions 10.0 or newer - [macOS]
getActiveNotifications()is now supported for macOS versions 10.14 or newer - [iOS][macOS] thanks to the PR from maprohu, the following features are now available
- the ability to request permissions to show critical notifications
- the ability to specify the interruption level of a notification. This is only applicable to iOS 15.0 and macOS 12.0 or newer.
- Updated minimum Flutter version to 2.8 as that aligns with the minimum Dart SDK version of 2.1.5 required by one of
flutter_local_notifications_linux's dependencies (dbus) - Example app has been updated so that each notification has its own notification ID. Previously, they were all given a notification ID of
0 - Updated Android setup docs to mention setting up
compileSdkVersion