融云集成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

相关文章

java向微信服务号发送消息的完整步骤实例

《java向微信服务号发送消息的完整步骤实例》:本文主要介绍java向微信服务号发送消息的相关资料,包括申请测试号获取appID/appsecret、关注公众号获取openID、配置消息模板及代码... 目录步骤1. 申请测试系统2. 公众号账号信息3. 关注测试号二维码4. 消息模板接口5. Java测试

Java实现自定义table宽高的示例代码

《Java实现自定义table宽高的示例代码》在桌面应用、管理系统乃至报表工具中,表格(JTable)作为最常用的数据展示组件,不仅承载对数据的增删改查,还需要配合布局与视觉需求,而JavaSwing... 目录一、项目背景详细介绍二、项目需求详细介绍三、相关技术详细介绍四、实现思路详细介绍五、完整实现代码

一文详解Java Stream的sorted自定义排序

《一文详解JavaStream的sorted自定义排序》Javastream中的sorted方法是用于对流中的元素进行排序的方法,它可以接受一个comparator参数,用于指定排序规则,sorte... 目录一、sorted 操作的基础原理二、自定义排序的实现方式1. Comparator 接口的 Lam

如何自定义一个log适配器starter

《如何自定义一个log适配器starter》:本文主要介绍如何自定义一个log适配器starter的问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录需求Starter 项目目录结构pom.XML 配置LogInitializer实现MDCInterceptor

Druid连接池实现自定义数据库密码加解密功能

《Druid连接池实现自定义数据库密码加解密功能》在现代应用开发中,数据安全是至关重要的,本文将介绍如何在​​Druid​​连接池中实现自定义的数据库密码加解密功能,有需要的小伙伴可以参考一下... 目录1. 环境准备2. 密码加密算法的选择3. 自定义 ​​DruidDataSource​​ 的密码解密3

C++ RabbitMq消息队列组件详解

《C++RabbitMq消息队列组件详解》:本文主要介绍C++RabbitMq消息队列组件的相关知识,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录1. RabbitMq介绍2. 安装RabbitMQ3. 安装 RabbitMQ 的 C++客户端库4. A

spring-gateway filters添加自定义过滤器实现流程分析(可插拔)

《spring-gatewayfilters添加自定义过滤器实现流程分析(可插拔)》:本文主要介绍spring-gatewayfilters添加自定义过滤器实现流程分析(可插拔),本文通过实例图... 目录需求背景需求拆解设计流程及作用域逻辑处理代码逻辑需求背景公司要求,通过公司网络代理访问的请求需要做请

SpringCloud整合MQ实现消息总线服务方式

《SpringCloud整合MQ实现消息总线服务方式》:本文主要介绍SpringCloud整合MQ实现消息总线服务方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录一、背景介绍二、方案实践三、升级版总结一、背景介绍每当修改配置文件内容,如果需要客户端也同步更新,

一文带你搞懂Redis Stream的6种消息处理模式

《一文带你搞懂RedisStream的6种消息处理模式》Redis5.0版本引入的Stream数据类型,为Redis生态带来了强大而灵活的消息队列功能,本文将为大家详细介绍RedisStream的6... 目录1. 简单消费模式(Simple Consumption)基本概念核心命令实现示例使用场景优缺点2

Spring Security自定义身份认证的实现方法

《SpringSecurity自定义身份认证的实现方法》:本文主要介绍SpringSecurity自定义身份认证的实现方法,下面对SpringSecurity的这三种自定义身份认证进行详细讲解,... 目录1.内存身份认证(1)创建配置类(2)验证内存身份认证2.JDBC身份认证(1)数据准备 (2)配置依