Ama*_*ala 3 push-notification firebase progressive-web-apps angular capacitor
我正在开发 Angular 渐进式 Web 应用程序,当我使用ng serve它运行应用程序时,它在浏览器中运行良好,并在 Service Worker 上提供后台通知。
但相同的功能不适用于使用 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);
});
Run Code Online (Sandbox Code Playgroud)
为了在后台注册和监控来自 Firebase Angular APP 的推送通知,请在 Ionic + Angular 应用程序中使用 Capacitor 的推送通知 API。
com.example.myappgoogle-services.json从 Firebase 控制台下载文件并将其粘贴到您的项目根目录。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));
}
);
}
Run Code Online (Sandbox Code Playgroud)
注意:当您收到来自 Firebase 的通知时,此应用不会被触发,但pushNotificationActionPerformed会在您单击通知并重定向到 APP 时被触发。
https://capacitor.ionicframework.com/docs/apis/push-notifications