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

相关文章

Spring Boot 配置文件之类型、加载顺序与最佳实践记录

《SpringBoot配置文件之类型、加载顺序与最佳实践记录》SpringBoot的配置文件是灵活且强大的工具,通过合理的配置管理,可以让应用开发和部署更加高效,无论是简单的属性配置,还是复杂... 目录Spring Boot 配置文件详解一、Spring Boot 配置文件类型1.1 applicatio

使用Sentinel自定义返回和实现区分来源方式

《使用Sentinel自定义返回和实现区分来源方式》:本文主要介绍使用Sentinel自定义返回和实现区分来源方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录Sentinel自定义返回和实现区分来源1. 自定义错误返回2. 实现区分来源总结Sentinel自定

SpringKafka消息发布之KafkaTemplate与事务支持功能

《SpringKafka消息发布之KafkaTemplate与事务支持功能》通过本文介绍的基本用法、序列化选项、事务支持、错误处理和性能优化技术,开发者可以构建高效可靠的Kafka消息发布系统,事务支... 目录引言一、KafkaTemplate基础二、消息序列化三、事务支持机制四、错误处理与重试五、性能优

SpringIntegration消息路由之Router的条件路由与过滤功能

《SpringIntegration消息路由之Router的条件路由与过滤功能》本文详细介绍了Router的基础概念、条件路由实现、基于消息头的路由、动态路由与路由表、消息过滤与选择性路由以及错误处理... 目录引言一、Router基础概念二、条件路由实现三、基于消息头的路由四、动态路由与路由表五、消息过滤

如何自定义Nginx JSON日志格式配置

《如何自定义NginxJSON日志格式配置》Nginx作为最流行的Web服务器之一,其灵活的日志配置能力允许我们根据需求定制日志格式,本文将详细介绍如何配置Nginx以JSON格式记录访问日志,这种... 目录前言为什么选择jsON格式日志?配置步骤详解1. 安装Nginx服务2. 自定义JSON日志格式各

Android自定义Scrollbar的两种实现方式

《Android自定义Scrollbar的两种实现方式》本文介绍两种实现自定义滚动条的方法,分别通过ItemDecoration方案和独立View方案实现滚动条定制化,文章通过代码示例讲解的非常详细,... 目录方案一:ItemDecoration实现(推荐用于RecyclerView)实现原理完整代码实现

基于Spring实现自定义错误信息返回详解

《基于Spring实现自定义错误信息返回详解》这篇文章主要为大家详细介绍了如何基于Spring实现自定义错误信息返回效果,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录背景目标实现产出背景Spring 提供了 @RestConChina编程trollerAdvice 用来实现 HTT

Python如何查看数据的类型

《Python如何查看数据的类型》:本文主要介绍Python如何查看数据的类型方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录python查看数据的类型1. 使用 type()2. 使用 isinstance()3. 检查对象的 __class__ 属性4.

SpringSecurity 认证、注销、权限控制功能(注销、记住密码、自定义登入页)

《SpringSecurity认证、注销、权限控制功能(注销、记住密码、自定义登入页)》SpringSecurity是一个强大的Java框架,用于保护应用程序的安全性,它提供了一套全面的安全解决方案... 目录简介认识Spring Security“认证”(Authentication)“授权” (Auth

Python容器类型之列表/字典/元组/集合方式

《Python容器类型之列表/字典/元组/集合方式》:本文主要介绍Python容器类型之列表/字典/元组/集合方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1. 列表(List) - 有序可变序列1.1 基本特性1.2 核心操作1.3 应用场景2. 字典(D