融云集成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 Security自定义身份认证的实现方法

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

Redis消息队列实现异步秒杀功能

《Redis消息队列实现异步秒杀功能》在高并发场景下,为了提高秒杀业务的性能,可将部分工作交给Redis处理,并通过异步方式执行,Redis提供了多种数据结构来实现消息队列,总结三种,本文详细介绍Re... 目录1 Redis消息队列1.1 List 结构1.2 Pub/Sub 模式1.3 Stream 结

MySQL 中查询 VARCHAR 类型 JSON 数据的问题记录

《MySQL中查询VARCHAR类型JSON数据的问题记录》在数据库设计中,有时我们会将JSON数据存储在VARCHAR或TEXT类型字段中,本文将详细介绍如何在MySQL中有效查询存储为V... 目录一、问题背景二、mysql jsON 函数2.1 常用 JSON 函数三、查询示例3.1 基本查询3.2

在Android平台上实现消息推送功能

《在Android平台上实现消息推送功能》随着移动互联网应用的飞速发展,消息推送已成为移动应用中不可或缺的功能,在Android平台上,实现消息推送涉及到服务端的消息发送、客户端的消息接收、通知渠道(... 目录一、项目概述二、相关知识介绍2.1 消息推送的基本原理2.2 Firebase Cloud Me

Pydantic中Optional 和Union类型的使用

《Pydantic中Optional和Union类型的使用》本文主要介绍了Pydantic中Optional和Union类型的使用,这两者在处理可选字段和多类型字段时尤为重要,文中通过示例代码介绍的... 目录简介Optional 类型Union 类型Optional 和 Union 的组合总结简介Pyd

Oracle数据库常见字段类型大全以及超详细解析

《Oracle数据库常见字段类型大全以及超详细解析》在Oracle数据库中查询特定表的字段个数通常需要使用SQL语句来完成,:本文主要介绍Oracle数据库常见字段类型大全以及超详细解析,文中通过... 目录前言一、字符类型(Character)1、CHAR:定长字符数据类型2、VARCHAR2:变长字符数

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基础概念二、条件路由实现三、基于消息头的路由四、动态路由与路由表五、消息过滤