离子2用FCM推送通知



我正在使用离子本机FCM

在我的Android离子2应用程序上实现推送通知

当我在前景中收到通知时,它可以正常工作,但是当我在后台收到通知时,如果我单击它,则什么都不会发生。

app.component.ts

firebaseInit(){
  //Firebase
  this.fcm.subscribeToTopic('all');
  this.fcm.getToken()
    .then(token => {
      console.log(token);
      this.nativeStorage.setItem('fcm-token', token);
  });
  this.fcm.onNotification().subscribe(
    data => {
      console.log("NOTIF DATA: " + JSON.stringify(data));
      if(data.wasTapped){
        this.nav.push(MemoViewPage, {memo: {_id: data.memo_id}})
        console.info('Received in bg')
      }else{
        let alert = this.alertCtrl.create({
          title: data.subject,
          message: "New memorandum",
          buttons: [
            {
              text: 'Ignore',
              role: 'cancel'
            },
            {
              text: 'View',
              handler: () => {
                this.nav.push(MemoViewPage, {memo: {_id: data.memo_id}})
              }
            }
          ]
        });
        alert.present();
        console.info('Received in fg')
      }
  });
  this.fcm.onTokenRefresh()
    .subscribe(token => {
      console.log(token);
  })
}

一旦我单击系统托盘的通知,if(data.wasTapped)条件就不会消失。

编辑

该应用程序打开,但仅在主页上不转到我设置的指定页面,即this.nav.push(MemoViewPage, {memo: {_id: data.memo_id}})

我在应用程序被杀死或不运行时也无法收到通知。

您可以使用push插件而不是FCM

this.push.createChannel({
 id: "testchannel1",
 description: "My first test channel",
 importance: 3
}).then(() => console.log('Channel created'));

然后您可以使用推理原理来指定您的通知需求,例如声音,离子等。

const options: PushOptions = {
   android: {},
   ios: {
       alert: 'true',
       badge: true,
       sound: 'false'
   },
   windows: {},
   browser: {
       pushServiceURL: 'http://push.api.phonegap.com/v1/push'
   }
};

之后,您很容易收到通知,无论您是否正在使用该应用程序

const pushObject: PushObject = this.push.init(options);
pushObject.on('registration').subscribe((registration: any) => this.nativeStorage.setItem('fcm-token', token));
pushObject.on('notification').subscribe((notification: any) => console.log('Received a notification', notification));

您可以在pushObject init中使用forceShow:true的选项作为应用程序显示通知是否正在使用该应用程序。

,一旦您单击通知,应用程序将由应用程序主页设置为默认值。

相关内容

  • 没有找到相关文章

最新更新