sendMergerMessage method

  1. @override
Future<V2TimValueCallback<V2TimMessage>> sendMergerMessage({
  1. required List<String> msgIDList,
  2. required String title,
  3. required List<String> abstractList,
  4. required String compatibleText,
  5. required String receiver,
  6. required String groupID,
  7. int priority = 0,
  8. bool onlineUserOnly = false,
  9. bool isExcludedFromUnreadCount = false,
  10. Map<String, dynamic>? offlinePushInfo,
  11. List<String>? webMessageInstanceList,
})
override

合并消息

我们在收到一条合并消息的时候,通常会在聊天界面这样显示:

|vinson 和 lynx 的聊天记录 | – title (标题)

|vinson:新版本 SDK 计划什么时候上线呢? | – abstract1 (摘要信息1)

|lynx:计划下周一,具体时间要看下这两天的系统测试情况.. | – abstract2 (摘要信息2)

|vinson:好的. | – abstract3 (摘要信息3)

聊天界面通常只会展示合并消息的标题和摘要信息,完整的转发消息列表,需要用户主动点击转发消息 UI 后再获取。

多条被转发的消息可以被创建成一条合并消息 V2TIMMessage,然后调用 sendMessage 接口发送,实现步骤如下:

  1. 调用 createMergerMessage 创建一条合并消息 V2TIMMessage。

  2. 调用 sendMessage 发送转发消息 V2TIMMessage。

收到合并消息解析步骤:

  1. 通过 V2TIMMessage 获取 mergerElem。

  2. 通过 mergerElem 获取 title 和 abstractList UI 展示。

  3. 当用户点击摘要信息 UI 的时候,调用 downloadMessageList 接口获取转发消息列表。

注意 web 端使用时必须传入webMessageInstanceList 字段。 在web端返回的消息实例会包含该字段

Implementation

@override
Future<V2TimValueCallback<V2TimMessage>> sendMergerMessage(
    {required List<String> msgIDList,
    required String title,
    required List<String> abstractList,
    required String compatibleText,
    required String receiver,
    required String groupID,
    int priority = 0,
    bool onlineUserOnly = false,
    bool isExcludedFromUnreadCount = false,
    Map<String, dynamic>? offlinePushInfo,
    List<String>? webMessageInstanceList}) async {
  Map<String, dynamic> param = {
    "msgIDList": msgIDList,
    "title": title,
    "abstractList": abstractList,
    "compatibleText": compatibleText,
    "receiver": receiver,
    "groupID": groupID,
    "priority": priority,
    "onlineUserOnly": onlineUserOnly,
    "isExcludedFromUnreadCount": isExcludedFromUnreadCount,
    "offlinePushInfo": offlinePushInfo,
    "webMessageInstanceList": webMessageInstanceList
  };
  var resp = V2TimValueCallback<V2TimMessage>.fromJson(
    formatJson(
      await _channel.invokeMethod(
        'sendMergerMessage',
        buildMessageMangerParam(
          param,
        ),
      ),
    ),
  );
  log("sendMergerMessage", param, resp.toLogString());
  return resp;
}