@capacitor/push-notifications
Push Notifications API 提供对原生推送通知功能的访问。
安装
npm install @capacitor/push-notifications
npx cap sync
iOS 配置
在 iOS 上需要先启用推送通知能力。请参阅设置功能了解如何启用该能力。
启用推送通知能力后,在应用的 AppDelegate.swift
中添加以下代码:
func application(_ application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data) {
NotificationCenter.default.post(name: .capacitorDidRegisterForRemoteNotifications, object: deviceToken)
}
func application(_ application: UIApplication, didFailToRegisterForRemoteNotificationsWithError error: Error) {
NotificationCenter.default.post(name: .capacitorDidFailToRegisterForRemoteNotifications, object: error)
}
Android 配置
Push Notification API 使用 Firebase Cloud Messaging SDK 处理通知。请参考在 Android 上设置 FCM 客户端应用,按照指南创建 Firebase 项目并注册应用。你不需要手动添加 Firebase SDK 或修改应用清单文件 - 推送通知插件已包含这些配置。唯一需要的是将 Firebase 项目的 google-services.json
文件添加到应用的模块(app-level)目录中。
变量配置
本插件会使用以下项目变量(定义在应用的 variables.gradle
文件中):
$firebaseMessagingVersion
:com.google.firebase:firebase-messaging
的版本(默认值:23.0.5
)
推送通知图标
在 Android 上,需要在 AndroidManifest.xml
文件中添加指定名称的推送通知图标:
<meta-data android:name="com.google.firebase.messaging.default_notification_icon" android:resource="@mipmap/push_icon_name" />
如果不指定图标,Android 会使用应用图标,但推送图标应该是透明背景上的白色像素图案。由于应用图标通常不符合这个要求,会显示为白色方块或圆形。因此建议为推送通知提供单独的图标。
Android Studio 提供了图标生成工具,可用于创建推送通知图标。
应用在前台时的通知显示
你可以配置应用在前台运行时推送通知的显示方式。
属性 | 类型 | 描述 | 版本 |
---|---|---|---|
presentationOptions | PresentationOption[] | 这是一个可组合的字符串数组。数组可能的值有:- badge :更新应用图标上的角标计数(默认值)- sound :收到推送通知时设备会响铃/振动- alert :推送通知会显示在原生对话框中可以提供一个空数组来表示不需要任何选项。badge 仅在 iOS 上可用。 | 1.0.0 |
配置示例
在 capacitor.config.json
中:
{
"plugins": {
"PushNotifications": {
"presentationOptions": ["badge", "sound", "alert"]
}
}
}
在 capacitor.config.ts
中:
/// <reference types="@capacitor/push-notifications" />
import { CapacitorConfig } from '@capacitor/cli';
const config: CapacitorConfig = {
plugins: {
PushNotifications: {
presentationOptions: ['badge', 'sound', 'alert'],
},
},
};
export default config;
静默推送通知/纯数据通知
iOS
本插件不支持 iOS 静默推送(远程通知)。建议使用原生代码方案处理这类通知,参考向应用推送后台更新。
Android
本插件支持纯数据通知,但如果应用已被杀死,将不会调用 pushNotificationReceived
。要处理这种场景,你需要创建一个继承 FirebaseMessagingService
的服务,参考处理 FCM 消息。