点击推送通知后打开页面 Ionic 2 iOS

Posted

技术标签:

【中文标题】点击推送通知后打开页面 Ionic 2 iOS【英文标题】:Open a page after cliking on a push notification Ionic 2 iOS 【发布时间】:2017-09-13 15:12:46 【问题描述】:

最近,我一直在我的应用程序中添加推送通知功能。我正在使用在 link 上找到的 FCN 插件,并且我使用 Ionic 2 框架进行开发。通知已发送,但当我点击它时,它只会打开应用程序的主页,而不是我需要的内页。

我用过这段代码

declare var FCMPlugin;
@Component(
  templateUrl: 'app.html'
)
export class MyApp 
  rootPage:any = HomePage;
  horoscopePage:any = HoroscopeHomePage;
  @ViewChild(Nav) nav: Nav;

   **********************

    FCMPlugin.onNotification(function(data)
      if(data.wasTapped)
        //Notification was received on device tray and tapped by the user.
        if(data.topic =="horoskopi" && data.type=="list")

        console.log( JSON.stringify(data) );

        this.nav.push(this.horoscopePage);

        

      else

        if(data.topic =="horoskopi" && data.type=="list")

        console.log( JSON.stringify(data) );

        this.nav.push(this.horoscopePage);
        
      
  );
  );

不知何故,这行代码this.nav.push(this.horoscopePage); 没有做任何事情

当我改用 NavController 时,它给了我这个错误:

MyApp_Host.html:1 ERROR Error: No provider for NavController!
    at injectionError (core.es5.js:1231)
    at noProviderError (core.es5.js:1269)
    at ReflectiveInjector_._throwOrNull (core.es5.js:2770)
    at ReflectiveInjector_._getByKeyDefault (core.es5.js:2809)
    at ReflectiveInjector_._getByKey (core.es5.js:2741)
    at ReflectiveInjector_.get (core.es5.js:2610)
    at AppModuleInjector.NgModuleInjector.get (core.es5.js:3578)
    at resolveDep (core.es5.js:11039)
    at createClass (core.es5.js:10903)
    at createDirectiveInstance (core.es5.js:10723)

【问题讨论】:

【参考方案1】:

您可以将public navCtrl: NavController 添加到constructor 然后将代码更改为

this.navCtrl.push(this.horoscopePage);

【讨论】:

博士。极客我已经尝试过了,但是当我在设备上安装应用程序时,它会在启动画面完成加载后给我一个空白屏幕。 ***.com/questions/46139512/… 我不知道我对问题的解释是否正确。仅当我在 app.component.ts 类中添加 NavController 时,该应用程序才会给我一个空白屏幕。如果我删除它,应用程序会照常打开。 博士。极客我已经用应用程序在使用 NavController 时给我的错误更新了问题 能否分享项目文件来检查问题,因为通常它必须工作......【参考方案2】:

好吧,在我查看了 Ionic 的官方文档之后,我发现我们不能在 app.component.ts 中使用 NavController 因为你不能注入 NavController 因为任何作为导航控制器的组件都是子组件root component 的一部分,所以它们不能被注入。更多请点击here。

我无法在FCM.onNotifications() 函数中推送新的Page 的原因是它更改了应用程序的scope。解决方案很简单:只需使用箭头函数:

FCMPlugin.onNotification(
        (data)=>
            if(data.wasTapped) 
             //do something
             
            else      
              //do something
           
      );

【讨论】:

我也在使用箭头功能,但仍然出现同样的错误。

以上是关于点击推送通知后打开页面 Ionic 2 iOS的主要内容,如果未能解决你的问题,请参考以下文章

单击 Ionic 中的推送通知时如何打开特定页面?

在 ionic 3 中点击 One Signal 推送通知时如何导航到特定页面?

收到来自 Ionic 推送的通知时如何打开到特定状态?

iOS远程推送点击消息跳转到指定页面

打开应用程序并锁定屏幕时未收到 Ionic FCM 推送通知,除非被点击

IONIC FCM推送通知ios,无法接收