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),所以推送必须是真机测试