Firebase Clound Messaging(FCM)的 Notification Payload 裡面有一個 click_action
,顧名思義就是當推播訊息被使用者點擊之後,App 跟隨著要做什麼樣的反應動作,最常見的就是 App 依據 click_action 跳至與通知相關的頁面,我們就來看看如何透過 click_action 來控制顯示不同頁面。
我額外建立兩個 Page:Page1、Page2,當收到的 click_action 為 page1 時就跳至 Page1,page2 就跳至 Page2。
Android
Android 要處理 click_action 需要透過 IntentFilter,透過標記 Intent 的方式來取得 click_action 值,我們在 MainActivity 上添加 IntentFilter。
之後我們可以透過 this.Intent.Action
取得 click_action 的值,我在這邊建立了一個 AndroidClickActionValue
類別用來存取 click_action 的值,另一種做法是透過 MessagingCenter
來傳遞 click_action 的值,這部分可以參考相關文章。
internal class AndroidClickActionValue : IClickActionValue
{
public static readonly AndroidClickActionValue Instance = new AndroidClickActionValue();
private readonly object lockedObject = new object();
private string value;
private AndroidClickActionValue()
{
}
public void Set(string value)
{
this.value = value;
}
public string Get()
{
lock (this.lockedObject)
{
var clickAction = this.value;
this.value = default(string);
return clickAction;
}
}
public string Peek()
{
return this.value;
}
}
然後我們在 App.xaml.cs 中的 OnStart
方法裡面加入判斷邏輯
我們來看執行效果
iOS
iOS 的話,要在 AppDelegate.cs
中 override ReceivedRemoteNotification
方法,在裡面我們就可以取得我們要的 click_action 值。
接著我們在 App.xaml.cs 中的 OnResume
方法裡面加入判斷邏輯
以下是執行結果
參考資料
< Source Code >