消息内容

消息内容(Message Content)是消息中最重要的部分,在网络传输中,消息内容会转化为消息负载(Message Payload),接收到消息负载后会转化为消息内容。消息内容有一个共同的抽象基类MessageContent。各种消息类型都派生与此基类。此外客户也可以自定义消息内容,继承基类,然后调用sdk的注册消息函数即可(注意必须在连接之前注册)。

Android:

public abstract class MessageContent implements Parcelable {
    public abstract MessagePayload encode();
    public abstract void decode(MessagePayload payload);
    public abstract String digest();

    // 自定义消息,必须包含一个无参构造函数
    public MessageContent() {
    }

    public int getType() {
        ContentTag tag = getClass().getAnnotation(ContentTag.class);
        if(tag != null) {
            return tag.type();
        }
        return -1;
    }

    public PersistFlag getPersistFlag() {
        ContentTag tag = getClass().getAnnotation(ContentTag.class);
        if(tag != null) {
            return tag.flag();
        }
        return PersistFlag.No_Persist;
    }
}

iOS:

@protocol WFCCMessageContent <NSObject>

/**
 消息编码

 @return 消息的持久化内容
 */
- (WFCCMessagePayload *)encode;

/**
 消息解码

 @param payload 消息的持久化内容
 */
- (void)decode:(WFCCMessagePayload *)payload;

/**
 消息类型,必须全局唯一。1000及以下为系统内置类型,自定义消息需要使用1000以上。

 @return 消息类型的唯一值
 */
+ (int)getContentType;

/**
 消息的存储策略

 @return 存储策略
 */
+ (int)getContentFlags;

/**
 消息的简短信息

 @return 消息的简短信息,主要用于通知提示和会话列表等需要简略信息的地方。
 */
- (NSString *)digest;

@end

1. Server API

通过server api发送/获取消息和IM消息回调,没有包含的消息内容,包含的是消息负载,详情请参考消息负载

2. 消息类型

消息分成2大类

  1. 普通消息 普通消息是可靠的,一定会发送到对方的,在服务器会保存到数据库,普通消息又分为3中类型:
    1. 不存储消息。这类消息在客户端是不存储的,发送和接收方都不会存储。PersistFlag为不存储类型(No_Persist)。在UI上也不会显示出来。
    2. 存储消息。这类消息在客户端会存储,但不做未读计数,PersistFlag为存储类型(Persist)。存储的消息需要处理UI上的显示。
    3. 存储消息。这类消息在客户端会存储,且接收方做未读数计数,PersistFlag为存储计数类型(Persist_And_Count)。存储的消息需要处理UI上的显示。
  2. 透传消息 这类消息是不可靠的。如果对方在线就发送过去。如果不在线就直接丢弃。在服务器和客户端都不存储。设置PersistFlag为透传类型。UI上也不会显示出来。
2018 © wildfirechat.net 京ICP备18060403号-1 all right reserved,powered by Gitbook该文件修订时间: 2022-11-18 09:47:43

results matching ""

    No results matching ""