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

  • 相关阅读:
    JDBC操作MySQL
    MySQL-SQL语句
    MySQL-环境安装、配置、卸载、系统介绍
    JavaSE-单元测试、反射、注解
    JavaSE-Stream、方法引用
    JavaSE-函数式编程接口
    JavaSE-网络编程
    Document
    Document
    Document
  • 原文地址:https://www.cnblogs.com/yz1311/p/5534123.html
Copyright © 2020-2023  润新知