在应用程序打开时,我的用户会看到我的Ionic3 / AngularJS移动应用程序中如何处理PushNotifications
?我可以识别用户当前所在的页面,我可以通过以下方式完成:
if ( (this.navCtrl.getActive().component === Page1) ){
// user is currently on Page1
// handle push notification
}
不幸的是,这还不够。 Page1
是一个详细信息页面,显示项目的详细信息。我们假设有3个项目:Banana(id: 1
),Apple(id: 2
)和Orange(id: 3
)。
我需要知道,用户当前是否正在查看Page1 for item1,item2或item3。我想做这样的事情:
if ( (this.navCtrl.getActive().component === Page1 && data.itemID === "page1-itemId") ){
// data.itemID is the ID i get from the push notification
// "page1-itemId" is what I desire to get somehow
}
我怎样才能了解page1-itemId
?
答案 0 :(得分:0)
Yo可以执行类似导航到Detail
组件的组件。
this.navCtrl.push(DetailPage, {
id: "1",
});
然后在Detail
页面中读取ID为param
的内容。不要忘记在构造函数中导入和注入Navparams
import { NavParams } from 'ionic-angular';
constructor(private navParams: NavParams) {
let id = navParams.get('id');
}
答案 1 :(得分:0)
以防万一,任何人都会遇到同样的事情:我决定将事件用于此目的。
每当打开Page1时,我都会发布一个这样的事件:
<强> Page1.ts 强>
constructor(...
public events: Events
) {
// read NavParams
this.itemId= this.navParams.get('itemId');
// publish event with current itemId
this.events.publish("Page1:opened",this.itemId);
}
然后我在 app.component.ts
中听这个事件// Listen to Opening of Confirm-Page
this.events.subscribe('Page1:opened', itemId=> {
this.page1ItemId= itemId;
});
...并将this.page1ItemId
与this.nav.getActive().component === Page1
结合使用,以我想要的方式处理通知。