广告
返回顶部
首页 > 资讯 > 精选 >Android极光推送处理message遇到的坑如何解决
  • 729
分享到

Android极光推送处理message遇到的坑如何解决

2023-07-05 07:07:52 729人浏览 独家记忆
摘要

这篇文章主要介绍“Android极光推送处理message遇到的坑如何解决”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Android极光推送处理message遇到的坑如何解决”文章能帮助大家解决问

这篇文章主要介绍“Android极光推送处理message遇到的坑如何解决”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Android极光推送处理message遇到的坑如何解决”文章能帮助大家解决问题。

因为项目使用的是通知栏方式,就是手机会先收到一个通知栏,用户点击通知栏跳转对应页面。

Android极光推送处理message遇到的坑如何解决

在点击这个通知栏时会触发其中onNotifyMessageOpened方法,后端会把我们所需要的内容放在message中。其实也就是个JSON字符串,我们拿到后需要通过对它解析拿到我们所需数据。

override fun onNotifyMessageOpened(    context: Context?,    message: NotificationMessage) {    val title = message.notificationTitle//通知栏标题    val content = message.notificationContent//通知栏内容    val json = message.notificationExtras//推送信息}

到这里都还一帆风顺,接下来就出现问题了,明明日志获取到了对应信息,但解析后使用却是空:

val fromJson = gson.fromJson(json, Bean::class.java)

我打印了一下json信息:

{"data":"{\"type\":1,\"name\":\"张三\"}"}

Android极光推送处理message遇到的坑如何解决

很明显,data内部只能识别出一个字符串。所以我们无法拿到内部的type和name属性。经过了解后才知道,后端设置notificationExtras时只能设置为Sting类型,然而notificationExtras已经是实体内的一个属性,所以我们拿到的时候其实json已经被转义了。那么怎么解决呢?其实把data的值再一次通过Gson解析就能拿到数据了。我们这里采取Map来解析:

其实如果使用Gson解析就不会再出现坑,因为使用Map后面还有坑,所以这里接着使用Map来解析。

val map = Gson().fromJson<HashMap<String, Any>>(    fromJson.data,    HashMap::class.java)

通过上面的json信息其实不难发现,data内部只有两个属性,一个int类型的type,一个Sting类型的name。然而,这里的坑又出现了。

Android极光推送处理message遇到的坑如何解决

眼尖的同学估计已经发现问题了,一个int类型的数据竟然给我转换成Double类型的数据了,不得不说这很不严谨。难道是自己哪里没操作对吗?最后通过查阅资料发现,这是Gson的坑,不仅仅是int,连Long也会被转换为Double,这一点让人很难接受。如何解决?

  • 自定义GsonTypeAdapter,具体实现可以查阅资料

  • 抛弃Gson,拥抱阿里,使用FastJson

到此,我们便拿到了期望的数据。这里还要提一点,关于通知消息跳转Acticity栈顶的配置。如果当前正在目标页面,那么我们一定不希望重新创建新的页面,而是希望在当前页面刷新数据即可。所以不要忘记给目标页面配置栈顶模式,重写OnNewIntent方法。

另外,在广播中跳转Activity时,一定不要忘记给Intent设置flags。

intent.flags = Intent.FLAG_ACTIVITY_NEW_TASK

关于“Android极光推送处理message遇到的坑如何解决”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识,可以关注编程网精选频道,小编每天都会为大家更新不同的知识点。

--结束END--

本文标题: Android极光推送处理message遇到的坑如何解决

本文链接: https://www.lsjlt.com/news/350300.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Android极光推送处理message遇到的坑解决
    目录正文总结正文 我相信现在绝大部分App几乎避免不了消息推送,其实原理还是使用了长连接,通过服务端将消息推给客户端。市面上也有不少三方库,例如极光、友盟、个推、阿里等等。今天我就...
    99+
    2023-02-28
    Android message坑 Android 极光推送
  • Android极光推送处理message遇到的坑如何解决
    这篇文章主要介绍“Android极光推送处理message遇到的坑如何解决”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Android极光推送处理message遇到的坑如何解决”文章能帮助大家解决问...
    99+
    2023-07-05
  • 如何解决thinkphp5中图片处理遇到的问题
    这篇文章将为大家详细讲解有关如何解决thinkphp5中图片处理遇到的问题,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。图片处理中遇到的问题我额外把图片的处理和上传封装成了一个类,返回保存的图片路径在图片...
    99+
    2023-06-15
  • R语言如何解决处理矩阵遇到内存不足的问题
    小编给大家分享一下R语言如何解决处理矩阵遇到内存不足的问题,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!什么是R语言R语言是用于统计分析、绘图的语言和操作环境,属...
    99+
    2023-06-14
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作