点击使用 ionic 和 Firebase Cloud 消息传递的通知后打开页面



晚上好。我正在尝试以这样的方式处理通知单击,即当用户单击通知时,将打开我的应用程序的特定页面。我正在使用 FIREBASE CAN MESSAGING 和 IONIC 3

这是 app.component.ts 文件中的代码,用于处理通知的代码是编写的:

import { Platform, Nav, ToastController } from 'ionic-angular';
import { HomePage } from '../pages/home/home';
import { Component, ViewChild } from '@angular/core';
import { FCM } from '@ionic-native/fcm';
import { Signup } from '../pages/signup/signup';
   @Component({
      templateUrl: 'app.html',
      selector: 'Myappname',
   })
   export class MyApp {
        @ViewChild(Nav) nv: Nav;
        rootPage: any = HomePage;
        constructor(public fcm: FCM, platform: Platform) {
          platform.ready().then(() => {
                  fcm.onNotification().subscribe(data => {
                         if (data.wasTapped) {
                              this.nv.push(Signup);
                         } else {
                           console.log("Received in foreground");
                         }
                 })
         });
    }
 }         

在移动设备上收到信息时,如果用户单击它,则仅显示主页,并注意将他重定向到代码中指定的注册页面。

有什么帮助吗?谢谢。

我终于找到了解决方案。 由于我使用 Firebase Cloud 函数发送通知,以下是我用于在用户单击收到的通知时使 onNotification(( 工作的代码。

exports.Hello = functions.database.ref('/users/{userId}').onCreate(event=>{
         admin.messaging().sendToTopic('all', {
              data:{
                 "key1": value1,
                 "key2": value2
              },
              notification: {
                  clickAction : "FCM_PLUGIN_ACTIVITY",
                  sound : "default",
                  title : "Notification title",
                  body : "message content"
              }
         });
});

因此,我们必须将通知对象的 clickAction 属性设置为 FCM_PLUGIN_ACTIVITY,以使 onNotification(( 方法在用户点击通知时执行。

这是 app.component.ts in witch 中实现 onNotification(( 方法的代码示例。

  import { Platform, Nav, ToastController } from 'ionic-angular';
  import { HomePage } from '../pages/home/home';
  import { Component, ViewChild } from '@angular/core';
  import { FCM } from '@ionic-native/fcm';
  import { Signup } from '../pages/signup/signup';
  @Component({
        templateUrl: 'app.html',
        selector: 'Myappname',
  })
  export class MyApp {
    @ViewChild(Nav) nv: Nav;
    rootPage: any = HomePage;
    constructor(public fcm: FCM, platform: Platform) {
      platform.ready().then(() => {
              fcm.onNotification().subscribe(data => {
                     if (data.wasTapped) {
                          this.nv.push(Signup);
                     } else {
                       console.log("Received in foreground");
                     }
             })
           });
      }
  }         

现在,它工作正常!

尝试将根页面设置为注册页面,希望它能正常工作:

this.nv.setRoot(Signup);

如果这不起作用,请尝试在您的 fcm.onNotification(( 之前添加它

var $this = this;

然后使用 $this 在你的 if 语句中引用//(wasTapped(

$this.nv.setRoot(Signup);

相关内容

  • 没有找到相关文章

最新更新