登录推送通知后打开一个页面Ionic 2 iOS

问题描述:

最近,我一直在我的应用程序中添加推送通知功能。我使用在此link上找到的FCN插件,并使用Ionic 2框架进行开发。通知得到传递,但当我点击它时,它只是打开应用程序的主页,而不是我需要的内页。登录推送通知后打开一个页面Ionic 2 iOS

我已经使用这个代码

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) 

你可以将public navCtrl: NavController加入constructor,然后将代码更改为

this.navCtrl.push(this.horoscopePage); 
+0

怪杰医生我都试过了,但是当我在设备上安装应用程序它给了我后,闪屏完成加载一个空白屏幕。 – Xhulio

+0

https://*.com/questions/46139512/how-can-i-decrease-the-ionic-cordova-project-start-duration –

+0

我不知道我解释问题是否正确。只有当我在app.component.ts类中添加NavController时,该应用才会给我一个空白屏幕。如果我删除它,应用程序将照常开启。 – Xhulio

嗯,我在离子的官方文档接过一看,我发现,我们不能app.component.ts使用NavController,因为你不能注入NavController因为这是导航控制器的任何组件是root component这样的孩子他们不能被注射。更多点击here

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

FCMPlugin.onNotification(
     (data)=>{ 
      if(data.wasTapped){ 
      //do something 
      } 
      else {  
       //do something 
      } 
     }); 
+0

我也使用箭头功能但仍然得到相同的错误。 –