An extension of flutter local notification, to simplify local notifications

Overview

Locally

Pub Version

flutter local notification

Locally helps developers create local notification with flutter on both Android and IOS platforms, it depends on the flutter_local_notification plugin and tries to make usage more simple and user friendly.

Screenshots as obtained from flutter_local_notification

Android iOS

Acknowledgements

Usage

Show basic notification

//
Locally locally = Locally(
          context: context,
          payload: 'test',
          pageRoute: MaterialPageRoute(builder: (context) => SecondScreen(title: title.text, message: message.text)),
          appIcon: 'mipmap/ic_launcher',
      );

      locally.show(title: title.text, message: message.text);

show notification

locally.show(title: title.text, message: message.text);

schedule notification

locally.schedule(title: title.text, message: message.text, duration: Duration(seconds: 5));

Show a notification with a specified interval periodically

locally.showPeriodically(title: title.text, message: message.text, repeatInterval: Repeat.Hourly);

Show a daily notification at a specific timely

locally.showDailyAtTime(title: title.text, message: message.text, time: Time.hour);

Show a weekly notification on specific day and time

locally.showWeeklyAtDayAndTime(title: title.text, message: message.text, time: Time.minute, day: Days.monday);

Retrieve pending notification requests

locally.retrievePendingNotifications();

Cancelling/deleting a notification

locally.cancel(0);

Cancelling/deleting all notification

locally.cancelAll();

Get details on if the app was launched via a notification created by this plugin

locally.getDetailsIfAppWasLaunchedViaNotification();

After installation in pubspec.yaml: you will need to carry out the following configuration on both platforms respectively

Android Configuration

If your application needs the ability to schedule notifications then you need to request permissions to be notified when the phone has been booted as scheduled notifications uses the AlarmManager API to determine when notifications should be displayed. However, they are cleared when a phone has been turned off. Requesting permission requires adding the following to the manifest (i.e. your application's AndroidManifest.xml file)

<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>

The following is also needed to ensure scheduled notifications remain scheduled upon a reboot (this is handled by the plugin)

<receiver android:name="com.dexterous.flutterlocalnotifications.ScheduledNotificationBootReceiver">
    <intent-filter>
        <action android:name="android.intent.action.BOOT_COMPLETED"></action>
    </intent-filter>
</receiver>

Developers will also need to add the following so that plugin can handle displaying scheduled notifications

<receiver android:name="com.dexterous.flutterlocalnotifications.ScheduledNotificationReceiver" />

If the vibration pattern of an Android notification will be customised then add the following

<uses-permission android:name="android.permission.VIBRATE" />

Here's and example of what your AndroidManifest.xml should look like here

Release build configuration

When doing a release build of your app, which is the default setting when building an APK or app bundle, you'll likely need to customise your ProGuard configuration file as per this link and add the following line.

-keep class com.dexterous.** { *; }

After doing so, rules specific to the GSON dependency being used by the plugin will also needed to be added. These rules can be found here. The example app has a consolidated Proguard rules (proguard-rules.pro) file that combines these together for reference here.

You will also need to ensure that you have configured the resources that should be kept so that resources like your notification icons aren't discarded by the R8 compiler by following the instructions here. Without doing this, you might not see the icon you've specified in your app's notifications. The configuration used by the example app can be found here where it is specifying that all drawable resources should be kept, as well as the file used to play a custom notification sound (sound file is located here).

iOS integration

General setup

Add the following lines to the didFinishLaunchingWithOptions method in the AppDelegate.m/AppDelegate.swift file of your iOS project

Objective-C:

if (@available(iOS 10.0, *)) {
  [UNUserNotificationCenter currentNotificationCenter].delegate = (id<UNUserNotificationCenterDelegate>) self;
}

Swift:

if #available(iOS 10.0, *) {
  UNUserNotificationCenter.current().delegate = self as? UNUserNotificationCenterDelegate
}

By design, iOS applications do not display notifications when they're in the foreground. For iOS 10+, use the presentation options to control the behaviour for when a notification is triggered while the app is in the foreground. For older versions of iOS, you need to handle the callback as part of specifying the method that should be fired to the onDidReceiveLocalNotification argument when creating an instance IOSInitializationSettings object that is passed to the function for initializing the plugin. A snippet below from the sample app shows how this can be done

If you have set notifications to be periodically shown, then on older iOS versions (< 10), if the application was uninstalled without cancelling all alarms then the next time it's installed you may see the "old" notifications being fired. If this is not the desired behaviour, then you can add code similar to the following to the didFinishLaunchingWithOptions method of your AppDelegate class.

Objective-C:

if(![[NSUserDefaults standardUserDefaults]objectForKey:@"Notification"]){
    [[UIApplication sharedApplication] cancelAllLocalNotifications];
    [[NSUserDefaults standardUserDefaults]setBool:YES forKey:@"Notification"];
}

Swift:

if(!UserDefaults.standard.bool(forKey: "Notification")) {
    UIApplication.shared.cancelAllLocalNotifications()
    UserDefaults.standard.set(true, forKey: "Notification")
}

Custom notification sound restrictions

When using custom notification sound, developers should be aware that iOS enforces restrictions on this (e.g. supported file formats). As of this writing, this is documented by Apple at

https://developer.apple.com/documentation/usernotifications/unnotificationsound?language=objc

Using firebase_messaging with flutter_local_notifications

Previously, there were issue that prevented this plugin working properly with the firebase_messaging plugin. This meant that callbacks from each plugin might not be invoked. Version 6.0.13 of firebase_messaging should resolve this issue so please bump your firebase_messaging dependency and follow the steps covered in firebase_messaging's readme file.

Testing

As the plugin class is not static, it is possible to mock and verify it's behaviour when writing tests as part of your application. Check the source code for a sample test suite can be found at test/flutter_local_notifications_test.dart that demonstrates how this can be done. If you decide to use the plugin class directly as part of your tests, note that the methods will be mostly a no-op and methods that return data will return default values. Part of this is because the plugin detects if you're running on a supported plugin to determine which platform implementation of the plugin should be used. If it's neither Android or iOS, then it defaults to the aforementioned behaviour to reduce friction when writing tests. If this not desired then consider using mocks. Note there is also a named constructor that can be used to pass the platform for the plugin to resolve the desired platform-specific implementation.

You might also like...

Flutter plugin for notification read & reply

Flutter plugin for notification read & reply

Reflex Flutter plugin for notification read & reply. Compatibility ✅ Android ❌ i

Dec 20, 2022

Audio manager - A flutter plugin for music playback, including notification handling.

Audio manager - A flutter plugin for music playback, including notification handling.

audio_manager A flutter plugin for music playback, including notification handling. This plugin is developed for iOS based on AVPlayer, while android

Oct 25, 2022

The easiest way to show notification.

The easiest way to show notification.

Starlight Notification The easiest way to show notification. Features ☑️ Show Notification ☑️ Cancel Notification ☑️ Cancel All Notification Watch the

Oct 19, 2022

Android application checking the new notes on Pronote and warns by notification

Android application checking the new notes on Pronote and warns by notification

Pronote notification Application Android vérifiant les nouvelles notes sur Pronote et prévient par notification Fonctionnalités Application codée et t

Sep 4, 2022

The app is for notification of notice from teachers for students with alerts.

wce_notice_board A new Flutter project. Getting Started This project is a starting point for a Flutter application. A few resources to get you started

Sep 24, 2022

Flutter Music Player - First Open Source Flutter based material design music player with audio plugin to play local music files.

Flutter Music Player - First Open Source Flutter based material design music player with audio plugin to play local music files.

Flutter Music Player First Open Source Flutter based Beautiful Material Design Music Player(Online Radio will be added soon.) Demo App Play Store BETA

Jan 8, 2023

A simple Flutter Note Taking app with local database.

A simple Flutter Note Taking app with local database.

Flutter Simple & Lightweight Note App Flutter Simple & Lightweight Note App UI/UX Credit: https://dribbble.com/shots/11875872-A-simple-and-lightweight

Nov 10, 2022

Todo Flutter application with sqflite as a local database and bloc state management.

Todo Flutter application with sqflite as a local database and bloc state management.

Todo App A Flutter application developed to add todo tasks and handles it I used Sqflite as a local database to store all the tasks I used flutter_sli

Oct 17, 2022

🚀 Full-Stack Flutter application, encoded using Dart. Utilizes native device features 📷 and stores user data on a local SQFLite database. ✔

great_places_app A new Flutter project. Getting Started This project is a starting point for a Flutter application. A few resources to get you started

Jan 24, 2022
Comments
  • Example of how set time

    Example of how set time

    I like this package, it makes notifications a lot easier!

    I am having a problem getting the following to work

    locally.showDailyAtTime(title: title.text, message: message.text, time: Time.hour);

    Could you show an example say time equals 9:00 in the morning?

    Thanks

    opened by johnareid54 5
  • Progress notification

    Progress notification

    Hello, First, thank you for making an easy-to-use layer above flutter_local_notification. I'm wondering if there's any way to show progress notifications using this package. I didn't come across any in the examples.

    opened by gurupras 0
  • ++ update this great idea!

    ++ update this great idea!

    This package is a great idea. flutter_local_notifications is solid, but clearly the API is too low-level for garden variety notification handling. Please consider updating this to work with the current flutter_local_notifications. If I don't force version 5 in pubspec, I get the usual long narrative about dependency conflicts. If I do force version 5, I think that clarifies the issue, which seems to be:

    Because every version of locally depends on flutter_local_notifications ^1.4.1 and MoodTriggers2 depends on flutter_local_notifications ^5.0.0+1, locally is forbidden.

    opened by willhaslett 6
  • Open pageroute

    Open pageroute

    Hi, when i do locally.show(title: title, message: message); and there is a pageroute the page goes automatic to the pageroute and not when i click it. is it normal? how can i do to go to the pageroute when i click in the banner ?

    opened by brasizza 7
Owner
Samuel Ezedi
Futurist, Music Junkie and Software Engineer
Samuel Ezedi
Flutter Local Notification Test APP

Local Notification Test App For Testing and Learning Local Notification Information I made it by referring to the site below [flutter] local notificat

SharkBSJ 1 Nov 20, 2021
A Flutter package to simplify firebase authentication.

firebase_authentication A Flutter package to simplify firebase authentication. Development State This is in a very, very early stage. It's a draft bas

Daniele Cambi 32 Apr 24, 2022
No New Notifications App

nnn_app NNN podcast streamer Getting Started This project is a starting point for a Flutter application. A few resources to get you started if this is

null 47 Dec 28, 2022
A web dashboard that allows you to monitor your Chia farm and sends notifications when blocks are found and new plots are completed through a discord bot. It can link multiple farmers/harvesters to your account.

farmr A web dashboard that allows you to monitor your Chia farm and sends notifications when blocks are found and new plots are completed through a di

Gil Nobrega 261 Jan 2, 2023
This design has been created for educational purposes. Also this project has integrated push notifications with firebase and my own server in python.

Ui Clone of the Nequi application This design has been created for educational purposes. Also this project has integrated push notifications with fire

Juan Suarez 3 Nov 17, 2022
Building a Chat App with Firebase, Image Upload, Push Notifications

chat_app A new Flutter project. Getting Started This project is a starting point for a Flutter application. A few resources to get you started if this

Trần Văn Nguyên 2 Nov 15, 2021
Notifications for Deployment Steps of the JWST

Where is Webb? An android app that provides notifications about the deployment s

null 12 Dec 25, 2022
A Flutter package for show custom in-app notification.

?? in_app_notification A Flutter package to show custom in-app notification with any Widgets. ✍️ Usage Import it. dependencies: in_app_notificatio

CBcloud 18 Oct 27, 2022
Flutter notification using firebase fcm

fcm_flutter_notifications A new Flutter project. Getting Started This project is a starting point for a Flutter application. A few resources to get yo

Nisha Jain 1 Jan 31, 2022
Reminder App using Firebase Notification Flutter

Reminder App using Firebase Notification Flutter Reminder app which is used to create task as reminder. In this app, I have used Firebase notification

Iqrar Ijaz 3 Aug 8, 2022