融云自定义消息及自定义扩展区域plugin

最近一个项目在接入融云1v1聊天,然后各种更换界面~先说下自定义消息,先上图,运行效果如下:1、需要自定义message,继承 MessageContent如:@MessageTag(value = "RCDTestMessage", flag = MessageTag.ISPERSISTED | MessageTag.ISCOUNTED) public class R...
摘要由CSDN通过智能技术生成

最近一个项目在接入融云1v1聊天,然后各种更换界面~先说下自定义消息,先上图,运行效果如下:

1、需要自定义message,继承 MessageContent 

如:@MessageTag(value = "RCDTestMessage", flag = MessageTag.ISPERSISTED | MessageTag.ISCOUNTED) public class        RCDTestMessage extends MessageContent {

注意:@MessageTag里面的value,如果需要收到服务端推送过来的自定义消息去展示或者和ios推送过来的自定义消息互通,value里面的值,一定要和后台还有ios端约定好,一模一样才可以。

flag 是 MessageTag.ISCOUNTED | MessageTag.ISPERSISTED 表示消息计数且存库。

下面是自定义message:

/**
 * 自定义消息的实体类
 */
@MessageTag(value = "RCDTestMessage", flag = MessageTag.ISPERSISTED | MessageTag.ISCOUNTED)
public class RCDTestMessage extends MessageContent {

    private String content;
    private String extra;
   /** 
   * 实现 encode() 方法,该方法的功能是将消息属性封装成 json 串,再将 json 串转成 byte 数组,该方法会在发消息时调用
   */
    @Override
    public byte[] encode() {
        JSONObject object = new JSONObject();
        object.put("content", content);
        object.put("extra", extra);
        try {
            return object.toString().getBytes("UTF-8");
        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        }
        return null;
    }

    public RCDTestMessage() {

    }

  /**
  *覆盖父类的 MessageContent(byte[] data) 构造方法,该方法将对收到的消息进行解析, * 先由 byte 转成 json 字符串,再将  json  中内容取出赋值给消息属性。
  */
    public RCDTestMessage(byte[] data) {
        super(data);
        String jsonStr = null;
        try {
            jsonStr = new String(data, "UTF-8");
            JSONObject object = JSON.parseObject(jsonStr);//注意,这里一定要用setContent和setExtra
            this.setContent(object.getString("content"));
            this.setExtra(object.getString("extra"));
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    @Override
    public void writeToParcel(Parcel dest, int flags) {
        ParcelUtils.writeToParcel(dest, this.getContent());//注意,这里一定要用getContent和getExtra
        ParcelUtils.writeToParcel(dest, this.getExtra());
    }

    public static final Creator<RCDTestMessage> CREATOR = new Creator<RCDTestMessage>() {
        @Override
        public RCDTestMessage createFromParcel(Parcel source) {
            return new RCDTestMessage(source);
        }

        @Override
        public RCDTestMessage[] newArray(int size) {
            return new RCDTestMessage[size];
        }
    };

    public RCDTestMessage(Parcel parcel) {//注意,这里一定要用setContent和setExtra
        this.setExtra(ParcelUtils.readFromParcel(parcel));
        this.setContent(ParcelUtils.readFromParcel(parcel));
    }

    @Override
    public int describeContents() {
        return 0;
    }

    public String getContent() {
        return content;
    }

    public void setContent(String content) {
        this.content = content;
    }

    public String getExtra() {
        return extra;
    }

 
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
Maven自定义插件是通过创建Plugin项目来实现的。在Maven项目中,插件被打包成jar文件,并在pom.xml中进行配置和调用。 首先,我们需要在插件项目的pom.xml中声明插件的元数据信息,包括插件的groupId、artifactId、version等。然后,在项目的src/main/java目录下创建插件的实现类,该类需要继承AbstractMojo类,并实现execute方法。在execute方法中编写插件的执行逻辑。 在定义插件时,除了实现类,还可以定义一些插件参数。这些参数可以通过插件的参数注解进行定义,并在插件实现类中获取和使用。参数注解包括@Parameter、@MojoParameter等。 在编写插件逻辑时,我们可以调用Maven提供的API来实现自定义的功能。这些API包括Project对象、MavenSession对象等,可以用于获取项目信息、执行Maven命令等。 编写插件完成后,我们需要在插件项目的pom.xml中配置maven-plugin-plugin插件来进行打包。该插件会根据插件项目中的配置信息来生成插件的描述文件。我们还可以在pom.xml中配置其他插件,用于生成插件的部署和安装文件。 最后,我们需要在使用插件的项目的pom.xml中进行插件的配置和调用。配置插件的groupId、artifactId、version等,并指定插件的执行阶段和参数等。 总的来说,Maven自定义插件是通过创建插件项目,编写插件类和配置插件的元数据信息来实现的。插件项目的打包和安装后,可以在使用插件的项目中进行配置和调用,实现自定义的功能。插件的编写和使用可以提高项目的灵活性和可扩展性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值