Compare commits

..
Author SHA1 Message Date
Daniel Sogl da517ae0cb feat(local-notifications): sync wrapper with cordova-plugin-local-notification 1.2.3
Add Android channel/alarm/unused-app-restrictions APIs, new android*-prefixed
option properties, and drop Windows from supported platforms to match the
plugin's current (1.2.3) API surface. Deprecated properties/methods are kept
for backward compatibility with JSDoc @deprecated notes.
2026-07-27 22:19:04 +02:00
2 changed files with 553 additions and 488 deletions
@@ -35,7 +35,7 @@ declare const window: Window & { Airship: any };
pluginName: 'Airship',
plugin: '@ua/cordova-airship',
pluginRef: 'Airship',
repo: 'https://github.com/urbanairship/urbanairship-cordova',
repo: 'https://www.npmjs.com/package/@ua/cordova-airship',
install: 'ionic cordova plugin add @ua/cordova-airship',
platforms: ['Android', 'iOS'],
})
@@ -52,14 +52,6 @@ export class Airship extends AwesomeCordovaNativePlugin {
public preferenceCenter: AirshipPreferenceCenter;
public privacyManager: AirshipPrivacyManager;
public push: AirshipPush;
/**
* Live Activity manager. iOS only.
*/
public liveActivityManager: AirshipLiveActivityManager;
/**
* Live Update manager. Android only.
*/
public liveUpdateManager: AirshipLiveUpdateManager;
/**
* Call after platform ready
@@ -265,252 +257,6 @@ export interface DisplayPreferenceCenterEvent {
preferenceCenterId: string;
}
/**
* Event fired when Live Activities are updated. iOS only.
*/
export interface LiveActivitiesUpdatedEvent {
/**
* The Live Activities.
*/
activities: LiveActivity[];
}
/**
* Live Activity info. iOS only.
*/
export interface LiveActivity {
/**
* The activity ID.
*/
id: string;
/**
* The attribute types.
*/
attributeTypes: string;
/**
* The content.
*/
content: LiveActivityContent;
/**
* The attributes.
*/
attributes: JsonObject;
}
/**
* Live Activity content. iOS only.
*/
export interface LiveActivityContent {
/**
* The content state.
*/
state: JsonObject;
/**
* Optional ISO 8601 date string that defines when the Live Activity will be stale.
*/
staleDate?: string;
/**
* The relevance score.
*/
relevanceScore: number;
}
/**
* Base Live Activity request. iOS only.
*/
export interface LiveActivityRequest {
/**
* Attributes type. This should match the Activity type of your Live Activity.
*/
attributesType: string;
}
/**
* Live Activity list request. iOS only.
*/
export type LiveActivityListRequest = LiveActivityRequest;
/**
* Live Activity start request. iOS only.
*/
export interface LiveActivityStartRequest extends LiveActivityRequest {
/**
* Dynamic content.
*/
content: LiveActivityContent;
/**
* Fixed attributes.
*/
attributes: JsonObject;
}
/**
* Live Activity update request. iOS only.
*/
export interface LiveActivityUpdateRequest extends LiveActivityRequest {
/**
* The Live Activity ID to update.
*/
activityId: string;
/**
* Dynamic content.
*/
content: LiveActivityContent;
}
/**
* Live Activity end request. iOS only.
*/
export interface LiveActivityEndRequest extends LiveActivityRequest {
/**
* The Live Activity ID to end.
*/
activityId: string;
/**
* Dynamic content.
*/
content?: LiveActivityContent;
/**
* Dismissal policy. Defaults to `LiveActivityDismissalPolicyDefault`.
*/
dismissalPolicy?: LiveActivityDismissalPolicy;
}
export type LiveActivityDismissalPolicy =
LiveActivityDismissalPolicyImmediate | LiveActivityDismissalPolicyDefault | LiveActivityDismissalPolicyAfterDate;
/**
* Dismissal policy to immediately dismiss the Live Activity on end.
*/
export interface LiveActivityDismissalPolicyImmediate {
type: 'immediate';
}
/**
* Dismissal policy to dismiss the Live Activity after the expiration.
*/
export interface LiveActivityDismissalPolicyDefault {
type: 'default';
}
/**
* Dismissal policy to dismiss the Live Activity after a given date.
*/
export interface LiveActivityDismissalPolicyAfterDate {
type: 'after';
/**
* ISO 8601 date string.
*/
date: string;
}
/**
* Live Update info. Android only.
*/
export interface LiveUpdate {
/**
* The Live Update name.
*/
name: string;
/**
* The Live Update type.
*/
type: string;
/**
* Dynamic content.
*/
content: JsonObject;
/**
* ISO 8601 date string of the last content update.
*/
lastContentUpdateTimestamp: string;
/**
* ISO 8601 date string of the last state update.
*/
lastStateChangeTimestamp: string;
/**
* Optional ISO 8601 date string that defines when to end this Live Update.
*/
dismissTimestamp?: string;
}
/**
* Live Update list request. Android only.
*/
export interface LiveUpdateListRequest {
type: string;
}
/**
* Live Update start request. Android only.
*/
export interface LiveUpdateStartRequest {
/**
* The Live Update name.
*/
name: string;
/**
* The Live Update type.
*/
type: string;
/**
* Dynamic content.
*/
content: JsonObject;
/**
* Optional ISO 8601 date string, used to filter out of order updates.
*/
timestamp?: string;
/**
* Optional ISO 8601 date string that defines when to end this Live Update.
*/
dismissTimestamp?: string;
}
/**
* Live Update update request. Android only.
*/
export interface LiveUpdateUpdateRequest {
/**
* The Live Update name.
*/
name: string;
/**
* Dynamic content.
*/
content: JsonObject;
/**
* Optional ISO 8601 date string, used to filter out of order updates.
*/
timestamp?: string;
/**
* Optional ISO 8601 date string that defines when to end this Live Update.
*/
dismissTimestamp?: string;
}
/**
* Live Update end request. Android only.
*/
export interface LiveUpdateEndRequest {
/**
* The Live Update name.
*/
name: string;
/**
* Dynamic content.
*/
content?: JsonObject;
/**
* Optional ISO 8601 date string, used to filter out of order updates.
*/
timestamp?: string;
/**
* Optional ISO 8601 date string that defines when to end this Live Update.
*/
dismissTimestamp?: string;
}
/**
* iOS options
*/
@@ -702,18 +448,6 @@ export interface ConfigEnvironment {
* Optional log level.
*/
logLevel?: LogLevel;
/**
* Optional iOS config.
*/
ios?: {
/**
* Log privacy level. By default it logs at `private`, not logging anything lower than info to the console
* and redacting logs with string interpolation. `public` will log all configured log levels to the console
* without redacting any of the log lines.
*/
logPrivacyLevel?: 'private' | 'public';
};
}
/**
@@ -885,14 +619,12 @@ export namespace Android {
* Enum of authorized Features.
*/
export enum Feature {
All = 'all',
InAppAutomation = 'in_app_automation',
MessageCenter = 'message_center',
Push = 'push',
Analytics = 'analytics',
TagsAndAttributes = 'tags_and_attributes',
Contacts = 'contacts',
FeatureFlags = 'feature_flags',
}
/**
@@ -1264,17 +996,6 @@ export interface AttributeEditor {
*/
setAttribute(name: string, value: string | number | boolean | Date): AttributeEditor;
/**
* Adds a JSON attribute.
*
* @param name The attribute name.
* @param instanceId The instance ID.
* @param json The json value. Must not contain `exp` as top level key.
* @param expiration Optional expiration.
* @return The attribute editor instance.
*/
setJsonAttribute(name: string, instanceId: string, json: Record<string, any>, expiration?: Date): AttributeEditor;
/**
* Removes an attribute.
* @param name The name of the attribute to remove.
@@ -1282,14 +1003,6 @@ export interface AttributeEditor {
*/
removeAttribute(name: string): AttributeEditor;
/**
* Removes a JSON attribute.
* @param name The name of the attribute to remove.
* @param instanceId The instance ID.
* @return The attribute editor instance.
*/
removeJsonAttribute(name: string, instanceId: string): AttributeEditor;
/**
* Applies the attribute operations.
* @param success Success callback.
@@ -1331,15 +1044,6 @@ class AirshipPush {
return;
}
/**
* Enables user notifications and prompts the user for permission, if needed.
* @returns Whether user notifications are enabled after the request.
*/
@CordovaInstance()
enableUserNotifications(): Promise<boolean> {
return;
}
/**
* Gets the notification status.
*/
@@ -1482,13 +1186,6 @@ export interface AirshipPushIOS {
*/
getBadgeNumber(success: (badge: number) => void, error?: (err: string) => void): void;
/**
* Resets the badge number to zero.
* @param success Success callback.
* @param error Error callback.
*/
resetBadge(success?: () => void, error?: (err: string) => void): void;
/**
* Gets the list of authorized notification settings.
* @param success Success callback.
@@ -1853,41 +1550,6 @@ export interface AirshipFeatureFlagManager {
trackInteraction(flag: FeatureFlag, success?: () => void, error?: (err: string) => void): void;
}
/**
* Options for email channel registration.
*/
export interface EmailRegistrationOptions {
/**
* Transactional opt-in date as milliseconds since epoch.
*/
transactionalOptedIn?: number;
/**
* Commercial opt-in date as milliseconds since epoch.
*/
commercialOptedIn?: number;
/**
* Custom properties for the email channel.
*/
properties?: Record<string, string>;
/**
* Request double opt-in for commercial messages when `commercialOptedIn` is not set.
*/
doubleOptIn?: boolean;
}
/**
* Options for SMS channel registration.
*/
export interface SmsRegistrationOptions {
/**
* The sender ID.
*/
senderId: string;
}
/**
* Airship contact.
*/
@@ -1958,26 +1620,6 @@ class AirshipContact {
reset(): Promise<void> {
return;
}
/**
* Registers an email channel for the contact.
* @param email The email address.
* @param options Registration options.
*/
@CordovaInstance()
registerEmail(email: string, options: EmailRegistrationOptions): Promise<void> {
return;
}
/**
* Registers an SMS channel for the contact.
* @param msisdn The MSISDN, including country code.
* @param options Registration options.
*/
@CordovaInstance()
registerSMS(msisdn: string, options: SmsRegistrationOptions): Promise<void> {
return;
}
}
/**
@@ -2123,114 +1765,3 @@ export interface AirshipActions {
error?: (err: string) => void
): void;
}
/**
* Live Activity manager. iOS only.
*/
export interface AirshipLiveActivityManager {
/**
* Lists any Live Activities for the request.
* @param request The request options.
* @param success Success callback with the list.
* @param error Error callback.
*/
list(
request: LiveActivityListRequest,
success: (activities: LiveActivity[]) => void,
error?: (err: string) => void
): void;
/**
* Lists all Live Activities.
* @param success Success callback with the list.
* @param error Error callback.
*/
listAll(success: (activities: LiveActivity[]) => void, error?: (err: string) => void): void;
/**
* Starts a Live Activity.
* @param request The request options.
* @param success Success callback with the started activity.
* @param error Error callback.
*/
start(
request: LiveActivityStartRequest,
success: (activity: LiveActivity) => void,
error?: (err: string) => void
): void;
/**
* Updates a Live Activity.
* @param request The request options.
* @param success Success callback.
* @param error Error callback.
*/
update(request: LiveActivityUpdateRequest, success?: () => void, error?: (err: string) => void): void;
/**
* Ends a Live Activity.
* @param request The request options.
* @param success Success callback.
* @param error Error callback.
*/
end(request: LiveActivityEndRequest, success?: () => void, error?: (err: string) => void): void;
/**
* Live Activities updated listener.
*
* @param callback The callback.
* @return A cancellable that can be used to cancel the listener.
*/
onLiveActivitiesUpdated(callback: (event: LiveActivitiesUpdatedEvent) => void): Cancellable;
}
/**
* Live Update manager. Android only.
*/
export interface AirshipLiveUpdateManager {
/**
* Lists any Live Updates for the request.
* @param request The request options.
* @param success Success callback with the list.
* @param error Error callback.
*/
list(request: LiveUpdateListRequest, success: (updates: LiveUpdate[]) => void, error?: (err: string) => void): void;
/**
* Lists all Live Updates.
* @param success Success callback with the list.
* @param error Error callback.
*/
listAll(success: (updates: LiveUpdate[]) => void, error?: (err: string) => void): void;
/**
* Starts a Live Update.
* @param request The request options.
* @param success Success callback.
* @param error Error callback.
*/
start(request: LiveUpdateStartRequest, success?: () => void, error?: (err: string) => void): void;
/**
* Updates a Live Update.
* @param request The request options.
* @param success Success callback.
* @param error Error callback.
*/
update(request: LiveUpdateUpdateRequest, success?: () => void, error?: (err: string) => void): void;
/**
* Ends a Live Update.
* @param request The request options.
* @param success Success callback.
* @param error Error callback.
*/
end(request: LiveUpdateEndRequest, success?: () => void, error?: (err: string) => void): void;
/**
* Clears all Live Updates.
* @param success Success callback.
* @param error Error callback.
*/
clearAll(success?: () => void, error?: (err: string) => void): void;
}
@@ -16,6 +16,75 @@ export enum ELocalNotificationTriggerUnit {
WEEK_OF_MONTH = 'weekOfMonth',
}
/**
* ANDROID ONLY
* Values for the `androidAlarmType` property.
*
* @see https://developer.android.com/develop/background-work/services/alarms/schedule#type
*/
export enum ELocalNotificationAndroidAlarmType {
RTC_WAKEUP = 'RTC_WAKEUP',
RTC = 'RTC',
/** Not supported */
ELAPSED_REALTIME_WAKEUP = 'ELAPSED_REALTIME_WAKEUP',
/** Not supported */
ELAPSED_REALTIME = 'ELAPSED_REALTIME',
}
/**
* ANDROID ONLY
* Values for the `androidChannelImportance` property.
*
* @see https://developer.android.com/develop/ui/views/notifications#importance
*/
export enum ELocalNotificationAndroidChannelImportance {
IMPORTANCE_NONE = 'IMPORTANCE_NONE',
IMPORTANCE_MIN = 'IMPORTANCE_MIN',
IMPORTANCE_LOW = 'IMPORTANCE_LOW',
IMPORTANCE_DEFAULT = 'IMPORTANCE_DEFAULT',
IMPORTANCE_HIGH = 'IMPORTANCE_HIGH',
IMPORTANCE_MAX = 'IMPORTANCE_MAX',
}
/**
* ANDROID ONLY
* Status codes returned by `getUnusedAppRestrictionsStatus`.
*/
export enum ELocalNotificationAndroidUnusedAppRestrictionsStatus {
/**
* The status of Unused App Restrictions could not be retrieved from this app e.g.
* if the app's target SDK version <30 or the user is in locked device boot mode.
*/
ERROR = 0,
/** There are no available Unused App Restrictions for this app. */
FEATURE_NOT_AVAILABLE = 1,
/**
* 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.
*/
DISABLED = 2,
/**
* Unused App Restrictions introduced by Android API 30, and since made available on earlier (API 23-29) devices
* are enabled for this app: permission auto-reset. Only used on API 29 or earlier devices.
*/
API_30_BACKPORT = 3,
/**
* Unused App Restrictions introduced by Android API 30 are enabled for this app: permission auto-reset.
* Only used on API 30 or later devices.
*/
API_30 = 4,
/**
* Unused App Restrictions introduced by Android API 31 are enabled for this app:
* permission auto-reset and app hibernation. Only used on API 31 or later devices.
*/
API_31 = 5,
}
export interface ILocalNotificationEvery {
/**
* The minute.
@@ -175,6 +244,8 @@ export interface ILocalNotificationAction {
/**
* Make this notification show when app in foreground.
*
* @deprecated Not read by the plugin since it no longer maps to a native option. Use `launch` to bring the app to the foreground on selection instead.
*/
foreground?: boolean;
@@ -196,10 +267,17 @@ export interface ILocalNotificationAction {
needsAuth?: boolean;
/**
* The resource path of the action icon
* ANDROID ONLY
* The resource path of the action icon. Not supported anymore for normal notifications since Android 7,
* it will only be used on Android Wear.
*/
icon?: string;
/**
* Placeholder text for the input field of an action of type 'input'.
*/
emptyText?: string;
/**
* ANDROID ONLY
* An array of pre-defined choices for users input
@@ -227,11 +305,14 @@ export interface ILocalNotificationAction {
export interface ILocalNotificationProgressBar {
/**
* Is the progress bar enabled?
*
* @deprecated Not supported anymore. Setting `androidProgressBar` to an object enables it, `null`/omitting it disables it.
*/
enabled?: boolean;
/**
* The current value
* Default: 0
*/
value?: number;
@@ -244,6 +325,7 @@ export interface ILocalNotificationProgressBar {
/**
* ANDROID ONLY
* Show an indeterminate progress bar
* Default: false
*/
indeterminate?: boolean;
@@ -252,6 +334,8 @@ export interface ILocalNotificationProgressBar {
* Gets or sets an optional string to be displayed instead of the
* default percentage string. If this isn't provided, something
* like "70%" will be displayed.
*
* @deprecated Windows is no longer a supported platform of this plugin.
*/
description?: string;
@@ -261,38 +345,137 @@ export interface ILocalNotificationProgressBar {
* on the left.
* This string should reflect the status of the operation,
* like "Downloading..." or "Installing..."
*
* @deprecated Windows is no longer a supported platform of this plugin.
*/
status?: string;
}
/**
* ANDROID ONLY
* A single message of the `androidMessages` property, used to summarize/group notifications.
*
* @see https://github.com/katzer/cordova-plugin-local-notifications#summarizing
*/
export interface ILocalNotificationAndroidMessage {
/**
* The message text.
* Default: null
*/
message?: string;
/**
* Timestamp in milliseconds, e.g. by Date.getTime().
* Default: System.currentTimeMillis()
*/
date?: number;
/**
* The name of the person who sent the message.
* Default: null
*/
person?: string;
/**
* The icon of the person, drawn as a circle icon.
* Default: null
*/
personIcon?: string;
}
/**
* ANDROID ONLY
* Options for `createChannel`.
*
* @see https://github.com/katzer/cordova-plugin-local-notifications#createchannel
*/
export interface ILocalNotificationChannel {
/**
* The id of the channel. Use Snake Case (lowercase, words separated by underscores).
*/
androidChannelId: string;
/**
* The name of the channel.
* Default: "Default channel"
*/
androidChannelName?: string;
/**
* The description of the channel.
*/
androidChannelDescription?: string;
/**
* The importance of the channel.
* Default: IMPORTANCE_DEFAULT
*/
androidChannelImportance?: ELocalNotificationAndroidChannelImportance;
/**
* Whether notifications posted to this channel should display notification lights.
* Default: false
*/
androidChannelEnableLights?: boolean;
/**
* Whether notifications posted to this channel should vibrate.
* Default: false
*/
androidChannelEnableVibration?: boolean;
/**
* The sound to play for notifications posted to this channel.
*/
sound?: string;
/**
* The audio usage of the channel's sound.
* Default: 5 (USAGE_NOTIFICATION)
*/
androidChannelSoundUsage?: number;
}
export interface ILocalNotification {
/**
* A unique identifier required to clear, cancel, update or retrieve the local notification in the future
* Default: 0
* Default: 1
*/
id?: number;
/**
* First row of the notification
* Default: Empty string (iOS) or the app name (Android)
* Default: Empty string, the app name will be used if empty
*/
title?: string;
/**
* Second row of the notification
* Default: Empty string
*
* @deprecated Passing an array is deprecated since upstream 1.1.0. Use `androidMessages` instead.
*/
text?: string | string[];
/**
* The number currently set as the badge of the app icon in Springboard (iOS) or at the right-hand side of the local notification (Android)
* Default: 0 (which means don't show a number)
*
* @deprecated Renamed to `badgeNumber` in upstream 1.1.0.
*/
badge?: number;
/**
* Overwrites `badge`.
* Sets the badge for the application. The behaviour differs between platforms:
* Android: increments the badge by the specified number. Default: 1
* iOS: sets the badge directly. -1 leaves it unchanged, 0 clears it. Default: -1
*/
badgeNumber?: number;
/**
* Uri of the file containing the sound to play when an alert is displayed
* Default: res://platform_default
* Default: 'default'
*/
sound?: string;
@@ -306,29 +489,72 @@ export interface ILocalNotification {
* ANDROID ONLY
* Uri of the icon that is shown in the ticker and notification
* Default: res://icon
*
* @deprecated Renamed to `androidLargeIcon` in upstream 1.1.0.
*/
icon?: string;
/**
* ANDROID ONLY
* Add a large icon to the notification content view.
* Default: null
*/
androidLargeIcon?: string;
/**
* ANDROID ONLY
* Can be `square` or `circle`.
* Default: 'square'
*/
androidLargeIconType?: 'square' | 'circle';
/**
* ANDROID ONLY
* Uri of the resource (only res://) to use in the notification layouts. Different classes of devices may return different sizes
* Default: res://ic_popup_reminder
*
* @deprecated Renamed to `androidSmallIcon` in upstream 1.1.0.
*/
smallIcon?: string;
/**
* ANDROID ONLY
* Set the small icon resource, which will be used to represent the notification in the status bar.
* Default: res://ic_popup_reminder
*/
androidSmallIcon?: string;
/**
* ANDROID ONLY
* RGB value for the background color of the smallIcon.
* Default: Androids COLOR_DEFAULT, which will vary based on Android version.
*
* @deprecated Renamed to `androidColor` in upstream 1.1.0.
*/
color?: string;
/**
* ANDROID ONLY
* The notification background color for the small icon, as a hex string like `#FF0000`.
* Default: null
*/
androidColor?: string;
/**
* ANDROID ONLY
* Use the default notification vibrate.
*
* @deprecated Renamed to `androidChannelEnableVibration` in upstream 1.1.1.
*/
vibrate?: boolean;
/**
* ANDROID ONLY
* Enables the vibration of a notification channel.
* Default: false
*/
androidChannelEnableVibration?: boolean;
/**
* ANDROID ONLY
* Define the blinking of the LED on the device.
@@ -339,15 +565,41 @@ export interface ILocalNotification {
* If set to an array, the value of the key 0 will be used as the color,
* the value of the key 1 will be used as the 'on' timing, the value of
* the key 2 will be used as the 'off' timing
* Only supported on Android 7, replaced by `androidChannelEnableLights` on newer versions.
*/
led?: { color: string; on: number; off: number } | any[] | boolean | string;
/**
* ANDROID ONLY
* Whether notifications posted to a channel should display notification lights.
* Default: false
*/
androidChannelEnableLights?: boolean;
/**
* Notification priority.
* Integers between -2 and 2, whereas -2 is minimum and 2 is maximum priority
* Default: 0 (PRIORITY_DEFAULT)
*
* @deprecated Use `androidChannelImportance`, `androidAlarmType` and `androidAllowWhileIdle` instead since upstream 1.1.0.
*/
priority?: number;
/**
* ANDROID ONLY
* If the alarm should be scheduled on a specific time or in relevance to the time the device was booted,
* and if the alarm should wake up the device cpu (not the screen).
* Default: RTC_WAKEUP
*/
androidAlarmType?: ELocalNotificationAndroidAlarmType;
/**
* ANDROID ONLY
* Alarm will be allowed to execute even when the system is in low-power idle (a.k.a. doze) modes.
* Default: false
*/
androidAllowWhileIdle?: boolean;
/**
* Is a silent notification
*/
@@ -362,15 +614,34 @@ export interface ILocalNotification {
/**
* ANDROID ONLY
* Wakeup the device. (default is true)
*
* @deprecated Renamed to `androidWakeUpScreen` in upstream 1.1.0.
*/
wakeup?: boolean;
/**
* ANDROID ONLY
* If the screen should go on, when a notification arrives.
* Default: true
*/
androidWakeUpScreen?: boolean;
/**
* ANDROID ONLY
* Specifies a duration in milliseconds after which this notification should be canceled, if it is not already canceled.
*
* @deprecated Renamed to `androidTimeoutAfter` in upstream 1.1.0.
*/
timeoutAfter?: number | false;
/**
* ANDROID ONLY
* Specifies a duration in milliseconds after which this notification should be canceled, if it is not already canceled.
* `0` means no automatic cancellation.
* Default: 0
*/
androidTimeoutAfter?: number | false;
/**
* Actions id or actions
*/
@@ -394,39 +665,107 @@ export interface ILocalNotification {
* 'clock': Show the when date in the content view
* 'chronometer': Show a stopwatch
*
* @deprecated Since upstream 1.1.0. Use `androidShowWhen: boolean` for `clock: boolean` and `androidUsesChronometer: true` for `clock: 'chronometer'`.
*/
clock?: boolean | string;
/**
* ANDROID ONLY
* If the Notification should show the when date.
* Default: true
*/
androidShowWhen?: boolean;
/**
* ANDROID ONLY
* Show the Notification#when field as a stopwatch, instead of a timestamp.
* Default: false
*/
androidUsesChronometer?: boolean;
/**
* Shows a progress bar
* Setting a boolean is a shortcut for {enabled: true/false} respectively
*
* @deprecated Renamed to `androidProgressBar` in upstream 1.1.0.
*/
progressBar?: ILocalNotificationProgressBar | boolean;
/**
* ANDROID ONLY
* Shows a progress bar. See https://github.com/katzer/cordova-plugin-local-notifications#progress
* Default: null
*/
androidProgressBar?: ILocalNotificationProgressBar;
/**
* ANDROID ONLY
* If multiple notifications have the same group your app can present
* them as a single group.
*
* @deprecated Renamed to `androidGroup` in upstream 1.1.0.
*/
group?: string;
/**
* ANDROID ONLY
* Set this notification to be part of a group of notifications sharing the same key.
* Default: null
*/
androidGroup?: string;
/**
* ANDROID ONLY
* If set to 'true' this notification could use 'summary' to summarize
* the contents of the whole group
*
* @deprecated Renamed to `androidGroupSummary` in upstream 1.1.0.
*/
groupSummary?: boolean;
/**
* ANDROID ONLY
* Set this notification to be the group summary for a group of notifications. Requires `androidGroup` also being set.
* Default: false
*/
androidGroupSummary?: boolean;
/**
* ANDROID ONLY
* Summary of the whole notification group. Should be used in conjuntion
* with 'groupSummary' set to true
*
* @deprecated Renamed to `androidSummary` in upstream 1.1.0.
*/
summary?: string;
/**
* ANDROID ONLY
* Used as summary text for the InboxStyle, BigPictureStyle or BigTextStyle notification, depending on which is used.
* Default: null
*/
androidSummary?: string;
/**
* ANDROID ONLY
* Array of messages to summarize notifications, uses NotificationCompat.MessagingStyle.
* Default: null
*/
androidMessages?: ILocalNotificationAndroidMessage[];
/**
* ANDROID ONLY
* Additional text added to the title for displaying the number of messages, when using MessagingStyle.
* Use `%n%` in the string for specifying the location of the number.
* Default: '%n%'
*/
androidTitleCount?: string;
/**
* ANDROID ONLY
* Sets the number of items this notification represents.
*
* @deprecated Removed upstream in 1.1.0 and no longer part of the plugin's options.
*/
number?: number;
@@ -435,46 +774,137 @@ export interface ILocalNotification {
* Set whether this is an "ongoing" notification.
* Ongoing notifications cannot be dismissed by the user,
* so your application or service must take care of canceling them.
*
* @deprecated Renamed to `androidOngoing` in upstream 1.1.0.
*/
sticky?: boolean;
/**
* ANDROID ONLY
* Set whether this is an ongoing notification. Ongoing notifications cannot be dismissed by the user on locked devices.
* Default: false
*/
androidOngoing?: boolean;
/**
* ANDROID ONLY
* Set this flag if you would only like the sound, vibrate and ticker to be played if the notification is not already showing.
* Default: false
*/
androidOnlyAlertOnce?: boolean;
/**
* ANDROID ONLY
* Make this notification automatically dismissed when the user touches it.
*
* @deprecated Renamed to `androidAutoCancel` in upstream 1.1.0.
*/
autoClear?: boolean;
/**
* ANDROID ONLY
* Make this notification automatically dismissed when the user touches it.
* Default: true
*/
androidAutoCancel?: boolean;
/**
* ANDROID ONLY
* If set to true the notification will be show in its entirety on all lockscreens.
* If set to false it will not be revealed on a secure lockscreen.
*
* @deprecated Renamed to `androidLockscreen` in upstream 1.1.0.
*/
lockscreen?: boolean;
/**
* ANDROID ONLY
* If the entire notification should be shown on all lockscreens and while screen sharing.
* Default: true
*/
androidLockscreen?: boolean;
/**
* ANDROID ONLY
* Set the default notification options that will be used.
* The value should be one or more of the following fields combined with
* bitwise-or: DEFAULT_SOUND, DEFAULT_VIBRATE, DEFAULT_LIGHTS.
*
* @deprecated Renamed to `androidDefaults` in upstream 1.1.0.
*/
defaults?: number;
/**
* ANDROID ONLY
* Android 7 only. Sets the default notification options that will be used only on Android 7.
* Default: 0
*/
androidDefaults?: number;
/**
* ANDROID ONLY
* Specifies the channel the notification should be delivered on.
*
* @deprecated Renamed to `androidChannelId` in upstream 1.1.0.
*/
channel?: string;
/**
* ANDROID ONLY
* Specifies the channel id to be posted on. Use Snake Case (lowercase, words separated by underscores).
* Default: 'default_channel'
*/
androidChannelId?: string;
/**
* ANDROID ONLY
* Sets the `channelName` for the notification to be posted on.
* Default: 'Default channel'
*/
androidChannelName?: string;
/**
* ANDROID ONLY
* Sets the `description` of a notification channel.
* Default: null
*/
androidChannelDescription?: string;
/**
* ANDROID ONLY
* Sets the importance of a notification channel.
* Default: IMPORTANCE_DEFAULT
*/
androidChannelImportance?: ELocalNotificationAndroidChannelImportance;
/**
* ANDROID ONLY
* Sets the audio usage of a notification channel's sound.
* Default: 5 (USAGE_NOTIFICATION)
*/
androidChannelSoundUsage?: number;
/**
* ANDROID ONLY
* Set the token for the media session
*
* @deprecated Removed upstream in 1.1.0. This option and MediaStyle are no longer supported.
*/
mediaSession?: string;
/**
* Make this notification show when app in foreground.
*
* @deprecated Renamed to `iOSForeground` in upstream 1.1.0.
*/
foreground?: boolean;
/**
* IOS ONLY
* Displays notification in foreground, when app is active.
* Default: true
*/
iOSForeground?: boolean;
}
/**
@@ -530,7 +960,7 @@ export interface ILocalNotification {
plugin: 'cordova-plugin-local-notification',
pluginRef: 'cordova.plugins.notification.local',
repo: 'https://github.com/katzer/cordova-plugin-local-notifications',
platforms: ['Android', 'iOS', 'Windows'],
platforms: ['Android', 'iOS'],
})
@Injectable()
export class LocalNotifications extends AwesomeCordovaNativePlugin {
@@ -554,6 +984,19 @@ export class LocalNotifications extends AwesomeCordovaNativePlugin {
return;
}
/**
* ANDROID ONLY
* Checks if the user has enabled the "Alarms & Reminders" setting, required for exact alarms.
* On Android 11 and older this always resolves true, on Android 12 it's granted by default,
* on Android 13 and newer it has to be explicitly enabled by the user.
*
* @returns {Promise<boolean>}
*/
@Cordova()
canScheduleExactAlarms(): Promise<boolean> {
return;
}
/**
* Schedules a single or multiple notifications
*
@@ -665,9 +1108,10 @@ export class LocalNotifications extends AwesomeCordovaNativePlugin {
* Get the type (triggered, scheduled) for the notification.
*
* @param {number} id The ID of the notification.
* @returns {Promise<string>}
*/
@Cordova()
getType(id: number): Promise<boolean> {
getType(id: number): Promise<string> {
return;
}
@@ -723,24 +1167,24 @@ export class LocalNotifications extends AwesomeCordovaNativePlugin {
}
/**
* Get a scheduled notification object
* Get all scheduled notification objects.
*
* @param notificationId {any} The id of the notification to get
* @returns {Promise<ILocalNotification>}
* @param notificationId {any} Optional. No longer used upstream, kept only for backward compatibility.
* @returns {Promise<ILocalNotification[]>}
*/
@Cordova()
getScheduled(notificationId: any): Promise<ILocalNotification> {
getScheduled(notificationId?: any): Promise<ILocalNotification[]> {
return;
}
/**
* Get a triggered notification object
* Get all triggered notification objects.
*
* @param notificationId The id of the notification to get
* @returns {Promise<ILocalNotification>}
* @param notificationId {any} Optional. No longer used upstream, kept only for backward compatibility.
* @returns {Promise<ILocalNotification[]>}
*/
@Cordova()
getTriggered(notificationId: any): Promise<ILocalNotification> {
getTriggered(notificationId?: any): Promise<ILocalNotification[]> {
return;
}
@@ -803,12 +1247,40 @@ export class LocalNotifications extends AwesomeCordovaNativePlugin {
return;
}
/**
* ANDROID ONLY
* Creates a notification channel, if it doesn't already exist. A channel can't be changed after creation.
*
* @param options {ILocalNotificationChannel} The channel to create
* @returns {Promise<any>}
*/
@Cordova()
createChannel(options: ILocalNotificationChannel): Promise<any> {
return;
}
/**
* ANDROID ONLY
* Deletes a notification channel by id. 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.
*
* @param channelId {string} The id of the channel to delete
* @returns {Promise<any>}
*/
@Cordova()
deleteChannel(channelId: string): Promise<any> {
return;
}
/**
* Get all scheduled notification objects
*
* @returns {Promise<Array<ILocalNotification>>}
* @deprecated Duplicate of `getScheduled()`, kept for backward compatibility. Use `getScheduled()` instead.
*/
@Cordova()
@Cordova({
methodName: 'getScheduled',
})
getAllScheduled(): Promise<ILocalNotification[]> {
return;
}
@@ -817,16 +1289,78 @@ export class LocalNotifications extends AwesomeCordovaNativePlugin {
* Get all triggered notification objects
*
* @returns {Promise<Array<ILocalNotification>>}
* @deprecated Duplicate of `getTriggered()`, kept for backward compatibility. Use `getTriggered()` instead.
*/
@Cordova({
methodName: 'getTriggered',
})
getAllTriggered(): Promise<ILocalNotification[]> {
return;
}
/**
* Opens the notification settings of the app. On Android 8+ it opens the app's notification settings,
* on older Android versions it opens the app details. On iOS it's not possible to open the notification
* settings directly, so it opens the app settings instead.
*
* @returns {Promise<any>}
*/
@Cordova()
getAllTriggered(): Promise<ILocalNotification[]> {
openNotificationSettings(): Promise<any> {
return;
}
/**
* ANDROID ONLY
* Since Android 12 (SDK 31). Opens the "Alarms & Reminders" setting, where the user can manually
* enable exact alarms. Requires the SCHEDULE_EXACT_ALARM permission to be declared in the AndroidManifest.xml.
*
* @returns {Promise<any>}
*/
@Cordova()
openAlarmSettings(): Promise<any> {
return;
}
/**
* IOS ONLY
* Clears the badge of the app icon.
*
* @returns {Promise<any>}
*/
@Cordova()
iOSClearBadge(): Promise<any> {
return;
}
/**
* ANDROID ONLY
* Returns the status of the unused app restrictions (app hibernation), introduced in Android 11
* and backported to Android 6 through the Google Play Store.
*
* @returns {Promise<ELocalNotificationAndroidUnusedAppRestrictionsStatus>}
*/
@Cordova()
getUnusedAppRestrictionsStatus(): Promise<ELocalNotificationAndroidUnusedAppRestrictionsStatus> {
return;
}
/**
* ANDROID ONLY
* Redirects the user to manage their unused app restriction settings. The returned promise resolves once
* the user returns to the app; use `getUnusedAppRestrictionsStatus` to check the resulting status.
*
* @returns {Promise<any>}
*/
@Cordova()
openManageUnusedAppRestrictions(): Promise<any> {
return;
}
/**
* Sets a callback for a specific event
*
* @param eventName {string} The name of the event. Available events: schedule, trigger, click, update, clear, clearall, cancel, cancelall. Custom event names are possible for actions
* @param eventName {string} The name of the event. Available events: add, trigger, click, update, clear, clearall, cancel, cancelall. Custom event names are possible for actions
* @returns {Observable}
*/
@Cordova({
@@ -841,7 +1375,7 @@ export class LocalNotifications extends AwesomeCordovaNativePlugin {
/**
* Not an official interface, however its possible to manually fire events.
*
* @param eventName The name of the event. Available events: schedule, trigger, click, update, clear, clearall, cancel, cancelall. Custom event names are possible for actions
* @param eventName The name of the event. Available events: add, trigger, click, update, clear, clearall, cancel, cancelall. Custom event names are possible for actions
* @param args Optional arguments
*/
@Cordova({