当前位置: 首页 > 知识库问答 >
问题:

电容-在Ionic+Angular应用程序中不接收推送通知

田权
2023-03-14

我已经开始研究电容了。在阅读https://capacitorjs.com/docs/cordova/knowled-incompatible-plugins之后,我发现Capablear不支持某些cordova插件。

我在我的应用程序中使用cordova-plugin-fcm-with-dependecy-updated(android)和cordova-plugin-fcm(iOS)进行推送通知,但电容不支持这些插件,所以我使用了电容原生方法,在https://capacitorjs.com/docs/apis/push-notifications#addlistener中指导。

本机方法是没有抛出任何错误,我能够得到注册令牌以及,但我没有收到推通知注册设备。

我也尝试了https://www.npmjs.com/package/capactor-fcm,但是fcm.gettoken()返回null。

capacitor.config.json

"plugins": {
         "PushNotifications": {
           "presentationOptions": [
             "badge",
             "sound",
             "alert"
           ]
         }
       }
@Component({
  selector: 'app-root',
  templateUrl: 'app.component.html'
})

export class AppComponent implements OnInit {

  constructor(
    private platform: Platform,
    private splashScreen: SplashScreen,
    private fcmService: FcmService
  ) {
    this.initializeApp();
  }

  ngOnInit() {}

  initializeApp() {
    this.platform.ready().then(() => {  
      setTimeout(() => {
        this.splashScreen.hide();
      }, 300);    

      this.fcmService.initPush();

    });
  }
}
import { Injectable } from '@angular/core';
import {
    Plugins,
    PushNotification,
    PushNotificationToken,
    PushNotificationActionPerformed,
    Capacitor
} from '@capacitor/core';

import { Router } from '@angular/router';

const { PushNotifications, Modals } = Plugins;

import { FCM } from '@capacitor-community/fcm';
const fcm = new FCM();

const { FCMPlugin } = Plugins;

@Injectable({
    providedIn: 'root'
})
export class FcmService {
    
    constructor(
        private router: Router) { }

    initPush() {
        alert('Capacitor platform' + Capacitor.platform);
        if (Capacitor.platform !== 'web') {
            this.registerPush();
        }
    }

    private registerPush() {

        PushNotifications.requestPermission().then((permission) => {
            if (permission.granted) {
                // Register with Apple / Google to receive push via APNS/FCM
                PushNotifications.register();
            } else {
                alert('No permission for push granted');
            }
        });

        PushNotifications.addListener(
            'registration',
            (token: PushNotificationToken) => {
                alert('APN token: ' + JSON.stringify(token));
                fcm.getToken().then((r) => {
                    alert(`FCM Token: ${r.token}`); //---- showing null.
                }).catch((err) => {
                    alert(`FCM Token ERROR: ${JSON.stringify(err)}`);
                });

            }
        );

        PushNotifications.addListener('registrationError', (error: any) => {
            alert('Registration Error: ' + JSON.stringify(error));
        });

        PushNotifications.addListener(
            'pushNotificationReceived',
            async (notification: PushNotification) => {                    
                Modals.alert({
                    title: notification.title,
                    message: notification.body
                })
            }
        );

        PushNotifications.addListener(
            'pushNotificationActionPerformed',
            async (notification: PushNotificationActionPerformed) => {
                alert('Action performed: ' + JSON.stringify(notification.notification));
            }
        );
    }
}

共有1个答案

公冶昆杰
2023-03-14

您在firebase项目中添加了SHA证书指纹并更新了google服务文件

 类似资料:
  • 我正在iOS8+上使用最新的试用版PubNub,Xcode7.3,试图建立一个聊天应用程序。我正在评估PubNub作为另一个聊天服务器的替代方案。 我遵循了PubNub文档中关于苹果推送通知的说明,但我的应用程序在后台时从不接收推送通知。 我已经创建了p12证书并将其导入到PubNub密钥集中。我在Xcode常规设置中启用了推送通知。我已经编写了PubNub文档中指定的Swift代码。我能够成功发

  • 当app不再活动(即使是最近的任务)时,如何从FCM接收推送通知。我看到gmail、whatsapp都有这个功能。我正在使用FCM进行推送通知。我使用了WakefulBroadcast接收器来唤醒设备。我怎么用这个? 服务类别:

  • 问题内容: 我在应用程序中配置了Parse API,除推送通知外,其他所有功能均正常运行。我试图从网站发送它们,但它们未到达应用程序。我按照文档中的说明进行了所有操作,但是无法收到通知推送。 我能够收到一个,当我按它时,应用程序崩溃了。现在,我尝试更改某些内容,但即使反转,也无法再接收它们。我该如何解决我的问题? 编辑:由于某些用户可能感兴趣,所以这是我用于推送通知的部分代码: 主类(虽然不是Ma

  • 我试图在我正在开发的Cordova应用程序中获得推送通知。它们在Android应用程序中工作得很好,在iOS应用程序中,当应用程序处于前台时,它们也工作得很好,但当应用程序处于后台或终止时,我不会收到任何通知。 我启用了“推送通知”和“后台模式-远程通知”功能: 我100%肯定服务器有设备令牌(因为推送通知在前台工作,我可以在数据库中看到它)。 如果我在应用程序应该收到通知后启动它或将它带到前台,

  • 我正在使用FCM进行云消息传递。当我在后台和前台应用状态下收到来自服务器的消息推送时,我想添加应用徽章。我错过了什么?主要问题是根据消息推送添加/更新/删除应用徽章,我可以接收和处理推送消息。我在这个问题上花了3天时间。请帮帮我!?*徽章号码根据内部内容的变化,如如果收到新的电子邮件邮件到gmail应用程序,徽章号码在后台和前台应用程序状态更改为未读邮件计数。 使用XCode 9.2、Swift

  • 但是当我通过两次点击home按钮并滑动应用程序来终止应用程序时,就不会收到json通知。(换句话说,方法“应用程序:DidReceiverEmoteNotification:”未调用)。 我使用NSLog代码来检查通知接收和监视设备CONSOL。 我在stackoverflow的帖子中看到了所有类似的问题,但没有找到答案。