Android:
----------------------------------------------------------------------------------------------------------------------------
第一步:
Forms只是一個UI邏輯庫,推送的東西還是必須在各自的平台單獨實現
點擊推送的消息,默認是直接打開當前應該的頂部的Activity,在Forms中就是MainActivity,默認的默認就是New,這樣顯然是不合適的,這樣做的話,當點擊消息的時候,會在Activity棧中重新添加一個新的MainActivity
所以我們需要設置MainActivity的LaunchMode為SingleTop,當點擊消息后直接進入現有的MainActivity,而不是創建新的MainActivity
第二步:如何知道接收到了消息
在OnResume里面寫接收到消息的處理流程肯定是不合適的
在'第一步'的設置后,如果點擊進入同一個Activity,此時不會觸發OnCreate方法(當然OnResume肯定是會觸發的,但不能作為接收到消息的唯一判別條件,從其他應用返回到當前應用也是會觸發該方法的)
OnNewIntent,當再次進入同一個Activity的時候,會觸發該方法,並且大部分情況,我們為了業務方便,會使用自定義的Receiver,此時我們可以直接在Intent中傳入需要傳遞的消息對象,然后在這里獲取接收
iOS:
----------------------------------------------------------------------------------------------------------------------------
1.iOS接受到APN是通過
AppDelegate中的DidReceiveRemoteNotification獲取的
public override void DidReceiveRemoteNotification (UIApplication application, NSDictionary userInfo, Action<UIBackgroundFetchResult> completionHandler)
通過下面的代碼可以取出具體的Alert:
var alert=userInfo["aps"].ValueForKey(new NSString("alert"))?.ToString();
注意:
1.該方法只有在App在前台的時候會觸發,此時不會在通知欄提示消息;如果在后台的時候,會在通知欄提示消息,只有點擊消息后才會觸發改方法
2.APNS在模擬器中是無法測試的(JPush會打出改LOG),所以推送必須是真機測試