在 Ionic + Angular 应用中使用 Firebase 推送通知
Web 框架:Angular 平台:iOS、Android
应用程序开发者向其用户提供的最常见功能之一是推送通知。在本教程中,我们将逐步介绍在 iOS 和 Android 上让 Firebase Cloud Messaging 工作所需的所有步骤。
为了在 Ionic + Angular 应用中注册和监控来自 Firebase 的推送通知,我们将使用 Capacitor 的推送通知 API。
所需依赖
使用 Capacitor 构建和部署 iOS 和 Android 应用需要一些设置。在继续之前,请按照说明安装必 要的 Capacitor 依赖。
要在 iOS 上测试推送通知,Apple 要求您拥有付费的 Apple Developer 账户。
此外,我们使用 Firebase 进行推送通知,因此如果您使用其他使用 Firebase SDK 的 Cordova 插件,请确保它们使用的是最新版本。
准备 Ionic Capacitor 应用
如果您已有现有的 Ionic 应用,请跳过此部分。如果没有,让我们先创建一个 Ionic 应用。
在您喜欢的终端中,安装最新版本的 Ionic CLI:
npm install -g @ionic/cli
接下来,让我们使用 CLI 创建一个基于 blank 启动器项目的新 Ionic Angular 应用,并将其命名为 capApp:
ionic start capApp blank --type=angular
应用成功创建后,切换到新创建的项目目录:
cd capApp/
最后,编辑 capacitor.config.ts 中的 appId。
const config: CapacitorConfig = {
- appId: 'io.ionic.starter',
+ appId: 'com.mydomain.myappnam',
appName: 'capApp',
webDir: 'www'
};
构建应用并添加平台
在向此项目添加任何原生平台之前,必须至少构建一次应用。Web 构建会创建 Capacitor 所需的 Web 资产目录(Ionic Angular 项目中的 www 文件夹)。
ionic build
接下来,让我们为应用添加 iOS 和 Android 平台。
ionic cap add ios
ionic cap add android
运行这些命令后,项目根目录下会创建 android 和 ios 文件夹。这些是完全独立的原生项目工件,应被视为您的 Ionic 应用的一部分(即,将其纳入源代码管理)。
使用 Capacitor 推送通知 API
首先,我们需要安装 Capacitor 推送通知插件。
npm install @capacitor/push-notifications
npx cap sync
然后,在开始使用 Firebase 之前,我们需要确保应用能够通过使用 Capacitor 推送通知 API 注册推送通知。我们还将添加一个 alert(您也可以使用 console.log 语句代替),以在通知到达且应用在设备上打开时显示通知的负载数据。
在您的应用中,进入 home.page.ts 文件,添加 import 语句和 const 以使用 Capacitor Push API:
import { ActionPerformed, PushNotificationSchema, PushNotifications, Token } from '@capacitor/push-notifications';
然后,添加带有一些 API 方法的 ngOnInit() 方法,以注册和监控推送通知。我们还将为其中一些事件添加 alert() 来监控正在发生的事情:
export class HomePage implements OnInit {
ngOnInit() {
console.log('初始化 HomePage');
// 请求使用推送通知的权限
// iOS 将提示用户并返回是否授予权限
// Android 将直接授予而不提示
PushNotifications.requestPermissions().then((result) => {
if (result.receive === 'granted') {
// 通过 APNS/FCM 向 Apple/Google 注册以接收推送
PushNotifications.register();
} else {
// 显示一些错误
}
});
// 成功后,我们应该能够接收通知
PushNotifications.addListener('registration', (token: Token) => {
alert('推送注册成功,token: ' + token.value);
});
// 设置出现问题,推送将无法工作
PushNotifications.addListener('registrationError', (error: any) => {
alert('注册错误: ' + JSON.stringify(error));
});
// 如果应用在设备上打开,显示通知负载
PushNotifications.addListener('pushNotificationReceived', (notification: PushNotificationSchema) => {
alert('收到推送: ' + JSON.stringify(notification));
});
// 点击通知时调用的方法
PushNotifications.addListener('pushNotificationActionPerformed', (notification: ActionPerformed) => {
alert('推送动作已执行: ' + JSON.stringify(notification));
});
}
}
以下是 home.page.ts 的完整实现:
import { Component, OnInit } from '@angular/core';
import { ActionPerformed, PushNotificationSchema, PushNotifications, Token } from '@capacitor/push-notifications';
@Component({
selector: 'app-home',
templateUrl: 'home.page.html',
styleUrls: ['home.page.scss'],
})
export class HomePage implements OnInit {
ngOnInit() {
console.log('初始化 HomePage');
PushNotifications.requestPermissions().then((result) => {
if (result.receive === 'granted') {
PushNotifications.register();
} else {
// 显示一些错误
}
});
PushNotifications.addListener('registration', (token: Token) => {
alert('推送注册成功,token: ' + token.value);
});
PushNotifications.addListener('registrationError', (error: any) => {
alert('注册错误: ' + JSON.stringify(error));
});
PushNotifications.addListener('pushNotificationReceived', (notification: PushNotificationSchema) => {
alert('收到推送: ' + JSON.stringify(notification));
});
PushNotifications.addListener('pushNotificationActionPerformed', (notification: ActionPerformed) => {
alert('推送动作已执行: ' + JSON.stringify(notification));
});
}
}
之后,您需要生成新的构建并让 Capacitor 知道这些更改。您可以通过以下方式完成:
ionic build
npx cap copy
在 Firebase 上为应用创建项目
在将 Firebase Cloud Messaging 连接到您的应用并发送推送通知之前,您需要在 Firebase 中启动一个项目。
转到 Firebase 控制台,点击 Add project 按钮。
为项目命名,接受 Firebase 条款,然后点击 Create project 继续。系统将自动为您生成一个项目 ID。
Android
将 Firebase 与 Android 应用集成
本节或多或少与使用 Firebase 控制台文档设置 Firebase 相呼应。请参阅以下特定于 Capacitor 的说明。
转到 Firebase 项目的"项目概览"页面,在顶部,点击 Android 图标以添加新的 Android 应用。

下一个屏幕将询问一些关于您的应用的信息。
- 您的 Android 包名 应与
capacitor.config.ts文件中的 appId 匹配 - 我们为此 Capacitor 应用 ID 使用了
com.mydomain.myappname,因此我们将使用它作为此条目 - 昵称和调试签名证书是可选的
然后点击 Register app 按钮。
下载并使用 google-services.json 文件
下一个提示将要求您下载 google-services.json 文件。此文件包含您的 Capacitor 应用从 Android 连接 Firebase 所需的信息。
将 google-services.json 文件下载到本地机器。然后将文件移动到您的 Capacitor Android 项目目录中,具体位置是 android/app/。

我们不需要向我们的项目_添加_任何依赖,因为 @capacitor/push-notifications 在其 build.gradle 文件中自动包含了 firebase-messaging 的某个版本。
iOS
先决条件
iOS 推送通知的设置比 Android 复杂得多。您必须拥有付费的 Apple Developer 账户 并且 在能够使用 iOS 应用测试推送通知之前,需要处理好以下事项:
- 在 Apple Developer Portal 中为您的 iOS 应用设置适当的开发或生产证书和配 置文件
- 在 Apple Developer Portal 中为开发或生产创建 APNS 证书或密钥
- 确保在 Xcode 中已为您的应用启用推送通知功能
将 Firebase 与原生 iOS 应用集成
这部分与上面的 Android 部分非常相似,但有一些关键区别。
首先,转到 Firebase 项目的项目概览页面。如果您一直在按照本指南操作,页面顶部应该已经有一个 Android 应用列出来。
要将 iOS 添加到您的 Firebase 项目,请点击 Add App 按钮并选择 iOS 平台。
下一个屏幕将询问一些关于您的应用的信息。
- 您的 iOS bundle ID 应与
capacitor.config.ts文件中的 appId 匹配 - 我们为此 Capacitor 应用 ID 使用了
com.mydomain.myappname,因此我们将使用它作为此条目 - 应用昵称和 App Store ID 是可选的
然后点击 Register app 按钮。