【问题标题】:how to navigate to specific page when tapped on One Signal push notification in ionic 3?在 ionic 3 中点击 One Signal 推送通知时如何导航到特定页面?
【发布时间】:2019-07-18 12:13:11
【问题描述】:

我想在点击 One Signal 发送的推送通知时打开特定页面。我尝试了几种方法,但没有找到任何解决方法! 这是我的代码。

我已经尝试了所有的导航方式


        // window["plugins"].OneSignal.sendTag("user_tag", "VIP");

        if (jsonData.notification.payload.additionalData != null) {


          let navigator: any = JSON.stringify(jsonData.notification.payload.additionalData.page);
          alert(navigator);
          alert(navigator == '"TodayspickPage"');
          if (navigator == '"TodayspickPage"') {
            //I TRIED THESE ALL WAYS
            // this.nav.setRoot(TodayspickPage);
            // this.rootPage=TodayspickPage;
            // this.app.nav.push(TodayspickPage);
           //this.nav.push(TodayspickPage);
          }



        }

      };


      window["plugins"].OneSignal
        .startInit("47c084d5-**************437ca9f9bbd", "8324*******08")
        .inFocusDisplaying(OneSignal.OSInFocusDisplayOption.Notification)
        .handleNotificationOpened(notificationOpenedCallback)
        .endInit();

【问题讨论】:

    标签: angular push-notification navigation ionic3 onesignal


    【解决方案1】:

    我也将 OneSignal 用于我的推送通知,我使用这种方式来实现:

    initializeApp() {    
    this.platform.ready().then(() => {
    
        let self = this;
        var notificationOpenedCallback = async function(jsonData) {
          switch (self.user.role) {
            case "client":
              self.router.navigate(["history-customer"]);
              break;
            case "provider":
              self.router.navigate(["history-provider"]);
              break;
            default:
              self.router.navigate(["history-customer"]);
          }
        };
    
        window["plugins"].OneSignal.startInit(
          "03b**************c7",
          "1**********2"
        )
          .handleNotificationOpened(notificationOpenedCallback)
          .endInit();
    
        window["plugins"].OneSignal.setSubscription(true);
      });
    }
    

    platform.ready 在 app.component.ts 上的所有内容,根据您的情况更改代码。

    我用

    let self = this
    

    因为我猜 startInit 会收到一个回调,所以有必要这样做,我使用路由器在页面之间导航。

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

    我的项目的结果,它的工作原理与应用程序外的点击通知相同。

    希望对你有所帮助:)

    【讨论】:

    • 非常感谢,请告诉我您是如何使用 Angular 路由的?你在用离子 4 吗?
    • 是的,我使用的是 ionic v4,但我想您只需要使用使用 Ionic v3 的路由器进行更改,抱歉,我无法共享企业的代码:(。
    • 我尝试集成角度路由,但不幸的是 v3 不允许进行路由...请帮帮我
    猜你喜欢
    • 1970-01-01
    • 2019-04-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-14
    相关资源
    最近更新 更多