Xamarin.Forms之集成推送


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

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM