angular - 如何使用 Capacitor 在 Android Native App 中获取 Angular 推送通知?

标签 angular firebase push-notification progressive-web-apps capacitor

我正在开发 Angular 渐进式 Web 应用程序,当我使用 ng serve 运行该应用程序时,它在带有服务 worker 后台通知的浏览器中运行良好。

但相同的功能不适用于使用电容器构建工具使用 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 应用程序中使用 Capacitor 的推送通知 API。

  1. 准备您的 Firebase 帐户并在 Firebase 控制台中使用包 ID 创建 Android 应用程序,示例包:com.example.myapp
  2. 从 Firebase 控制台下载 google-services.json 文件并将其粘贴到您的项目根目录。
  3. 使用电容器在您的目录中创建 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 的通知时,该应用不会被触发,但当您点击通知并重定向到 APP 时会触发 pushNotificationActionPerformed

https://capacitor.ionicframework.com/docs/apis/push-notifications

关于angular - 如何使用 Capacitor 在 Android Native App 中获取 Angular 推送通知?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57289250/

相关文章:

websocket - Angular2 dart ngFor 使用 WebSocket 时不更新 View

javascript - 使用 firebase 并使用动态键名保存

android - 在 Android 屏幕锁定时不调用 BroadcastReceiver

java - Android Firebase 推送通知在后台未收到?

Android 接收静默的 Firebase 通知

javascript - Ionic 3 中的环境特定参数

angular - 如何对组件进行单元测试以检查特定组件是否呈现

javascript - 如何以 Angular 从表单数组中读取内容?

swift - Firebase Firestore 查询未执行

Android:我可以将 Google Analytics 与 Firebase 应用程序一起使用吗