融云集成6--自定义消息类型

2024-05-13 01:32
文章标签 类型 自定义 消息 云集

本文主要是介绍融云集成6--自定义消息类型,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

参考资料:http://www.rongcloud.cn/docs/android.html#新建消息

1. 自定义消息实体 –RedPackageMessage(一个自定义的红包消息)

package com.onetoo.www.onetoo.bean.chat;import android.os.Parcel;
import android.util.Log;import org.json.JSONException;
import org.json.JSONObject;import java.io.UnsupportedEncodingException;import io.rong.common.ParcelUtils;
import io.rong.imlib.MessageTag;
import io.rong.imlib.model.MessageContent;/*** Created by longShun on 2017/2/24.*//*
* 注解名:MessageTag ;属性:value ,flag; value 即 ObjectName 是消息的唯一标识不可以重复,
* 开发者命名时不能以 RC 开头,避免和融云内置消息冲突;flag 是用来定义消息的可操作状态。
*如下面代码段,自定义消息名称 CustomizeMessage ,vaule 是 app:custom ,
* flag 是 MessageTag.ISCOUNTED | MessageTag.ISPERSISTED 表示消息计数且存库。
* app:RedPkgMsg: 这是自定义消息类型的名称,测试的时候用"app:RedPkgMsg";
* */
@MessageTag(value = "app:RedPkgMsg", flag = MessageTag.ISCOUNTED | MessageTag.ISPERSISTED)
public class RedPackageMessage extends MessageContent{//自定义的属性private String title;private String storeName;private String desc1;private String desc2;/*** 实现 encode() 方法,该方法的功能是将消息属性封装成 json 串,* 再将 json 串转成 byte 数组,该方法会在发消息时调用,如下面示例代码:* */@Overridepublic byte[] encode() {JSONObject jsonObj = new JSONObject();try {jsonObj.put("title", this.getTitle());jsonObj.put("storeName",this.getStoreName());jsonObj.put("desc1",this.getDesc1());jsonObj.put("desc2",this.getDesc2());} catch (JSONException e) {Log.e("JSONException", e.getMessage());}try {return jsonObj.toString().getBytes("UTF-8");} catch (UnsupportedEncodingException e) {e.printStackTrace();}return null;}/** 覆盖父类的 MessageContent(byte[] data) 构造方法,该方法将对收到的消息进行解析,* 先由 byte 转成 json 字符串,再将 json 中内容取出赋值给消息属性。* */public RedPackageMessage(byte[] data) {String jsonStr = null;try {jsonStr = new String(data, "UTF-8");} catch (UnsupportedEncodingException e1) {e1.printStackTrace();}try {JSONObject jsonObj = new JSONObject(jsonStr);if (jsonObj.has("title"))setTitle(jsonObj.optString("title"));if (jsonObj.has("storeName"))setStoreName(jsonObj.optString("storeName"));if (jsonObj.has("desc1"))setDesc1(jsonObj.optString("desc1"));if (jsonObj.has("desc2"))setDesc2(jsonObj.optString("desc2"));} catch (JSONException e) {Log.d("JSONException", e.getMessage());}}//给消息赋值。public RedPackageMessage(Parcel in) {setTitle(ParcelUtils.readFromParcel(in));//该类为工具类,消息属性//这里可继续增加你消息的属性setStoreName(ParcelUtils.readFromParcel(in));//该类为工具类,消息属性setDesc1(ParcelUtils.readFromParcel(in));//该类为工具类,消息属性setDesc2(ParcelUtils.readFromParcel(in));//该类为工具类,消息属性}/*** 读取接口,目的是要从Parcel中构造一个实现了Parcelable的类的实例处理。*/public static final Creator<RedPackageMessage> CREATOR = new Creator<RedPackageMessage>() {@Overridepublic RedPackageMessage createFromParcel(Parcel source) {return new RedPackageMessage(source);}

这篇关于融云集成6--自定义消息类型的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/984308

相关文章

Python如何计算两个不同类型列表的相似度

《Python如何计算两个不同类型列表的相似度》在编程中,经常需要比较两个列表的相似度,尤其是当这两个列表包含不同类型的元素时,下面小编就来讲讲如何使用Python计算两个不同类型列表的相似度吧... 目录摘要引言数字类型相似度欧几里得距离曼哈顿距离字符串类型相似度Levenshtein距离Jaccard相

Go语言中三种容器类型的数据结构详解

《Go语言中三种容器类型的数据结构详解》在Go语言中,有三种主要的容器类型用于存储和操作集合数据:本文主要介绍三者的使用与区别,感兴趣的小伙伴可以跟随小编一起学习一下... 目录基本概念1. 数组(Array)2. 切片(Slice)3. 映射(Map)对比总结注意事项基本概念在 Go 语言中,有三种主要

CSS自定义浏览器滚动条样式完整代码

《CSS自定义浏览器滚动条样式完整代码》:本文主要介绍了如何使用CSS自定义浏览器滚动条的样式,包括隐藏滚动条的角落、设置滚动条的基本样式、轨道样式和滑块样式,并提供了完整的CSS代码示例,通过这些技巧,你可以为你的网站添加个性化的滚动条样式,从而提升用户体验,详细内容请阅读本文,希望能对你有所帮助...

解读Redis秒杀优化方案(阻塞队列+基于Stream流的消息队列)

《解读Redis秒杀优化方案(阻塞队列+基于Stream流的消息队列)》该文章介绍了使用Redis的阻塞队列和Stream流的消息队列来优化秒杀系统的方案,通过将秒杀流程拆分为两条流水线,使用Redi... 目录Redis秒杀优化方案(阻塞队列+Stream流的消息队列)什么是消息队列?消费者组的工作方式每

使用C/C++调用libcurl调试消息的方式

《使用C/C++调用libcurl调试消息的方式》在使用C/C++调用libcurl进行HTTP请求时,有时我们需要查看请求的/应答消息的内容(包括请求头和请求体)以方便调试,libcurl提供了多种... 目录1. libcurl 调试工具简介2. 输出请求消息使用 CURLOPT_VERBOSE使用 C

Redis的Zset类型及相关命令详细讲解

《Redis的Zset类型及相关命令详细讲解》:本文主要介绍Redis的Zset类型及相关命令的相关资料,有序集合Zset是一种Redis数据结构,它类似于集合Set,但每个元素都有一个关联的分数... 目录Zset简介ZADDZCARDZCOUNTZRANGEZREVRANGEZRANGEBYSCOREZ

Java中Springboot集成Kafka实现消息发送和接收功能

《Java中Springboot集成Kafka实现消息发送和接收功能》Kafka是一个高吞吐量的分布式发布-订阅消息系统,主要用于处理大规模数据流,它由生产者、消费者、主题、分区和代理等组件构成,Ka... 目录一、Kafka 简介二、Kafka 功能三、POM依赖四、配置文件五、生产者六、消费者一、Kaf

IDEA如何将String类型转json格式

《IDEA如何将String类型转json格式》在Java中,字符串字面量中的转义字符会被自动转换,但通过网络获取的字符串可能不会自动转换,为了解决IDEA无法识别JSON字符串的问题,可以在本地对字... 目录问题描述问题原因解决方案总结问题描述最近做项目需要使用Ai生成json,可生成String类型

Mysql 中的多表连接和连接类型详解

《Mysql中的多表连接和连接类型详解》这篇文章详细介绍了MySQL中的多表连接及其各种类型,包括内连接、左连接、右连接、全外连接、自连接和交叉连接,通过这些连接方式,可以将分散在不同表中的相关数据... 目录什么是多表连接?1. 内连接(INNER JOIN)2. 左连接(LEFT JOIN 或 LEFT

Redis的Hash类型及相关命令小结

《Redis的Hash类型及相关命令小结》edisHash是一种数据结构,用于存储字段和值的映射关系,本文就来介绍一下Redis的Hash类型及相关命令小结,具有一定的参考价值,感兴趣的可以了解一下... 目录HSETHGETHEXISTSHDELHKEYSHVALSHGETALLHMGETHLENHSET