跳至主要内容
版本:v8

@capacitor/local-notifications

本地通知 API 提供了一种在本地安排设备通知的方法(即,无需服务器发送推送通知)。

安装

npm install @capacitor/local-notifications
npx cap sync

Android

Android 13 要求在发送通知之前进行权限检查。您需要根据需要调用 checkPermissions()requestPermissions()

在 Android 12 及更早版本上,它不会显示提示,只会返回已授予。

从 Android 12 开始,除非将此权限添加到您的 AndroidManifest.xml 中,否则已安排的通知不会精确。

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

请注意,即使权限存在,用户仍然可以从应用程序设置中禁用精确通知。使用 checkExactNotificationSetting() 检查设置的值。如果用户禁用了此设置,应用程序将重新启动,并且使用精确闹钟安排的所有通知将被删除。如果您的应用程序依赖于精确闹钟,请确保在应用程序启动时检查此设置(例如,在 App.appStateChange 中)以提供回退或替代行为。

在 Android 14 上,有一个名为 USE_EXACT_ALARM 的新权限。使用此权限可以使用精确闹钟,而无需向用户请求权限。仅当精确闹钟的使用对您的应用程序的功能至关重要时才应使用此权限。在此处详细了解使用此权限的影响 此处

配置

在 Android 上,本地通知可以使用以下选项进行配置

属性类型描述
smallIcon字符串设置通知的默认状态栏图标。图标应放在应用程序的 res/drawable 文件夹中。此选项的值应为可绘制资源 ID,即不带扩展名的文件名。仅适用于 Android。1.0.0
iconColor字符串设置通知状态栏图标的默认颜色。仅适用于 Android。1.0.0
sound字符串设置通知的默认通知声音。在 Android 26+ 上,它设置默认通道声音,除非卸载应用程序,否则无法更改。如果找不到音频文件,它将在 Android 21-25 上播放默认系统声音,在 Android 26+ 上不会播放任何声音。仅适用于 Android。1.0.0

示例

capacitor.config.json

{
"plugins": {
"LocalNotifications": {
"smallIcon": "ic_stat_icon_config_sample",
"iconColor": "#488AFF",
"sound": "beep.wav"
}
}
}

capacitor.config.ts

/// <reference types="@capacitor/local-notifications" />

import { CapacitorConfig } from '@capacitor/cli';

const config: CapacitorConfig = {
plugins: {
LocalNotifications: {
smallIcon: "ic_stat_icon_config_sample",
iconColor: "#488AFF",
sound: "beep.wav",
},
},
};

export default config;

休眠

如果设备已进入 休眠 模式,您的应用程序可能具有受限的功能。如果您需要在休眠模式下触发通知,请使用 allowWhileIdle: true 来安排通知。谨慎使用 allowWhileIdle,因为这些通知 每个应用程序每 9 分钟只能触发一次。

API

schedule(...)

schedule(options: ScheduleOptions) => Promise<ScheduleResult>

安排 一个或多个本地通知。

参数类型
optionsScheduleOptions

**返回:** Promise<ScheduleResult>

1.0.0


getPending()

getPending() => Promise<PendingResult>

获取挂起通知的列表。

**返回:** Promise<PendingResult>

1.0.0


registerActionTypes(...)

registerActionTypes(options: RegisterActionTypesOptions) => Promise<void>

注册在显示通知时要执行的操作。

仅适用于 iOS 和 Android。

参数类型
optionsRegisterActionTypesOptions

1.0.0


cancel(...)

cancel(options: CancelOptions) => Promise<void>

取消挂起的通知。

参数类型
optionsCancelOptions

1.0.0


areEnabled()

areEnabled() => Promise<EnabledResult>

检查通知是否已启用。

**返回:** Promise<EnabledResult>

1.0.0


getDeliveredNotifications()

getDeliveredNotifications() => Promise<DeliveredNotifications>

获取在通知屏幕上可见的通知列表。

**返回:** Promise<DeliveredNotifications>

4.0.0


removeDeliveredNotifications(...)

removeDeliveredNotifications(delivered: DeliveredNotifications) => Promise<void>

从通知屏幕中删除指定的通知。

参数类型
已传递DeliveredNotifications

4.0.0


removeAllDeliveredNotifications()

removeAllDeliveredNotifications() => Promise<void>

从通知屏幕中删除所有通知。

4.0.0


createChannel(...)

createChannel(channel: Channel) => Promise<void>

创建通知通道。

仅适用于 Android。

参数类型
频道Channel

1.0.0


deleteChannel(...)

deleteChannel(args: { id: string; }) => Promise<void>

删除通知通道。

仅适用于 Android。

参数类型
参数{ id: string; }

1.0.0


listChannels()

listChannels() => Promise<ListChannelsResult>

获取通知通道列表。

仅适用于 Android。

**返回:** Promise<ListChannelsResult>

1.0.0


checkPermissions()

checkPermissions() => Promise<PermissionStatus>

检查显示本地通知的权限。

**返回:** Promise<PermissionStatus>

1.0.0


requestPermissions()

requestPermissions() => Promise<PermissionStatus>

请求显示本地通知的权限。

**返回:** Promise<PermissionStatus>

1.0.0


changeExactNotificationSetting()

changeExactNotificationSetting() => Promise<SettingsPermissionStatus>

直接将用户引导至应用程序设置屏幕以配置精确闹钟。

如果用户将设置从已授予更改为拒绝,应用程序将重新启动,并且使用精确闹钟安排的所有通知将被删除。

在 Android < 12 上,用户不会被引导至应用程序设置屏幕,而是此函数将返回 granted

仅适用于 Android。

**返回:** Promise<SettingsPermissionStatus>

6.0.0


checkExactNotificationSetting()

checkExactNotificationSetting() => Promise<SettingsPermissionStatus>

检查使用精确闹钟的应用程序设置。

仅适用于 Android。

**返回:** Promise<SettingsPermissionStatus>

6.0.0


addListener('localNotificationReceived', ...)

addListener(eventName: 'localNotificationReceived', listenerFunc: (notification: LocalNotificationSchema) => void) => Promise<PluginListenerHandle>

监听通知显示时的事件。

参数类型
事件名称'localNotificationReceived'
监听器函数(notification: LocalNotificationSchema) => void

**返回:** Promise<PluginListenerHandle>

1.0.0


addListener('localNotificationActionPerformed', ...)

addListener(eventName: 'localNotificationActionPerformed', listenerFunc: (notificationAction: ActionPerformed) => void) => Promise<PluginListenerHandle>

监听对通知执行操作时的事件。

参数类型
事件名称'localNotificationActionPerformed'
监听器函数(notificationAction: ActionPerformed) => void

**返回:** Promise<PluginListenerHandle>

1.0.0


removeAllListeners()

removeAllListeners() => Promise<void>

删除此插件的所有监听器。

1.0.0


接口

ScheduleResult

属性类型描述
通知LocalNotificationDescriptor[]已安排的通知列表。1.0.0

LocalNotificationDescriptor

描述本地通知的对象。

属性类型描述
id数字通知标识符。1.0.0

ScheduleOptions

属性类型描述
通知LocalNotificationSchema[]要安排的通知列表。1.0.0

LocalNotificationSchema

属性类型描述
标题字符串通知的标题。1.0.0
正文字符串通知的正文,显示在标题下方。1.0.0
largeBody字符串设置要在大型文本通知样式中显示的多行文本块。1.0.0
summaryText字符串用于在收件箱和大型文本通知样式中设置摘要文本详细信息。仅适用于 Android。1.0.0
id数字通知标识符。在 Android 上,它是一个 32 位整数。因此,该值应在 -2147483648 到 2147483647(含)之间。1.0.0
计划计划计划 此通知在稍后的时间显示。1.0.0
sound字符串当显示此通知时要播放的音频文件名称。请在文件名中包含文件扩展名。在 iOS 上,文件应位于应用程序包中。在 Android 上,文件应位于 res/raw 文件夹中。推荐格式为 .wav,因为它受 iOS 和 Android 支持。仅适用于 iOS 和 Android < 26。对于 Android 26+,请使用配置有所需声音的通道的 channelId。如果未找到声音文件(即空字符串或错误名称),则将使用默认系统通知声音。如果没有提供,它将在 Android 上发出默认声音,而在 iOS 上不会发出声音。1.0.0
smallIcon字符串设置自定义状态栏图标。如果设置,这将覆盖 Capacitor 配置中的 smallIcon 选项。图标应放置在应用程序的 res/drawable 文件夹中。此选项的值应该是可绘制资源 ID,即不带扩展名的文件名。仅适用于 Android。1.0.0
largeIcon字符串为通知设置一个大图标。图标应放置在应用程序的 res/drawable 文件夹中。此选项的值应该是可绘制资源 ID,即不带扩展名的文件名。仅适用于 Android。1.0.0
iconColor字符串设置通知图标的颜色。仅适用于 Android。1.0.0
附件Attachment[]为该通知设置附件。1.0.0
actionTypeId字符串将操作类型与该通知关联。1.0.0
extraany设置要存储在此通知中的额外数据。1.0.0
threadIdentifier字符串用于对多个通知进行分组。在 UNMutableNotificationContent 上设置 threadIdentifier。仅适用于 iOS。1.0.0
summaryArgument字符串此通知添加到类别摘要格式字符串的字符串。在 UNMutableNotificationContent 上设置 summaryArgument。仅适用于 iOS。1.0.0
字符串用于对多个通知进行分组。使用提供的 value 在 NotificationCompat.Builder 上调用 setGroup()。仅适用于 Android。1.0.0
groupSummaryboolean如果为 true,则此通知将成为一组通知的摘要。使用提供的 value 在 NotificationCompat.Builder 上调用 setGroupSummary()。仅在使用 group 的 Android 上可用。1.0.0
channelId字符串指定应在其中传送通知的通道。如果具有给定名称的通道不存在,则通知将不会触发。如果没有提供,它将使用默认通道。使用提供的 value 在 NotificationCompat.Builder 上调用 setChannelId()。仅适用于 Android 26+。1.0.0
正在进行boolean如果为 true,则通知无法被滑走。使用提供的 value 在 NotificationCompat.Builder 上调用 setOngoing()。仅适用于 Android。1.0.0
自动取消boolean如果为 true,则当用户单击通知时会取消该通知。使用提供的 value 在 NotificationCompat.Builder 上调用 setAutoCancel()。仅适用于 Android。1.0.0
收件箱列表string[]在收件箱样式通知中设置要显示的字符串列表。最多允许 5 个字符串。仅适用于 Android。1.0.0
静默boolean如果为 true,则应用程序处于前台时不会出现通知。仅适用于 iOS。5.0.0

计划

表示通知的计划。

使用 atonevery 来安排通知。

属性类型描述
日期计划 在特定日期和时间发送通知。1.0.0
重复booleanat 指定的日期和时间重复发送此通知。仅适用于 iOS 和 Android。1.0.0
allowWhileIdleboolean允许此通知在 Doze 中触发。仅适用于 Android 23+。请注意,这些通知只能 每 9 分钟,每个应用程序触发一次1.0.0
ScheduleOn计划 在特定时间间隔内发送通知。这类似于安排 cron 作业。仅适用于 iOS 和 Android。1.0.0
ScheduleEvery计划 在特定时间间隔内发送通知。1.0.0
计数数字限制 every 指定的时间间隔内发送通知的次数。1.0.0

日期

启用日期和时间的简单存储和检索。

方法签名描述
toString() => string返回日期的字符串表示形式。字符串的格式取决于区域设置。
toDateString() => string将日期返回为字符串值。
toTimeString() => string将时间返回为字符串值。
toLocaleString() => string返回适合主机环境当前区域设置的字符串值。
toLocaleDateString() => string返回适合主机环境当前区域设置的字符串值。
toLocaleTimeString() => string返回适合主机环境当前区域设置的字符串值。
valueOf() => number返回自 1970 年 1 月 1 日午夜(UTC)以来的毫秒数形式存储的时间值。
getTime() => number获取以毫秒为单位的时间值。
getFullYear() => number获取年份,使用本地时间。
getUTCFullYear() => number获取使用协调世界时 (UTC) 的年份。
getMonth() => number获取月份,使用本地时间。
getUTCMonth() => number获取使用协调世界时 (UTC) 的 Date 对象的月份。
getDate() => number获取月的日期,使用本地时间。
getUTCDate() => number获取月的日期,使用协调世界时 (UTC)。
getDay() => number获取一周的日期,使用本地时间。
getUTCDay() => number获取使用协调世界时 (UTC) 的一周的日期。
getHours() => number获取日期中的小时数,使用本地时间。
getUTCHours() => number获取使用协调世界时 (UTC) 的 Date 对象中的小时数。
getMinutes() => number获取 Date 对象的分钟数,使用本地时间。
getUTCMinutes() => number获取使用协调世界时 (UTC) 的 Date 对象的分钟数。
getSeconds() => number获取 Date 对象的秒数,使用本地时间。
getUTCSeconds() => number获取使用协调世界时 (UTC) 的 Date 对象的秒数。
getMilliseconds() => number获取 Date 的毫秒数,使用本地时间。
getUTCMilliseconds() => number获取使用协调世界时 (UTC) 的 Date 对象的毫秒数。
getTimezoneOffset() => number获取本地计算机时间与协调世界时 (UTC) 之间的分钟差。
setTime(time: number) => number设置 Date 对象中的日期和时间值。
setMilliseconds(ms: number) => number使用本地时间设置 Date 对象中的毫秒值。
setUTCMilliseconds(ms: number) => number使用协调世界时 (UTC) 设置 Date 对象中的毫秒值。
setSeconds(sec: number, ms?: number | undefined) => number使用本地时间设置 Date 对象中的秒数。
setUTCSeconds(sec: number, ms?: number | undefined) => number使用协调世界时 (UTC) 设置 Date 对象中的秒数。
setMinutes(min: number, sec?: number | undefined, ms?: number | undefined) => number使用本地时间设置 Date 对象中的分钟数。
setUTCMinutes(min: number, sec?: number | undefined, ms?: number | undefined) => number使用协调世界时 (UTC) 设置 Date 对象中的分钟数。
setHours(hours: number, min?: number | undefined, sec?: number | undefined, ms?: number | undefined) => number使用本地时间设置 Date 对象中的小时数。
setUTCHours(hours: number, min?: number | undefined, sec?: number | undefined, ms?: number | undefined) => number使用协调世界时 (UTC) 设置 Date 对象中的小时数。
setDate(date: number) => number使用本地时间设置 Date 对象中的月的日期数字值。
setUTCDate(date: number) => number使用协调世界时 (UTC) 设置 Date 对象中的月的日期数字值。
setMonth(month: number, date?: number | undefined) => number使用本地时间设置 Date 对象中的月份值。
setUTCMonth(month: number, date?: number | undefined) => number使用协调世界时 (UTC) 设置 Date 对象中的月份值。
setFullYear(year: number, month?: number | undefined, date?: number | undefined) => number使用本地时间设置 Date 对象的年份。
setUTCFullYear(year: number, month?: number | undefined, date?: number | undefined) => number使用协调世界时 (UTC) 设置 Date 对象的年份值。
toUTCString() => string返回使用协调世界时 (UTC) 转换为字符串的日期。
toISOString() => string以 ISO 格式将日期返回为字符串值。
toJSON(key?: any) => string由 JSON.stringify 方法使用,以启用对象数据的转换以进行 JavaScript 对象表示法 (JSON) 序列化。

ScheduleOn

属性类型
年份数字
月份数字
一天数字
工作日Weekday
小时数字
分钟数字
数字

附件

表示通知附件。

属性类型描述
id字符串附件标识符。1.0.0
网址字符串附件的 URL。使用 res 方案引用 Web 资产,例如 res:///assets/img/icon.png。还接受 file URL。1.0.0
optionsAttachmentOptions附件 选项。1.0.0

AttachmentOptions

属性类型描述
iosUNNotificationAttachmentOptionsTypeHintKey字符串UNNotificationAttachment 的可散列选项中设置 UNNotificationAttachmentOptionsTypeHintKey 键。仅适用于 iOS。1.0.0
iosUNNotificationAttachmentOptionsThumbnailHiddenKey字符串UNNotificationAttachment 的可散列选项中设置 UNNotificationAttachmentOptionsThumbnailHiddenKey 键。仅适用于 iOS。1.0.0
iosUNNotificationAttachmentOptionsThumbnailClippingRectKey字符串UNNotificationAttachment 的可散列选项中设置 UNNotificationAttachmentOptionsThumbnailClippingRectKey 键。仅适用于 iOS。1.0.0
iosUNNotificationAttachmentOptionsThumbnailTimeKey字符串UNNotificationAttachment 的可散列选项中设置 UNNotificationAttachmentOptionsThumbnailTimeKey 键。仅适用于 iOS。1.0.0

PendingResult

属性类型描述
通知PendingLocalNotificationSchema[]待处理的通知列表。1.0.0

PendingLocalNotificationSchema

属性类型描述
标题字符串通知的标题。1.0.0
正文字符串通知的正文,显示在标题下方。1.0.0
id数字通知标识符。1.0.0
计划计划计划 此通知在稍后的时间显示。1.0.0
extraany设置要存储在此通知中的额外数据。1.0.0

RegisterActionTypesOptions

属性类型描述
typesActionType[]要注册的操作类型列表。1.0.0

ActionType

操作的集合。

属性类型描述
id字符串操作类型的 ID。在通知中通过 actionTypeId 键引用。1.0.0
actionsAction[]与该操作类型关联的操作列表。1.0.0
iosHiddenPreviewsBodyPlaceholder字符串设置 UNNotificationCategoryhiddenPreviewsBodyPlaceholder。仅适用于 iOS。1.0.0
iosCustomDismissActionbooleanUNNotificationCategory 的选项中设置 customDismissAction。仅适用于 iOS。1.0.0
iosAllowInCarPlaybooleanUNNotificationCategory 的选项中设置 allowInCarPlay。仅适用于 iOS。1.0.0
iosHiddenPreviewsShowTitlebooleanUNNotificationCategory 的选项中设置 hiddenPreviewsShowTitle。仅适用于 iOS。1.0.0
iosHiddenPreviewsShowSubtitlebooleanUNNotificationCategory 的选项中设置 hiddenPreviewsShowSubtitle。仅适用于 iOS。1.0.0

Action

显示通知时可以采取的操作。

属性类型描述
id字符串操作标识符。在 'actionPerformed' 事件中作为 actionId 引用。1.0.0
标题字符串为此操作显示的标题文本。1.0.0
requiresAuthenticationbooleanUNNotificationAction 的选项中设置 authenticationRequired。仅适用于 iOS。1.0.0
foregroundbooleanUNNotificationAction 的选项中设置 foreground。仅适用于 iOS。1.0.0
destructivebooleanUNNotificationAction 的选项中设置 destructive。仅适用于 iOS。1.0.0
inputboolean使用 UNTextInputNotificationAction 代替 UNNotificationAction。仅适用于 iOS。1.0.0
inputButtonTitle字符串UNTextInputNotificationAction 上设置 textInputButtonTitle。当 inputtrue 时,仅适用于 iOS。1.0.0
inputPlaceholder字符串UNTextInputNotificationAction 上设置 textInputPlaceholder。当 inputtrue 时,仅适用于 iOS。1.0.0

CancelOptions

属性类型描述
通知LocalNotificationDescriptor[]要取消的通知列表。1.0.0

EnabledResult

属性类型描述
valueboolean设备是否启用了本地通知。1.0.0

DeliveredNotifications

属性类型描述
通知DeliveredNotificationSchema[]在通知屏幕上可见的通知列表。1.0.0

DeliveredNotificationSchema

属性类型描述
id数字通知标识符。4.0.0
tag字符串通知标签。仅适用于 Android。4.0.0
标题字符串通知的标题。4.0.0
正文字符串通知的正文,显示在标题下方。4.0.0
字符串通知的配置组。仅适用于 Android。4.0.0
groupSummaryboolean如果此通知是通知组的摘要。仅适用于 Android。4.0.0
dataany通知有效载荷中包含的任何其他数据。仅适用于 Android。4.0.0
extraany要存储在此通知内的额外数据。仅适用于 iOS。4.0.0
附件Attachment[]此通知的附件。仅适用于 iOS。1.0.0
actionTypeId字符串与该通知关联的 Action 类型。仅适用于 iOS。4.0.0
计划计划用于触发此通知的 Schedule。仅适用于 iOS。4.0.0
sound字符串显示通知时使用的声音。仅适用于 iOS。4.0.0

Channel

属性类型描述Default
id字符串通道标识符。1.0.0
name字符串此通道的用户友好名称(向用户显示)。1.0.0
description字符串此通道的描述(向用户显示)。1.0.0
sound字符串应为此通道发布的通知播放的声音。重要程度至少为 3 的通知通道应该有声音。声音文件的名称应相对于 android 应用程序 res/raw 目录指定。如果没有提供声音,或者找不到声音文件,则不会使用任何声音。1.0.0
importanceImportance为此通道发布的通知的中断级别。31.0.0
visibilityVisibility为此通道发布的通知的可见性。此设置用于为此通道发布的通知是否显示在锁屏上,以及如果显示,是否以缩略形式显示。1.0.0
lightsboolean为此通道发布的通知是否应显示通知指示灯,在支持它的设备上。1.0.0
lightColor字符串为此通道发布的通知的指示灯颜色。仅当此通道上启用了指示灯且设备支持时才受支持。支持的颜色格式为 #RRGGBB#RRGGBBAA1.0.0
vibrationboolean为此通道发布的通知是否应振动。1.0.0

ListChannelsResult

属性类型描述
channelsChannel[]通知通道列表。1.0.0

PermissionStatus

属性类型描述
displayPermissionState显示通知的权限状态。1.0.0

SettingsPermissionStatus

属性类型描述
exact_alarmPermissionState使用精确闹钟的权限状态。6.0.0

PluginListenerHandle

属性类型
remove() => Promise<void>

ActionPerformed

属性类型描述
actionId字符串执行的操作的标识符。1.0.0
inputValue字符串用户在通知上输入的值。仅适用于 iOS 上 input 设置为 true 的通知。1.0.0
notificationLocalNotificationSchema原始通知模式。1.0.0

类型别名

ScheduleEvery

'year' | 'month' | 'two-weeks' | 'week' | 'day' | 'hour' | 'minute' | 'second'

Importance

重要程度级别。有关更多详细信息,请参阅 Android 开发者文档

1 | 2 | 3 | 4 | 5

Visibility

通知可见性。有关更多详细信息,请参阅 Android 开发者文档

-1 | 0 | 1

PermissionState

'prompt' | 'prompt-with-rationale' | 'granted' | 'denied'

枚举

Weekday

成员
Sunday1
Monday2
Tuesday3
Wednesday4
Thursday5
Friday6
Saturday7