- Added macOS implementation of the plugin
- The
schedule,showDailyAtTimeandshowWeeklyAtDayAndTimemethods has been marked as a deprecated due to problems with time zones,particularly when it comes to daylight savings. - Added the
zonedSchedulemethod to the plugin that allows for scheduling notifications to occur on a specific date and time relative a specific time zone. This can be used to schedule daily and weekly notifications as well. The example app has been updated to demonstrate its usage. Note that to support time zone-based scheduling, the plugin now depends on thetimezonepackage so that an instance of theTZDateTimeclass is required to the specify the time the notification should occur. This should work in most cases as it is IANA-based and native platforms have time zones that are IANA-based as well. To support time zone aware dates on older versions of Android (which use older Java APIs), the plugin depends on the ThreeTen Android Backport library. Once Flutter's support for Android Studio 4.0 and Android Gradle plugin 4.0 has stabilised, the plugin will be updated to make use of desugaring instead of relying on the ThreeTen Android Backport library. - [Android] As part of cleaning up the plugin, I'm removing th kludge I put in version 0.3.4 that I stated I would eventually remove. This was to fix the timestamps of notifications (relates to this issue) scheduled prior to 0.3.4. This will make the plugin more easier to maintain
- [Android] Fixed an issue where the error message for an invalid source resource wasn't formatted correctly to include the name of the specified resource
- [Android] Added
androidAllowWhileIdleboolean argument to theperiodicallyShowmethod. When set to true, this changes how recurring notifications are shown so that the AndroidAlarmManagerAPI is used to schedule a notification with exact timing. When the notification appears, the next one is scheduled after that. This is get around the limitations where theAlarmManagerAPIs don't provide a way for work to be repeated with precising timing regardless of the power mode.
The example app has been updated to include these changes so that it can be used as a reference as well - [iOS] Updated the details in the plugin's podspec file
- Breaking change The
InitializationSettingsandNotificationDetailsclasses no longer have positional parameters but now have named parameters calledandroidandiOSfor passing in data specific to Android and iOS. TheremacOSnamed parameter has also been added for passing data specific to macOS - Breaking change The
toMapmethod that was used internally to transfer data over platform channels is no longer publicly accessible - Breaking change All enum values have been renamed to follow lower camel case convention. This affects the following enums
DayAndroidNotificationChannelActionImportance(note: asdefaultis a keyword, what use to beDefaultis nowdefaultImportance)Priority(note: asdefaultis a keyword, what use to beDefaultis nowdefaultPriority)GroupAlertBehaviorNotificationVisibilityRepeatInterval
- Breaking change assertions have been added to the
IOSInitializationSettingsconstructor to prevent null values being passed in - Updated example app so that code for demonstrating functionality that is specific to a platform are only visible when running on the appropriate platform
- Bumped
e2edev dependency - Bumped Android dependencies
- Updated example app's Proguard rules file to match latest configuration required by GSON
- Bumped lower bound of Dart SDK dependency to 2.6