鸿蒙 IMLib-v1.8.0
    Preparing search index...

    合并转发 V2 消息

    CombineV2Message encode() 之后长度 < 120KB会被当做普通消息发送
    >= 120 KB 会被当做媒体消息进行上传

    示例代码

      private testSendCombineV2Message() {
    // 假如拿到了消息数组
    let msgArray: Array<Message> = new Array();

    let msgNum = 0;
    let nameList: Array<string> = [];
    let summaryList: Array<string> = [];
    let msgList: Array<CombineMsgInfo> = [];
    for (let i = 0; i < msgArray.length; i++) {
    let msg = msgArray[i];
    if (this.canSendCombineV2(msg)) {
    let name = i + "名称"; // 请根据实际消息修改
    let summary = i + "摘要"; // 请根据实际消息修改
    let combineInfo = CombineMsgInfo.createWithMessage(msg);
    nameList.push(name);
    summaryList.push(summary);
    msgList.push(combineInfo);
    }
    }

    let conId = new ConversationIdentifier();
    conId.conversationType = ConversationType.Private;
    conId.targetId = "testTargetId";
    conId.channelId = "testChannelId";

    let combineV2Msg = new CombineV2Message();
    combineV2Msg.name = "测试:发送合并转发 V2 消息";
    combineV2Msg.msgNum = msgNum;
    combineV2Msg.conversationType = ConversationType.Private;
    combineV2Msg.msgList = msgList;
    combineV2Msg.nameList = nameList;
    combineV2Msg.summaryList = summaryList;

    let option: ISendMsgOption = {};

    let msg = new Message(conId, combineV2Msg);

    IMEngine.getInstance().sendMediaMessage(msg, option,
    (msg: Message) => {
    // 消息入库
    },
    (msg: Message, progress: number) => {
    // 消息上传进度
    },
    ).then(result => {
    if (result.code == EngineError.Success) {
    // 发送合并转发 V2 消息成功
    } else {
    // 发送合并转发 V2 消息失败
    }
    });
    }

    // 该消息是否被合并转发 V2 版本支持
    private canSendCombineV2(msg: Message | undefined): boolean {
    if (!ObjectChecker.isValid(msg)) {
    return false;
    }
    let objName = msg?.objectName;
    if (TextMessageObjectName == objName) {
    return true;
    }
    if (ImageMessageObjectName == objName) {
    return true;
    }
    if (SightMessageObjectName == objName) {
    return true;
    }
    if (HQVoiceMessageObjectName == objName) {
    return true;
    }
    if (FileMessageObjectName == objName) {
    return true;
    }
    if (CombineV2MessageObjectName == objName) {
    return true;
    }
    return false;
    }

    1.4.0

    Hierarchy (View Summary)

    Index

    Constructors

    Properties

    userInfo?: UserInfo

    消息携带的用户信息

    mentionedInfo?: MentionedInfo

    消息的 @ 信息

    rawString?: string

    消息的原始内容

    SDK 执行消息的 decode 方法正常时,会将数据解析到消息的各个字段,rawString 将会为空

    如果 decode 方法异常时会将消息的原始数据保存在 rawString 中

    destructDuration?: number

    阅后即焚时长,单位秒

    destructDuration <= 0 代表是普通消息
    destructDuration > 0 代表是阅后即焚消息该消息已读后经过 destructDuration 时间后销毁

    1.3.0

    name: string = ""

    媒体内容的文件名

    localPath: string = ""

    媒体内容的本地路径

    remoteUrl: string = ""

    媒体内容上传服务器后的网络地址

    extra: string = ""

    其他属性

    jsonMsgKey: string = ""

    合并转发的消息列表 Key 。 当被转发的消息长度之和大于等于 BUFFER_MAXSIZE 时才会有此字段,此时不会有 msgList 字段。

    msgNum: number = 0

    被转发的消息条数

    conversationType: ConversationType = ConversationType.Private

    会话类型

    nameList: string[] = []

    转发的全部消息的发送者名称列表

    summaryList: string[] = []

    合并消息的摘要列表

    msgList: CombineMsgInfo[] = []

    消息列表。 当被转发的消息长度之和小于等于 BUFFER_MAXSIZE 时才会有此字段,此时不会有 jsonMsgKey 字段。

    Methods

    • 获取正常的 localPath ,去掉 file://

      在鸿蒙系统内部,沙盒路径需要用 file:// 开头才能被 fs 识别

      原生层使用不能以 file:// 开头

      Parameters

      • localPath: string

      Returns string

    • 将基类的基础数据保存到 map 中

      Returns HashMap<string, Object>

    • 将基类的基础数据从 map 中解析出来

      Parameters

      • map: HashMap<string, Object>

      Returns void

    • 编码方法,将消息转为 json 字符串

      Returns string

      json 字符串

    • 解码方法,将 json 字符串转为消息

      Parameters

      • contentString: string

        json 字符串

      Returns void