angular - 如何使用 Capacitor 在 Android Native App 中获取 Angular 推送通知?
问题描述
我正在开发 Angular 渐进式 Web 应用程序,当我使用ng serve
它运行应用程序时,它在浏览器中运行良好,并且在服务人员上有后台通知。
但是相同的功能不适用于使用 Capacitor 构建工具创建的移动应用程序npx cap add android
。
我的firebase-service-worker.js文件:
importScripts('https://www.gstatic.com/firebasejs/5.5.0/firebase-app.js');
importScripts('https://www.gstatic.com/firebasejs/5.5.0/firebase-messaging.js');
firebase.initializeApp({
'messagingSenderId': '65358642427'
});
const messaging = firebase.messaging();
messaging.setBackgroundMessageHandler(function (payload) {
var notificationTitle = JSON.parse(payload.notification).title;
var notificationOptions = {
body: JSON.parse(payload.notification).body
};
return self.registration.showNotification(notificationTitle, notificationOptions);
});
解决方案
为了在后台注册和监控来自 Firebase Angular APP 的推送通知,请在 Ionic + Angular 应用程序中使用用于电容器的推送通知 API。
- 准备您的 Firebase 帐户并在 Firebase 控制台中使用包 ID 创建 Android 应用程序,示例包:
com.example.myapp
- 从 Firebase 控制台下载
google-services.json
文件并将其粘贴到您的项目根目录。 - 使用电容器在您的目录中创建 Android 项目:
npx cap add android
最后在您的应用程序组件中处理通知侦听器。
import { Component, OnInit } from '@angular/core';
import {
Plugins,
PushNotification,
PushNotificationToken,
PushNotificationActionPerformed } from '@capacitor/core';
const { PushNotifications } = Plugins;
@Component({
selector: 'app-home',
templateUrl: 'home.page.html',
styleUrls: ['home.page.scss'],
})
export class HomePage implements OnInit {
ngOnInit() {
console.log('Initializing HomePage');
PushNotifications.register();
PushNotifications.addListener('registration',
(token: PushNotificationToken) => {
alert('Push registration success, token: ' + token.value);
}
);
PushNotifications.addListener('registrationError',
(error: any) => {
alert('Error on registration: ' + JSON.stringify(error));
}
);
PushNotifications.addListener('pushNotificationReceived',
(notification: PushNotification) => {
alert('Push received: ' + JSON.stringify(notification));
}
);
PushNotifications.addListener('pushNotificationActionPerformed',
(notification: PushNotificationActionPerformed) => {
alert('Push action performed: ' + JSON.stringify(notification));
}
);
}
注意:当您收到来自 Firebase 的通知时,此应用不会被触发,但pushNotificationActionPerformed
会在您单击通知并重定向到 APP 时触发。
https://capacitor.ionicframework.com/docs/apis/push-notifications
推荐阅读
- excel - 在 VBA 中发送消息 - Excel
- android - 我试图从 youtube 视频中获取 URL 并使用 mediaplayer 播放它,但它立即结束
- java - 如何删除目录中的所有文件但保留符号链接指向的文件?
- azure-devops - 无法访问 https://dev.azure.com/
使用 TFS 扩展客户端版本 15 - vue.js - 如何使用日期选择器进行双向数据竞价?
- .htaccess - 排除 htacess 对白名单 .well-known 文件夹的编辑问题,让我们加密挑战 Drupal 7
- javascript - 在初始化代码的位置创建自定义元素
- asp.net - 如何将点击事件添加到从后面的代码添加的图像按钮
- tensorflow - 使用带有 Tensorflow 和 Tensorflow Serving 的 GPU 的非确定性结果。.. 为什么?
- ios - 归档时:结构给出“冗余协议错误”,但在运行时没有