美文网首页
flutter集成极光推送之冷启动跳转指定模块

flutter集成极光推送之冷启动跳转指定模块

作者: Chg_43da | 来源:发表于2021-09-25 21:58 被阅读0次

    遇到问题

    app集成了极光推送。除了推送消息之外还需要实现点击通知之后跳转到指定模块。在按照激光的文档完成配置之后,出现了几个问题。

    1.在app被关闭的时候后,Android端无法正常收到推送。需要启动app之后才会接收到推送消息。或是app在启动的情况下,也可正常接收到推送消息。ios端没有这个问题,无论app是否启动的状态,都可以收到推送。

    2.虽说ios在app没有启动的时候,可以收到推送,但是却无法读取到我在推送的时候添加的附加参数,导致无法完成跳转到指定模块的功能。

    3.第1个问题,app关闭后无法接收到推送,后来通过集成厂商通道的方式解决了,但是却和ios端一样,虽然收到了,但是无法获取到附加参数。

    如果你也是这三种情况的话,接着往下看。

    iOS端解决

    先来说ios端:经过查阅文档,发现极光推送插件有个方法是getLaunchAppNotification() 他的方法签名就已经说明这个问题了。

    /// 点击推送启动应用的时候原生会将该 notification 缓存起来,该方法用于获取缓存 notification

      /// 注意:notification 可能是 remoteNotification 和 localNotification,两种推送字段不一样。

      /// 如果不是通过点击推送启动应用,比如点击应用 icon 直接启动应用,notification 会返回 @{}。

    也就是说,点击之后可以调用这个方法获取到缓存的通知

    final JPush jpush = JPush();

    jpush.getLaunchAppNotification()

    这就可以获取到的就是推送的时候附加的参数,后面就解析使用就可以了。

    Android端解决

    android有点复杂,没有发现有现成的方法。后来是借鉴了一个Android的解决方案解决的 。需要了解Flutter和原生交互。

    参考链接:https://blog.csdn.net/smaillift/article/details/105726889

    大概意思就是,通过在Activity中获取启动android视图的参数,之前搞Android的同学应该明白什么意思。

    不明白的也没关系,其实就相当于,启动app的时候,有个默认的主页,相当于给这个主页传参数,然后有方法可以获取到这些参数。

    我采用的解决方式是,当程序启动之后,在首页初始化的时候,Flutter和Android原生进行交互,取到这些参数,返回给Flutter,进行处理。

    具体步骤如下

    在创建推送的时候,添加自己需要附加的参数之后,在找到天蝎url_activity的地方,然后把flutter android项目的主activity填写上,例如:com.test.pack.MainActivity

    com.test.pack 是自己项目的包命,注意这里不要直接cv。

    极光创建推送

    然后创建一个flutter和原生交互的方法

    红色为获取参数

    取到的参数是个String格式,可以直接json.decode

    然后就可以正常处理了。

    还有就是需要注意调试推送的时候,选择仅通过厂商通道进行下发。

    相关文章

      网友评论

          本文标题:flutter集成极光推送之冷启动跳转指定模块

          本文链接:https://www.haomeiwen.com/subject/nanxnltx.html