Stable release:
A notification is a message you display to the user outside of your app's normal UI. When you tell the system to issue a notification, it first appears as an icon in the notification area. To see the details of the notification, the user opens the notification drawer. Both the notification area and the notification drawer are system-controlled areas that the user can view at any time.
The plugin can be installed via Cordova-CLI and is publicly available on NPM.
Execute from the projects root folder:
$ cordova plugin add cordova-plugin-local-notification
Install a specific version:
$ cordova plugin add cordova-plugin-local-notification@VERSION
Install the latest head version:
$ cordova plugin add https://github.com/katzer/cordova-plugin-local-notifications.git
Install from a branch:
$ cordova plugin add https://github.com/katzer/cordova-plugin-local-notifications.git#branch
Install from a tag:
$ cordova plugin add https://github.com/katzer/cordova-plugin-local-notifications.git#v1.0.0
Install from a specific commit:
$ cordova plugin add https://github.com/katzer/cordova-plugin-local-notifications.git#5e4f131
Install from local source:
$ cordova plugin add <path> --nofetch --nosave --link
Version 0.9.0-beta.3 (13.02.2018)
cordova-android
older than 13.0.0
and supports minimum cordova-android
version 6.0.0
which is Android version 4.1
cordova-android
version from 6.0.0
to 13.0.0
, which raised the minimum Android version from 4.1
SDK 16
to 7.0
SDK 24
cordova-ios
version from 4.3.0
to 7.0.0
3.6.0
to 12.0.0
cordova-plugin-device
version from 2.0.0
to 3.0.0
The Default channel id was changed from default-channel-id
to default_channel
. If you upgrade to this version and schedule notifications, there will be two channels from then on, the old one and the new one. You can remove the old one with deleteChannel.
iOSForeground is true
by default
The property vibrate
was renamed to androidChannelEnableVibration.
A notification will be always showed in the notification center like on Android. Happens also if iOSForeground is false
.
Notifications with an old trigger.at
date will be shown when you schedule them. Before they were ignored.
trigger.at
date more than 5 seconds in the past will be ignored. iOS did always ignore passed notifications.1
instead of 0
.The plugin creates the object cordova.plugins.notification.local
and is accessible after the deviceready
event has been fired.
You can schedule a single notification as follows:
cordova.plugins.notification.local.schedule({ id: 1, title: 'My first notification', text: 'Thats pretty easy...' });
You have always to set an unique ID for every notification. The plugin does not automatically set an ID. If you do not set an ID, it will default to 1
. If you reuse an ID of a previous scheduled notification, the previous one will be canceled.
The plugin allows to schedule multiple notifications at once:
cordova.plugins.notification.local.schedule([ { id: 1, title: 'My first notification' }, { id: 2, title: 'My second notification' } ]);
On each platform are limits about how much notifications can be scheduled:
Repeating notifications count as 1 notification.
A notification does have a set of configurable properties. See all properties.
On iOS and Android 13+ permissions must be requested from the user before notifications can be posted. This is done automatically, when scheduling a notification. If you want do it manually, you can use requestPermission. Please keep in mind, that the user can still change the permission later in the system. If you want to check, if you have still the permission to post notifications, use hasPermission.
On Android, the permissions must be requested since Android 13. In earlier versions no permissions must be granted.
Since Android 8 notification channels must be created to post noitifications. A default channel will be created for you, if you do not create one. You can also create your own channel by createChannel or when scheduling a notification. For deleting a channel use deleteChannel.
Inexact alarms since Android 12Since Android 12 alarms will be scheduled inexact by default. On Android 12 (API level 31) and higher, the system invokes the alarm within one hour of the supplied trigger time, unless any battery-saving restrictions are in effect such as battery saver or Doze. Most apps can schedule tasks and events using inexact alarms to complete several common use cases. If your app's core functionality depends on a precisely-timed alarm â such as for an alarm clock app or a calendar app â then it's OK to use an exact alarm instead.
See Schedule exact alarms, if you want use exact alarms.
See Android documentation for more information.
App hibernation / App unusedIf your app runs on Android 12 and newer and the user doesn't interact with your app for 3 months, the system places your app in a hibernation state which will cancel all pending notifications and revokes permissions. When the user interacts with your app again, the app exits hibernation and the notifications will be re-scheduled. It doesn't count as app usage if the user dismisses a notification. If the app is hibernated, the user will get informed about it:
The documentation says that permissions are also revoked, but testing the hibernation behavior on an Android 15 emulator showed, that the app keeps the permission to post notifications.
adb shell device_config get permissions \ auto_revoke_unused_threshold_millis2
which will return 7776000000
milliseconds on an Android 15 Emulator which are nearly 3 months (~2.96 months).You can get the status of the setting by calling getUnusedAppRestrictionsStatus. To redirect the user to the setting, call openManageUnusedAppRestrictions. Before opening the setting, you can inform the user about this behavior and explain which setting he has to deactivate. When opening the settings, the system will not scroll to the right entry and the setting is named differently on different Android versions:
Sample Android 12:
On other Android versions it is named differently:
Android 13/14:
Android 15:
Android has two power-saving features that extend battery life for users by managing how apps behave when a device isn't connected to a power source: Doze and App Standby. Doze reduces battery consumption by deferring background CPU and network activity for apps when the device is unused for long periods of time. App Standby defers background network activity for apps with no recent user activity.
To fire notifications when the device is in doze mode, you can schedule notifications with the property androidAllowWhileIdle.
App Standby does not affect you when showing a notification.
You can read everything about it in the Android documentatation.
Android removes all alarms when the app is updated. The plugin reschedules all alarms by a BroadcastReceiver listening to ACTION_MY_PACKAGE_REPLACED.
Android removes all alarms when the device reboots. The plugin reschedules all alarms by a BroadcastReceiver listening to ACTION_BOOT_COMPLETED, but only after the device has been unlocked.
If you use SCHEDULE_EXACT_ALARM for scheduling exact alarms and the user permits the permission in the "Alarms & Reminders", inexact alarms will be rescheduled as exact alarms. This is done by a BroadcastReceiver listening to ACTION_SCHEDULE_EXACT_ALARM_PERMISSION_STATE_CHANGED. This action will not be called if the user revokes the permission. All exact alarms will be canceled then.
Android 15: Alarms get canceled onForce stop
Since Android 15 all pending alarms will get canceled if the user force stops an app, this is a change by Google, see https://developer.android.com/about/versions/15/behavior-changes-all#enhanced-stop-states. The alarms will be re-registered, if the user starts the app again. If the user clears the app from the app stack the alarms will not get canceled.
Keep in mind, that force stopping is only known by advised users and if they do it, they have a reason to do this and they should be aware, that the app will no longer function correctly as the System also states when clicking on Force stop
by showing an alert with the message If you force stop an app, it may misbehave.
You can add actions, which can be a button or an input to a notification. Before you can use them you have to pre-define them:
cordova.plugins.notification.local.addActions('YES_NO_CATEGORY', [ { id: 'YES_ACTION', title: 'Yes' }, { id: 'NO_ACTION', title: 'No' } ]);
Then you have to assign the defined actions when scheduling a notification:
cordova.plugins.notification.local.schedule({ id: 1, title: 'Justin Rhyss', text: 'Do you want to go see a movie tonight?', actions: 'YES_NO_CATEGORY' });
On iOS the actions are not visible by default. You have to long press on the notification to see them.
Icons on action buttons are not possible. Android had supported it, but stopped this in Android 7.
The plugin knows two types of actions button
and input
. If you do not specifiy a type, an action is by default a button.
You can define an action as input.
Register actions:
cordova.plugins.notification.local.addActions('REPLY_NO_CATEGORY', [ { id: 'REPLY_ACTION', type: 'input', title: 'Reply', emptyText: 'Type message' }, { id: 'NO_ACTION', title: 'No' } ]);
Schedule with registered actions:
cordova.plugins.notification.local.schedule({ id: 1, title: 'Justin Rhyss', text: 'Do you want to go see a movie tonight?', actions: 'REPLY_NO_CATEGORY' });
OS native documentation:
You can subscribe to an action event.
Example:
cordova.plugins.notification.local.addActions('YES_NO_CATEGORY', [ { id: 'YES_ACTION', title: 'Yes' }, { id: 'NO_ACTION', title: 'No' } ]);
You have to subscribe to the action id:
cordova.plugins.notification.local.on('YES_ACTION', (notification, eopts) => { // Your code });
To unsubcribe see Events.
Actions do have a set of configurable properties. Not all of them are supported across all platforms.
Property Type Android iOS id button+input x x title button+input x x launch button+input x x ui button+input x needsAuth button+input x icon button+input x emptyText input x x submitTitle input x editable input x choices input x defaultValue inputNotifications may trigger immediately or depend on calendar or location.
Trigger at a fixed date:
cordova.plugins.notification.local.schedule({ id: 1, title: 'Design team meeting', text: '3:00 - 4:00 PM', trigger: { at: new Date(2017, 10, 27, 15) } });Property Type Value Android iOS at Date x x
Relative from now:
cordova.plugins.notification.local.schedule({ id: 1, title: 'Design team meeting', trigger: { in: 1, unit: 'hour' } });Property Type Value Android iOS in Int x x unit String
second
, minute
, hour
, day
, week
, month
, quarter
, year
x x
Repeat relative from now:
cordova.plugins.notification.local.schedule({ id: 1, title: 'Design team meeting', trigger: { every: 'day', count: 5 } // count is only supported by Android });Property Type Value Android iOS Note before Date x firstAt Date x count Int x every String
minute
, hour
, day
, week
, month
, quarter
, year
x x
Trigger every time the date matches:
cordova.plugins.notification.local.schedule({ id: 1, title: 'Happy Birthday!!!', trigger: { every: { month: 10, day: 27, hour: 9, minute: 0 } } });
To trigger when the user enters a region:
cordova.plugins.notification.local.schedule({ id: 1, title: 'Welcome to our office', trigger: { type: 'location', center: [x, y], radius: 15, notifyOnEntry: true } });Property Type Value Android iOS Note center Array
[lat, long]
x radius Int x notifyOnEntry Boolean x notifyOnExit Boolean x single Boolean x
Notifications can include an animated progress indicator that shows users the status of an ongoing operation.
cordova.plugins.notification.local.schedule({ id: 1, title: 'Sync in progress', text: 'Copied 2 of 10 files', androidProgressBar: { value: 20, // Default 0 maxValue: 100, // Default 100 indeterminate: false // Default false } });
Calls NotificationCompat.Builder#setProgress(int,int,boolean)
Use indeterminate mode for the progress bar when you do not know how long an operation will take. It shows a cyclic animation without a specific amount of progress indicated.
See ProgressBar#indeterminate-progress
Use determinate mode for the progress bar when you want to show that a specific quantity of progress has occurred. For example, the percent remaining of a file being retrieved, the amount records in a batch written to database, or the percent remaining of an audio file that is playing.
See ProgressBar#determinate-progress
Split the text by line breaks if the message comes from a single person and just too long to show in a single line.
cordova.plugins.notification.local.schedule({ id: 1, title: 'The Big Meeting', text: '4:15 - 5:15 PM\nBig Conference Room', androidSmallIcon: 'res://ic_menu_my_calendar', androidLargeIcon: 'res://large_icon' });
Instead of displaying multiple notifications, you can create one notification that summarizes them all.
cordova.plugins.notification.local.schedule({ id: 15, title: 'Chat with Irish', androidLargeIcon: 'res://large_icon', androidMessages: [ { person: 'Me', message: 'I miss you' }, { person: 'Irish', message: 'I miss you more!' }, { person: 'Me', message: 'I always miss you more by 10%' } ] });
To add a new message to the existing chat:
cordova.plugins.notification.local.update({ id: 15, androidMessages: [{ person: 'Irish', message: 'Bye bye' }] });
For displaying the messages, NotificationCompat.MessagingStyle will be used.
Properties forandroidMessages
androidMessags: [ { message: "The message", // Default is `null` date: 1234567890, // Timestamp in milliseconds for e.g. by Date.getTime(), default is System.currentTimeMillis() person: "Michael", // Default is `null` personIcon: "www/personIcon.png" // Default is `null` } ]
Will be drawn as a circle icon.
Possible values:
res://personIcon.png
- Resource from the app bundle, see documentationwww/personIcon.png
- Resource from the www
folder, see documentationshared://personIcon.png
- Resource from the shared folder, see documentationYour app can present multiple notifications as a single group:
cordova.plugins.notification.local.schedule([ { id: 1, title: 'Design team meeting', ... }, { id: 2, androidSummary: 'me@gmail.com', androidGroup: 'email', androidGroupSummary: true }, { id: 3, title: 'Please take all my money', ..., androidGroup: 'email' }, { id: 4, title: 'A question regarding this plugin', ..., androidGroup: 'email' }, { id: 5, title: 'Wellcome back home', ..., androidGroup: 'email' } ]);
The following settings will be used for the default Android channel.
{ androidChannelId: "default_channel", androidChannelName: "Default channel", androidChannelImportance: "IMPORTANCE_DEFAULT" }
You can change the defaults by calling setDefaults or you can overwrite them, when scheduling a notification or creating a channel.
The default channel id was changed in version 1.1.0 from default-channel-id
to default_channel
.
A channel can be created directly when posting a notification:
cordova.plugins.notification.local.schedule({ id: 1, title: 'My first notification', androidChannelId: "my_channel_01", androidChannelName: "My Channel Name" });
If you omit some channel properties the default channel properties will be used.
Android: Schedule exact alarmsSince Android 12 notifications will be scheduled inexact by default. On Android 12 (API level 31) and higher, the system invokes the alarm within one hour of the supplied trigger time, unless any battery-saving restrictions are in effect such as battery saver or Doze. Most apps can schedule tasks and events using inexact alarms to complete several common use cases. If your app's core functionality depends on a precisely-timed alarm â such as for an alarm clock app or a calendar app â then it's OK to use an exact alarm instead.
See Android documentation for more information.
You have two options, to schedule exact alarms.
Exact alarms: User grants permissionYou must add the SCHEDULE_EXACT_ALARM permission to AndroidManifest.xml
. You can do this with your config.xml
.
First add the Android xml namespace to your widget
tag:
<widget ... xmlns:android="http://schemas.android.com/apk/res/android">
Then add the following config-file declaration to your config.xml
:
<config-file target="AndroidManifest.xml" parent="/manifest"> <uses-permission android:name="android.permission.SCHEDULE_EXACT_ALARM" /> </config-file>
This tells Android that your app wants to have the permission to schedule exact alarms.
On Android 12 SCHEDULE_EXACT_ALARM
is pre-granted. On Android 13 and newer the user has to permit this in the "Alarms & Reminders" setting, which you can open by openAlarmSettings. You can use the resume event of Cordova to check if exact alarms are permitted by canScheduleExactAlarms. If you have already posted inexact alarms, before the user granted the exact alarm permission, inexact alarms will be automatically rescheduled by this plugin as exact alarms. The downside is, when the user revokes the exact alarm permission, your app will be killed and all exact alarms will be canceled without rescheduling them as inexact alarms. You have to reschedule them the next time the user starts your app. You can read everything about it in the Android documentation.
This is a very special case you should think about. When you declare your app as a calendar or alarm clock app, the app have to fullfill the requirements and must be approved by Google in the Play Store. Google could remove the app from the store if the app is found to be misusing the permission.
Calendar or alarm clock apps need to send calendar reminders, wake-up alarms, or alerts when the app is no longer running. These apps can request the USE_EXACT_ALARM permission. The USE_EXACT_ALARM
permission will be granted on install, and apps holding this permission will be able to schedule exact alarms just like apps with the SCHEDULE_EXACT_ALARM
permission. The advantage is, that this permission can't be revoked by the user.
To declare the USE_EXACT_ALARM
permission in the AndroidManifest.xml
, you can do this with your config.xml
.
First add the Android xml namespace to your widget
tag:
<widget ... xmlns:android="http://schemas.android.com/apk/res/android">
Then add the following config-file declaration to your config.xml
:
<config-file target="AndroidManifest.xml" parent="/manifest"> <uses-permission android:name="android.permission.SCHEDULE_EXACT_ALARM" android:maxSdkVersion="32" /> <uses-permission android:name="android.permission.USE_EXACT_ALARM" /> </config-file>
The permission SCHEDULE_EXACT_ALARM
must be decared to be backward compatible with Android 12. The is why the permission is limited by android:maxSdkVersion="32"
, see StackOverflow or the documentation of USE_EXACT_ALARM.
The permission USE_EXACT_ALARM
exists since Android 13 and will be used from then on.
The following events are supported: add
, trigger
, click
, clear
, cancel
, update
, clearall
and cancelall
and action events.
cordova.plugins.notification.local.on(event, callback, scope);
To unsubscribe from events:
cordova.plugins.notification.local.un(event, callback, scope);
Note: You have to provide the exact same callback to cordova.plugins.notification.local.un
as you provided to cordova.plugins.notification.local.on
to make unsubscribing work. Hence you should define your callback as a separate function, not inline. If you want to use this
inside of your callback, you also have to provide this
as scope
to cordova.plugins.notification.local.on
.
Not an official interface, however its possible to manually fire events.
cordova.plugins.notification.local.core.fireEvent(event, args);
Check the launchDetails
to find out if the app was launched by clicking on a notification.
document.addEventListener('deviceready', function () { console.log(cordova.plugins.notification.local.launchDetails); }, false);
It might be possible that the underlying framework like Ionic is not compatible with the launch process defined by cordova. With the result that the plugin fires the click event on app start before the app is able to listen for the events.
Therefore its possible to fire the queued events manually by defining a global variable.
window.skipLocalNotificationReady = true
Once the app and Ionic is ready, you can fire the queued events manually.
cordova.plugins.notification.local.fireQueuedEvents();
All methods work asynchronous and accept callback methods.
Note: This list has still to be documented.
Method Android iOS Comment addActions x x Defines some actions in a group to re-use them. See Actions. cancel x x cancelAll x x canScheduleExactAlarms x - Checks if exact alarms are permitted. Since Android 13 inexact alarms are permitted by default. clear x x On Android, it clears a already posted notification from the statusbar. clearAll x x createChannel x - Creates a channel for Android to post notifications on. deleteChannel x - Delete a channel by an id. fireQueuedEvents x x Fire queued events once the device is ready and all listeners are registered. This is done automatically, whendeviceready
is fired. Calls the Plugin with a ready
action. get getAll getDefaults x x Gets the default for notification properties. See getDefaults getIds getScheduled getScheduledIds getTriggered getTriggeredIds  getType getUnusedAppRestrictionsStatus x - Gets the status of the unused app restrictions status hasActions x x Checks if an action group exists by id like hasActions('YES_NO_CATEGORY', (hasActions) => {}, this)
hasPermission x x Checks if the app has permission to post notifications. iOSClearBadge - x Clears the badge isPresent isScheduled isTriggered on x x Listen to an Event openAlarmSettings x - Supported since Android 12. Opens the "Alarms & Reminders"-settings, where the user can manually enable exact alarms. openManageUnusedAppRestrictions x - Opens the unused app restriction settings directly in the app. openNotificationSettings x (x) Opens the notifications settings since Android 8. On iOS it opens the app settings. removeActions x x Removes actions by a group id like removeActions('YES_NO_CATEGORY', () => {}, this)
which were previously created by addActions
requestPermission x x Request permission to post notifications. This is called automatically when scheduling notifications. schedule x x Schedules a single notification or multiple notifications. Accepts an object or an Array. setDefaults x x Overwrites default values of notifications. Gets the default for notification properties. un x x Unlisten to an Event update x x Updates a single notification or multiple notifications. The notification id has to be set to update a notification. Accepts an obect or an Array.
Checks if the user has enabled the "Alarms & Reminders"-setting. If not, the notificiatons will be scheduled inexact, which is still ok and will only be delayed by some minutes.
true
in the successCallback
.Creates a channel, if it not already exists. A channel is not changeable, after it is created. This is a restriction by Android. If a notification does not specify a androidChannelId a default channel will be used.
For setting the channel, use androidChannelId when scheduling a notification.
Overview of all properties for a channel:
cordova.plugins.notification.local.createChannel({ androidChannelId: "my_channel_01", // string, to separate something in the id, use "_" instead of "-" androidChannelName: "My Channel Name", // string, defaults to "Default Channel" androidChannelDescription: "Description of channel", // string (optional) androidChannelImportance: "IMPORTANCE_DEFAULT", // string (optional) androidChannelEnableLights: true, // boolean (optional), default is false androidChannelEnableVibration: true, // boolean (optional), default is false sound: 'www/audio/ring.mp3', // string (optional) androidChannelSoundUsage: 5 // int (optional), default is USAGE_NOTIFICATION }, successCallback, this)
Property documentation:
Deletes a Android channel.
Example:
cordova.plugins.notification.local.deleteChannel("my_channel_id", successCallback, this)
These will delete all associated notificiations for this channel. If you create a new channel with the same id, the deleted channel will be un-deleted with all of the same settings it had before it was deleted, see NotificationManagerCompat.deleteNotificationChannel
Returns the default values all properties on each platform.
Example:
cordova.plugins.notification.local.getDefaults();getUnusedAppRestrictionsStatus
Returns the status of unused app restrictions also called app hibernation, which was introduced in Android 11 and is backported to Android 6 through the Google Play Store. From Android 6 to 11, only permissions gets revoked, what does not affect notifications, because notifications needs requesting permissions only since Android 13. But because since Android 12 also notifications get canceled, the status is relevant for Android 12 and later. When unused app restrictions are active, it will return API_30_BACKPORT
(on Android 6 to 10), API_30
on Android 11 or API_31
on Android 12 and later. If it is disabled, DISABLED
will be returned.
Sample:
cordova.plugins.notification.local.getUnusedAppRestrictionsStatus( (status) => { // Shortcode for getting possibile status codes for status const statusCodes = cordova.plugins.notification.local.androidUnusedAppRestrictionsStatusCodes; // app hibernation is active on Android 12 and later if (status == statusCodes.API_31) { } }, this );
Possible status codes:
Name Value Description ERROR 0 The status of Unused App Restrictions could not be retrieved from this app e.g. if the user is in locked device boot mode. Check the logs for the reason. FEATURE_NOT_AVAILABLE 1 There are no available Unused App Restrictions for this app. This would happen on devices older then Android 6, but this plugin supports minimum Android 7. DISABLED 2 Any available Unused App Restrictions on the device are disabled for this app. In other words, this app is exempt from having its permissions automatically removed or being hibernated. API_30_BACKPORT 3 Unused App Restrictions introduced by Android API 30 (Android 11), and since made available on earlier (API 23-29 = Android 6 to 10) devices are enabled for this app: permission auto-reset. Note: This value is only used on API 29 (Android 10) or earlier devices. API_30 4 Unused App Restrictions introduced by Android API 30 (Android 11) are enabled for this app: permission auto-reset. Note: This value is only used on API 30 (Android 11) or later devices. API_31 5 Unused App Restrictions introduced by Android API 31 (Android 12) are enabled for this app: permission auto-reset and app hibernation. Note: This value is only used on API 31 (Android 12) or later devices.Checks if the app has permissions to post notifications.
cordova.plugins.notification.local.hasPermission(function (granted) { ... });
Clears the badge.
Android only. Since Android 12 (SDK 31).
Opens the Alarms & reminders
setting as an Activity when running on Android 12 (SDK 31) or later, where the user can enable exact alarms.
This is only available, if SCHEDULE_EXACT_ALARM is declared as permission in the AndroidManifest.xml
.
This method will not wait for the user to be returned back to the app. For this, the resume
-event can be used. The callback will just return OK
, after starting the activity.
successCallback
, without doing anything.Opens the unused app restriction settings directly in your app. The successCallback
will be called if the user returns to your app.
Sample:
cordova.plugins.notification.local.openManageUnusedAppRestrictions((result) => { // User has returned from the settings }, this);
You can check in the successCallback
what the user selected, by calling getUnusedAppRestrictionsStatus.
Opens the notifications settings of the app on Android 8 and newer. This method will not wait for the user to be returned back to the app. For this, the resume
-event can be used.
Request permission to post notifications. This is called automatically by the plugin when scheduling notifications, but you can also request it manually before scheduling notifications:
cordova.plugins.notification.local.requestPermission(function (granted) { ... });
If this method is called, a dialog will be shown to the user to ask for the permission.
The user can still allow/deny the permission through the system settings.
To check if permissions are granted, without calling this method, use hasPermission.
Changes default values of properties.
Example:
cordova.plugins.notification.local.setDefaults({ androidChannelId: "my_channel_01", title: "My default Title" });
List of changed properties on newer plugin versions.
Changes since version1.1.0
There were some properties renamed. You can still use the old ones, but you will get a deprecation warning in the log and they will be removed in future versions.
Old Property New Property autoClear androidAutoCancel badge badgeNumber channelDescription androidChannelDescription channelId androidChannelId channelImportance androidChannelImportance channelName androidChannelName clock Use forclock: boolean
= androidShowWhen: boolean
and for clock: 'chronometer'
= androidUsesChronometer: true
color androidColor defaults androidDefaults description androidChannelDescription foreground iOSForeground group androidGroup groupSummary androidGroupSummary icon androidLargeIcon iconType androidLargeIconType importance androidChannelImportance lockscreen androidLockscreen mediaSession Property was removed onlyAlertOnce androidOnlyAlertOnce prio Use androidChannelImportance
, androidAlarmType
and androidAllowWhileIdle
instead. priority Use androidChannelImportance
, androidAlarmType
and androidAllowWhileIdle
instead. progressBar androidProgressBar smallIcon androidSmallIcon sticky androidOngoing soundUsage androidChannelSoundUsage ongoing androidOngoing summary androidSummary text as Array androidMessages timeoutAfter androidTimeoutAfter titleCount androidTitleCount wakeup androidWakeUpScreen Changes on androidProgressBar
The default value changed from:
{enabled: false, value:0, maxValue:100, indeterminate:false}
to
null
The property androidProgressBar.enabled
is not supported anymore. Just set androidProgressBar: null
to disable the progressbar.
The property sound
takes no longer additionally a boolean, now only a string, which points to a sound file.
sound: true
is replaced with sound: 'default'
sound: false
is replaced with sound: null
1.1.1
There were some properties renamed. You can still use the old ones, but you will get a deprecation warning in the log and they will be removed in future versions.
Old Property New Property Reason vibrate androidChannelEnableVibration The vibration cannot be controlled on iOS. So this is a Android only property and can only be set on a channel. See androidChannelEnableVibrationThese properties can be used on all platforms, but some may behave differently on each platform.
Property Default Comment actions[]
Actions of a notification attachments []
List of resources, to attach to the notification. badgeNumber Android: 1
, iOS: -1
Sets the badge for the application. The behaviour differs on Android and iOS. data null
Custom data for the notification. Can be used, when the notification is send back to the app, e.g. by clicking on it. id 1
ID of a notification as number. launch true
If a click on the notification should launch the app. priority 0
(=PRIORITY_DEFAULT) Â Deprecated. Use androidChannelImportance, androidAlarmType and androidAllowWhileIdle silent false
iOS: Don't show a notification, make no sound, no vibration, when app is in foreground. Android: Don't show a notification (Does not create a Builder. Must be tested if that works) text ""
Text of the notification. Android features: 1. If the text contains line breaks (\n
) the notification style NotificationCompat.InboxStyle will be used. 2. If the text is longer then 44 chars, the notifications style NotificationCompat.BigTextStyle will be used. sound default
Sets the sound of a notification. On iOS it also turns on/off the vibration. title ""
(Sets the app name) Â Title of the notification. Has to be a String. If it is empty, the app name will be used. trigger {at: new Date(), type : "calendar"}
Notifications may trigger depend on time or location (iOS only)
These properties are only available on Android.
Property Default Comment androidAlarmTypeRTC_WAKEUP
androidAllowWhileIdle false
Alarm will be allowed to execute even when the system is in low-power idle (a.k.a. doze) modes. androidAutoCancel true
Make this notification automatically dismissed when the user touches it androidChannelDescription null
Sets the description
of a notification channel. androidChannelEnableLights false
Can be true
or false
and sets whether notifications posted to a notification channel should display notification lights, on devices that support that feature. androidChannelEnableVibration false
Enables the vibration of a channel. androidChannelId default_channel
Specifies the channel id to be posted on. androidChannelImportance IMPORTANCE_DEFAULT
Sets the importance of a notification channel androidChannelName Default channel
Set the channelName
for the notification to be posted on. See Android Notification Channels for more information. androidChannelSoundUsage 5
(=USAGE_NOTIFICATION) Sets the androidChannelSoundUsage of a notification channel. androidColor null
The notification background color for the small icon in the notification style. androidGroup null
Set this notification to be part of a group of notifications sharing the same key. Grouped notifications may display in a cluster or stack on devices which support such rendering. To make this notification the summary for its group, also call setGroupSummary(boolean). A sort order can be specified for group members by using setSortKey(String) (not implemented yet). Calls Notification.Builder#setGroup(java.lang.String) androidGroupSummary false
Set this notification to be the group summary for a group of notifications. Grouped notifications may display in a cluster or stack on devices which support such rendering. Requires a group key also be set using setGroup(String). The group summary may be suppressed if too few notifications are included in the group. Calls Notification.Builder#setGroupSummary(boolean) androidLargeIcon null
Add a large icon to the notification content view. androidLargeIconType square
Can be square
or circle
androidLockscreen true
If the entire notification should be shown on all lockscreens and while screen sharing. If the value is true
, Notification#VISIBILITY_PUBLIC will be set, otherwise Notification#VISIBILITY_SECRET. Sets Notification#visibility. androidMessages null
Array of messages to summarize notifications. NotificationCompat.MessagingStyle will be used. androidOngoing false
 Set whether this is an ongoing notification. Ongoing notifications cannot be dismissed by the user on locked devices, or by notification listeners, and some notifications (call, device management, media) cannot be dismissed on unlocked devices. androidOnlyAlertOnce false
Set this flag if you would only like the sound, vibrate and ticker to be played if the notification is not already showing (see documentation). androidProgressBar null
See documentation androidShowWhen true
If the Notification should show the when date. Before Version 1.1.0 called clock
. androidSmallIcon res://ic_popup_reminder
(=Bell icon) Set the small icon resource, which will be used to represent the notification in the status bar. androidSummary null
androidTimeoutAfter 0
Specifies a duration in milliseconds after which this notification should be canceled, if it is not already canceled. 0
means no automatic cancellation. androidTitleCount %n%
Additional text added to the title for displaying the number of messages if there is more than one. Only used, if using MessagingStyle. Use %n%
in the string for specifying the location of the number. androidUsesChronometer false
Show the Notification#when field as a stopwatch. Instead of presenting when as a timestamp, the notification will show an automatically updating display of the minutes and seconds since when. Useful when showing an elapsed time (like an ongoing phone call). Was former handeld by clock: 'chronometer'
androidWakeUpScreen true
If the screen should go on, when a notification arrives androidDefaults 0
Android 7 only. Sets the default notification options that will be used only on Android 7. Bitwise-or of: DEFAULT_SOUND, DEFAULT_VIBRATE, DEFAULT_LIGHTS. led false
Android 7 only. Can be a Hex-String like #FF00FF
or {color: '#FF00FF', on: 500, off: 500}
and sets the led of a notification. Replaced by androidChannelEnableLights.
These properties are only available on iOS.
Property Default value Comment iOSForegroundtrue
Displays a notification banner, when app is in foreground.
Default values for the properties can be get by getDefaults. Values can be changed by setDefaults
PropertyandroidAllowWhileIdle
Default: false
Alarm will be allowed to execute even when the system is in low-power idle (a.k.a. doze) modes.
This type of alarm must only be used for situations where it is actually required that the alarm go off while in idle -- a reasonable example would be for a calendar notification that should make a sound so the user is aware of it. When the alarm is dispatched, the app will also be added to the system's temporary power exemption list for approximately 10 seconds to allow that application to acquire further wake locks in which to complete its work.
This executes AlarmManager.setAndAllowWhileIdle or AlarmManager.setExactAndAllowWhileIdle depending on canScheduleExactAlarms.
PropertyandroidAlarmType
Default: RTC_WAKEUP
If the alarm should be scheduled on a specific time or in relevance to the time, when the device was booted and if the alarm should wakeup the device cpu (not the screen). See also the Android documentation Choose an alarm type.
Value Support Description RTC_WAKEUP x Alarm time inSystem.currentTimeMillis()
(wall clock time in UTC), which will wake up the device (the CPU not the screen) when it goes off. RTC Â x Alarm time in System.currentTimeMillis()
(wall clock time in UTC). This alarm does not wake the device up; if it goes off while the device is asleep, it will not be delivered until the next time the device wakes up. ELAPSED_REALTIME_WAKEUP - Alarm time in SystemClock.elapsedRealtime()
(time since boot, including sleep), which will wake up the device (the CPU, not the screen) when it goes off. ELAPSED_REALTIME - Alarm time in SystemClock.elapsedRealtime()
(time since boot, including sleep). This alarm does not wake the device up; if it goes off while the device is asleep, it will not be delivered until the next time the device wakes up. Property androidChannelEnableLights
Default: false
Can be true
or false
and sets whether notifications posted to a notification channel should display notification lights, on devices that support that feature.
Android documentation: https://developer.android.com/reference/android/app/NotificationChannel#enableLights(boolean)
PropertyandroidChannelEnableVibration
Default: false
Sets the vibration of a notification channel by setting NotificationChannel#enableVibration(boolean). On Android 7 this sets the vibration of a notification directly.
PropertyandroidChannelId
Default: default_channel
Sets the channelId
for the notification to be posted on. Use Snake Case for the id, which means, the id should be written in lowercase and words should be separated by underscores (_
) and not hyphens (-
) or whitespaces.
androidChannelImportance
Default: "IMPORTANCE_DEFAULT"
The property can have one of the following values:
Value Description IMPORTANCE_NONE A notification with no importance: shows nowhere, is blocked. IMPORTANCE_MIN Min notification importance: only shows in the shade, below the fold. IMPORTANCE_LOW Low notification importance: shows everywhere, but is not intrusive. IMPORTANCE_DEFAULT Default notification importance: shows everywhere, allowed to makes noise, but does not visually intrude. IMPORTANCE_HIGH Higher notification importance: shows everywhere, allowed to makes noise and peek. IMPORTANCE_MAX Highest notification importance: shows everywhere, allowed to makes noise, peek, and use full screen intents.See the Android documentation about this property.
See also NotificationChannel#NotificationChannel(java.lang.String,%20java.lang.CharSequence,%20int)
PropertyandroidChannelSoundUsage
Default: 5
(=USAGE_NOTIFICATION
)
The property can have one of the following values:
Property value Android variable Description 0 USAGE_UNKNOWN Usage value to use when the usage is unknown. 1 USAGE_MEDIA Usage value to use when the usage is media, such as music, or movie soundtracks. 2 USAGE_VOICE_COMMUNICATION Usage value to use when the usage is voice communications, such as telephony or VoIP. 3 USAGE_VOICE_COMMUNICATION_SIGNALLING Usage value to use when the usage is in-call signalling, such as with a "busy" beep, or DTMF tones. 4 USAGE_ALARM Usage value to use when the usage is an alarm (e.g. wake-up alarm). 5 USAGE_NOTIFICATION Usage value to use when the usage is notification. See other notification usages for more specialized uses. 6 USAGE_NOTIFICATION_RINGTONE Usage value to use when the usage is telephony ringtone. 7 USAGE_NOTIFICATION_COMMUNICATION_REQUEST This constant was deprecated in API level 33. Use USAGE_NOTIFICATION which is handled the same way as this usage by the audio framework. Usage value to use when the usage is a request to enter/end a communication, such as a VoIP communication or video-conference. 8 USAGE_NOTIFICATION_COMMUNICATION_INSTANT This constant was deprecated in API level 33. Use USAGE_NOTIFICATION which is handled the same way as this usage by the audio framework. Usage value to use when the usage is notification for an "instant" communication such as a chat, or SMS. 9 USAGE_NOTIFICATION_COMMUNICATION_DELAYED This constant was deprecated in API level 33. Use USAGE_NOTIFICATION which is handled the same way as this usage by the audio framework. Usage value to use when the usage is notification for a non-immediate type of communication such as e-mail. 10 USAGE_NOTIFICATION_EVENT Usage value to use when the usage is to attract the user's attention, such as a reminder or low battery warning. 11 USAGE_ASSISTANCE_ACCESSIBILITY Usage value to use when the usage is for accessibility, such as with a screen reader. 12 USAGE_ASSISTANCE_NAVIGATION_GUIDANCE Usage value to use when the usage is driving or navigation directions. 13 USAGE_ASSISTANCE_SONIFICATION Usage value to use when the usage is driving or navigation directions. 14 USAGE_GAME Usage value to use when the usage is media, such as music, or movie soundtracks. 16 USAGE_ASSISTANT Usage value to use for audio responses to user queries, audio instructions or help utterances.Default: null
The notification background color for the small icon. The color will only be applied on the notification style and not on the status bar. Set as Hex-String like #FF0000
. Calls Notification.Builder#setColor, which sets Notification#color.
androidLargeIcon
Default: null
Add a large icon to the notification content view. In the platform template, this image will be shown either on the right of the notification, with an aspect ratio of up to 16:9, or (when the notification is grouped) on the left in place of the small icon. Calls Notification.Builder#setLargeIcon(android.graphics.Bitmap).
Examples:
res://myLargeIcon.png
- Resource from the app bundle, see documentationwww/myLargeIcon.png
- www
folder, see documentationshared://myLargeIcon.png
- Shared folder, see documentation, Android onlyandroidSmallIcon
Default: res://ic_popup_reminder
(=Bell icon)
Sets the small icon resource, which will be used to represent the notification in the status bar. Since Android 8, the icon must be a monochrome icon, which can only use a white color on a transparent background. The icon will be colored by the system in respective circumstances. You can also use a vector drawable, but only for a res:\\
paths. You can get vector drawables on Google Fonts Icons as example or for using it. Just select the download for Android. To know, what vector drawables are, see the Android documentation Vector drawables overview.
The platform template for the expanded view will draw this icon in the left, unless a large icon has also been specified, in which case the small icon will be moved to the right-hand side. Calls Notification.Builder#setSmallIcon(int).
Example: res://myIcon.png
- Resource from the app bundle, see documentation
Only res://
paths are allowed.
Default: null
Used in the following cases:
text
property has line breaks.attachments
are used. If androidSummary
is not set, text
will be used.text
property is longer then 44 characters.Default: []
List of resources, to attach to the notification.
Only the first entry will be used as a bigPicture of NotificationCompat.BigPictureStyle.
Support resource patterns:
Example folded and unfolded:
The notification will be automatically unfolded in the notification center if your app presents only one notification. On the lockscreen the notification is always folded.
The visual and audio attachments to display alongside the notificationâs main content, see documentation of UNMutableNotificationContent.attachments.
Support resource patterns:
If you attach an image, the image will shown as a small image to the right in the notification and will be expanded when you press long on the notification.
Example folded and unfolded:
cordova.plugins.notification.local.schedule({ id: 1, title: 'Get a fan!', text: 'RB Leipzig is looking for a new fan! Click here to apply!', attachments: ['www/img/rb-leipzig.png'] });
Default:
1
- Each notification increments the badge count by 1-1
- Does not set any badgeSet the badge count. The behavior differs on Android and iOS.
Sets the number of items a notification represents. If the value is 1
, each notification increments the badge of the application by one. If 3 notifications are posted, the badge count will be 3
.
On newer Android versions, the badge count will be presented as a dot and shows the number, if you long press on the app icon.
For using the badge, see the Android documentation Modify a notification badge.
Calls NotificationCompat.Builder#setNumber(int).
A notification does not increment the badge, it sets the badge count directly. If 3 notifications are posted with the value of 1
, the badge count will be 1
and not 3
.
Specials of this value:
-1
: The badge will not be changed.0
: The badge will be cleared.Sets UNMutableNotificationContent#badge.
You can clear the badge with the function iOSClearBadge.
The badge will also be cleared, if you call clearAll
or cancelAll
.
Default: 1
ID of a notification as number. This has to be unique for every notification. If you do not set an ID, it will default to 1. If you use an ID of a previous scheduled notification again, the previous one will be canceled.
Default: true
Displays a notification banner when the app is in foreground, otherwise the notification would only make a noise (sound and vibrate), change the badge, but is not shown as a banner. Since iOS 14, the notification is always displayed in the Notification Center, no matter how this option is set to be consistent with Android. Renamed from foreground
to iOSForeground
and changed to true
by default in Version 1.1.0
.
Default: 0
(=PRIORITY_DEFAULT)
Deprecated since Android 8.
Replaced by androidChannelImportance, which sets also the priority value for notifications on Android 7.
This property had aditional functionality for the plugin, which is replaced by androidAlarmType and androidAllowWhileIdle.
When the value was PRIORITY_MIN(=-2), the alarm was scheduled with RTC. This can now be achieved by setting androidAlarmType to RTC
and androidAllowWhileIdle to false.
When the value was PRIORITY_DEFAULT(=0), which was set as the default for this plugin, the alarm was scheduled with RTC_WAKEUP. This can now be set by androidAlarmType.
When the value was PRIORITY_MAX(=2), the alarm was scheduled by AlarmManager.setAndAllowWhileIdle or AlarmManager.setExactAndAllowWhileIdle. This can now be set by androidAllowWhileIdle.
Default: default
The value default
sets the system default sound for a notification. The value null
will disable the sound. On Android it sets the sound of a notification channel. On iOS it enables/disables also the vibration.
Example:
res://mySound.wav
- Resource from the app bundle, see documentationshared://mySound.wav
- Shared folder, see documentation, Android onlywww/mySound.wav
- DocumentationBefore Android 8 it sets the sound of a notification. Since Android 8 it sets the sound of a notification channel.
Enables/disables also the vibration. If no sound is set, no vibration will occur.
You can package the audio data in an aiff
, wav
, or caf
file. Sound files must be less than 30 seconds in length. If the sound file is longer than 30 seconds, the system plays the default sound instead. See UNNotificationSound - Prepare Sound Resources.
The system looks in the following folders for the file:
/Library/Sounds
directory of the appâs container directory./Library/Sounds
directory of one of the appâs shared group container directories.See documentation UNNotificationSound#soundNamed.
If a property can take a resource, the following patterns could be used. Not all patterns are available for every property.
Example: file://myImage.png
Looks for a file in the www
folder. file://myImage.png
is equivalent to www/myImage.png
.
Example: www/myImage.png
Looks for a file in the www
folder.
Example: res://myImage.png
Defines a resource for Android or iOS. In Android it looks in the app's res
folder, in iOS it looks for a file in the root of the app package.
Gets a resource from the res
directory of your app or the system resources. Normally, when getting a resource file on Android, the resource name should not contain the file extension like res://myImage
, but, to be compatible with iOS, you can also include the extension like res://myImage.png
. An explanation what the res
directory is, can be read in the Android documentation Providing Resources.
The property, which you use, defines, in which subfolder of res
the resource should be:
drawable
and mipmap
raw
The plugin trys first to get the resource from you app package, if it does not find one there, it trys to get it from the system resources.
If you want to use a system resource, you have to use a valid resource identifier, which you can look for in Android Code Search. An example would be ic_popup_reminder, which you would set with res://ic_popup_reminder
.
To make files files available in the res
directory, you can use the resource-file tag in config.xml
like:
<platform name="android"> <resource-file src="res/drawable/myImage.png" target="app/src/main/res/drawable/myImage.png" /> <resource-file src="res/raw/mySound.wav" target="app/src/main/res/raw/mySound.wav" /> </platform>
The directory structure for this example would be:
|- res
|- drawable
|- myImage.png
|- raw
|- mySound.wav
|- config.xml
|- plugins
|- platforms
...
Looks for a file in the root of the app package.
For e.g.: res://AppIcon60x60@3x.png
would point to YourApp.ipa/AppIcon60x60@3x.png
on a release build or YourApp.app/AppIcon60x60@3x.png
on a debug build. The app container is a zip file. On a mac, you can right click on your app container and choose Show package contents
.
To copy files to the app bundle, use the resource-file tag in your config.xml
like:
<platform name="ios"> <resource-file src="res/myAudio.wav" target="myAudio.wav" /> </platform>
The directory structure for the example would be:
|- res
|- myAudio.wav
|- config.xml
|- plugins
|- platforms
...
Resource pattern shared://
Example: shared://myImage.png
Android only.
A shared file in [Installed-App-Path]/files/shared_files
. This is necessary to get useable Uris for asset files, which are the files of the www
directory. You can also use the shared_files
directory, to store files created on runtime. To access the directory, you can use cordova.file.dataDirectory of the plugin cordova-plugin-file and write to the folder shared_files
. The folder shared_files
will be created on plugin initialization.
git checkout -b my-new-feature
)git commit -am 'Add some feature'
)git push origin my-new-feature
)This software is released under the Apache 2.0 License.
Made with ð from Leipzig and since 2024 from Cuxhaven
© 2013-2023 appPlant GmbH
© 2024-2025 Manuel Beck
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4