在 Ionic + Angular 应用中使用 Firebase 推送通知
Web 框架: Angular 平台: iOS, Android
应用开发者向用户提供的最常见功能之一就是推送通知。在本教程中,我们将逐步讲解在 iOS 和 Android 上实现 Firebase 云消息推送 所需的所有步骤。
为了注册和监控来自 Firebase 的推送通知,我们将在 Ionic + Angular 应用中使用 Capacitor 的推送通知 API。
所需依赖
使用 Capacitor 构建和部署 iOS 和 Android 应用需要进行一些设置。请先 按照这里的说明安装必要的 Capacitor 依赖项,然后再继续。
要在 iOS 上测试推送通知,Apple 要求您拥有 付费的 Apple 开发者账户 和一台 实体 iOS 设备。
如果您遇到问题或控制台显示有关过时或已弃用包的警告,请确保您使用的是 Node、Android Studio 和 Xcode 的最新稳定版本。
此外,我们使用 Firebase 进行推送通知,因此如果您使用其他使用 Firebase SDK 的 Cordova 插件,请确保它们使用的是最新版本。
准备 Ionic Capacitor 应用
如果您已有 Ionic 应用,请跳过此部分。如果没有,让我们先创建一个 Ionic 应用。
在您首选的终端中,安装最新版本的 Ionic CLI:
npm install -g @ionic/cli
接下来,让我们使用 CLI 基于 空白 模板项目创建一个新的 Ionic Angular 应用,并将其命名为 capApp:
ionic start capApp blank --type=angular
在提示询问是否将新应用与 Capacitor 集成时,输入 y 并按回车键。这会将 Capacitor 和 Capacitor CLI 添加到我们的新应用中。
应用成功创建后,切换到新创建的项目目录:
cd capApp/
最后运行 npx cap init,这将允许我们填写应用信息。
npx cap init
? App name: CapApp
? App Package ID: com.mydomain.myappname
构建应用并添加平台
在将任何原生平台添加到此项目之前,必须至少构建一次应用。Web 构建会创建 Capacitor 所需的 Web 资源目录(Ionic Angular 项目中的 www 文件夹)。
ionic build
接下来,让我们将 iOS 和 Android 平台添加到我们的应用中。
npx cap add ios
npx 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';
然后,添加 ngOnInit() 方法以及一些用于注册和监控推送通知的 API 方法。我们还将添加几个事件的 alert() 来监控正在发生的情况:
export class HomePage implements OnInit {
ngOnInit() {
console.log('初始化 HomePage');
// 请求使用推送通知的权限
// iOS 将提示用户并返回他们是否授予了权限
// Android 将直接授予权限而无需提示
PushNotifications.requestPermissions().then(result => {
if (result.receive === 'granted') {
// 向 Apple/Google 注册以通过 APNS/FCM 接收推送
PushNotifications.register();
} else {
// 显示一些错误信息
}
});
// 成功时,我们应该能够接收通知
PushNotifications.addListener('registration',
(token: Token) => {
alert('推送注册成功,令牌: ' + 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');
// 请求使用推送通知的权限
// iOS 将提示用户并返回他们是否授予了权限
// Android 将直接授予权限而无需提示
PushNotifications.requestPermissions().then(result => {
if (result.receive === 'granted') {
// 向 Apple/Google 注册以通过 APNS/FCM 接收推送
PushNotifications.register();
} else {
// 显示一些错误信息
}
});
PushNotifications.addListener('registration', (token: Token) => {
alert('推送注册成功,令牌: ' + 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 控制台 ,点击 添加项目 按钮。
为项目命名,接受 Firebase 服务条款,然后点击 创建项目 继续。系统应会自动为你生成一个项目 ID。
Android
将 Firebase 集成到 Android 应用
本节内容大致参照了 使用 Firebase 控制台设置 Firebase 的文档。以下是与 Capacitor 相关的特定注意事项。
进入你的 Firebase 项目的项目概览页面,在顶部点击 Android 图标来添加一个新的 Android 应用。

接下来会要求你提供一些关于你的应用的信息。
- 你的 Android 包名 应与
capacitor.config.json文件中的 appId 保持一致。 - 我们为这个 Capacitor 应用 ID 使用了
com.mydomain.myappname,所以这里也将使用这个名称。 - 昵称和调试签名证书是可选的
然后点击 注册应用 按钮。
下载并使用 google-services.json 文件
接下来会提示你下载一个 google-services.json 文件。该文件包含了你的 Capacitor 应用在 Android 上连接 Firebase 所需的信息。
将 google-services.json 文件下载到本地计算机。然后将该文件移动到你的 Capacitor Android 项目目录中,具体位置是 android/app/ 目录下。

我们不需要向项目中 添加 任何依赖项,因为 Capacitor 项目已在其 build.gradle 文件中自动包含了 firebase-messaging。
iOS
先决条件
iOS 推送通知的设置比 Android 复杂得多。你必须拥有一个 付费的 Apple 开发者账户 并且 在能够使用 iOS 应用测试推送通知之前,完成以下事项:
- 在 Apple 开发者门户中为你的 iOS 应用 设置正确的开发或生产证书及预配描述文件
- 在 Apple 开发者门户中为开发或生产环境 创建 APNS 证书或密钥
- 在 Xcode 中为你的应用 确保已启用推送通知功能
- 根据 环境设置 文档中的指引,准备一台物理 iOS 设备