2017-07-06 91 views
0

如何在應用程序處於打開狀態時向我的用戶顯示我的Ionic3/AngularJS移動應用程序中的PushNotifications?我可以識別用戶當前所在的頁面,我可以通過以下方式執行此操作:獲取當前打開的詳細信息頁實例的ID

if ((this.navCtrl.getActive().component === Page1)){ 
    // user is currently on Page1 
    // handle push notification 
} 

不幸的是,這還不夠。 Page1是一個詳細頁面,其中顯示了一個項目的詳細信息。假設有3個項目:香蕉(id: 1),Apple(id: 2)和Orange(id: 3)。

我需要知道,用戶目前是否正在查看item1,item2或item3的Page1。我想要這樣做:

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

以防萬一,任何人都將與同樣的事情奮鬥:我決定使用事件用於此目的。

每當第1頁被打開,我發佈一個像這樣的事件:

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.page1ItemIdthis.nav.getActive().component === Page1結合使用以按我想要的方式處理通知。

0

喲可以做一些類似組件導航到Detail組件。

this.navCtrl.push(DetailPage, { 
    id: "1", 
}); 

,然後在Detail頁中讀取ID param這樣。不要忘了在構造函數中

import { NavParams } from 'ionic-angular'; 

constructor(private navParams: NavParams) { 
    let id = navParams.get('id'); 
} 

源導入並注入NavparamsIonic NavController docs

+0

謝謝,Rajkishor。但是,這不是我要求的。 –

+0

'Page1是一個詳細頁面,其中顯示了一個項目的詳細信息。其實我假設,有一個頁面的項目列表,當你選擇一個項目,那麼你需要顯示一個項目的細節。你能提供更多的信息嗎? –

+0

請重新閱讀我的初始文章。正如我所說的,我需要知道,用戶目前是否正在查看item1,item2或item3的Page1來處理傳入的推送通知,具體取決於用戶當前正在查看的項目。 –