登录推送通知后打开一个页面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);
答
嗯,我在离子的官方文档接过一看,我发现,我们不能app.component.ts
使用NavController
,因为你不能注入NavController
因为这是导航控制器的任何组件是root component
这样的孩子他们不能被注射。更多点击here。
我无法在FCM.onNotifications()
函数中推新的Page
的原因是它更改了应用程序的scope
。该解决方案很简单:只需使用箭头功能:
FCMPlugin.onNotification(
(data)=>{
if(data.wasTapped){
//do something
}
else {
//do something
}
});
+0
我也使用箭头功能但仍然得到相同的错误。 –
怪杰医生我都试过了,但是当我在设备上安装应用程序它给了我后,闪屏完成加载一个空白屏幕。 – Xhulio
https://*.com/questions/46139512/how-can-i-decrease-the-ionic-cordova-project-start-duration –
我不知道我解释问题是否正确。只有当我在app.component.ts类中添加NavController时,该应用才会给我一个空白屏幕。如果我删除它,应用程序将照常开启。 – Xhulio