离子2:处理点击推送通知

时间:2017-06-13 09:36:03

标签: cordova push-notification ionic2

我使用离子push plugin来处理从Google FCM发送的推送通知。以下是我用于注册和接收通知的代码。

pushObject.on('notification').subscribe((notification: any) => console.log('Received a notification', notification));

pushObject.on('registration').subscribe((registration: any) => console.log('Device registered', registration));

pushObject.on('error').subscribe(error => console.error('Error with Push plugin', error));

如果应用程序未打开,我会收到通知,如果打开,我会直接获得警报(内部订阅的代码((通知:任意)被执行)。现在的问题是,

  1. 如果app没有打开,点击通知我必须能够触发一些功能,以便我可以提取有效载荷数据并执行某些操作。
  2. 即使应用程序打开,通知也会显示在顶部,单击它时我必须能够触发某些功能。

1 个答案:

答案 0 :(得分:0)

我终于为此实现了解决方案。之前我在服务器端使用Cordova-plugin-firebase,在客户端使用PhoneGap-plugin-push。使用这种组合的主要原因是任何数量的通知都是免费的。但是在PhoneGap-plugin-push中我遇到了很多问题,尽管作者在GitHub中回答了这些问题,但并不是立竿见影的。最后我将我的应用移到了One-Signal。易于集成,最佳支持,完全免费且非常重要,通知非常可靠。以下使用单信号区域的说明。

  1. 按照下面提到的官方链接中的说明设置单信号服务器端: https://documentation.onesignal.com/docs/ionic-sdk-setup
  2. 使用下面提到的命令将单信号插件安装到离子应用程序。
  3.   

    离子cordova插件添加onesignal-cordova-plugin

    npm install --save @ionic-native/onesignal
    
    1. 然后从' @ ionic-native / onesignal'中导入{OneSignal};在app.module.ts中,在提供者中注册OneSignal。
    2. 创建一个函数或在app.componet.ts
    3. 的构造函数中添加以下代码
        

      this.oneSignal.startInit(' YOUR_APPID&#39 ;,   ' YOUR_GOOGLE_PROJECT_NUMBER_IF_ANDROID&#39);

           

      this.oneSignal.inFocusDisplaying(this.oneSignal.OSInFocusDisplayOption.InAppAlert);

      this.oneSignal.handleNotificationReceived().subscribe(() => {
       // do something when notification is received
      });
      
      this.oneSignal.handleNotificationOpened().subscribe(() => {
        // do something when a notification is opened
      });
      
      this.oneSignal.endInit();
      
      1. 您将从单信号仪表板获得的应用程序ID。
        1. 即使您将获得有关获取Google-project-id的说明(只有在使用Android时才需要它)。
      2. 因此,如果有人在寻找替代基地+手机间隙推送插件,那么One-Signal将是您的最佳选择。