即时通讯
  • iOS
  • Android : Java
  • macOS
  • Windows
  • Web
  • 小程序
  • Flutter
  • uni-app
  • React Native
  • 产品简介
  • 下载
  • 快速开始
    • 跑通示例源码
    • 实现基本消息收发
  • 用户相关
  • 房间相关
  • 群组相关
  • 消息相关
  • 呼叫邀请
  • 会话管理
  • 离线推送
  • 常见错误码
  • 服务端 API
  • 客户端 API
  • 常见问题

插入本地消息

更新时间:2022-12-05 16:30

功能简介

ZIM SDK 提供了向本地数据库插入一条消息的功能,插入的消息只会存在于设备本地,不会发送给其他用户、不会同步到其它设备;并且在卸载客户端应用后,该消息不会留存。

开发者可使用此功能,向本地数据库插入一条系统消息,用于展示系统提示。例如:加入群组提示、离开群组等无需跨终端发送给其他用户的本地提示。

  • ZIM SDK 目前支持插入“单聊/群组”会话的本地消息,暂不支持插入“房间”会话的本地消息。
  • ZIM SDK 不支持插入信令消息。

前提条件

在实现“插入本地消息”功能之前,请确保:

使用步骤

开发者需要调用 insertMessageToLocalDB 接口,传入构造好的 ZIMMessage 消息、会话 conversationID、会话类型 conversationType、消息插入者 senderUserID 等参数,即可向本地数据库里插入一条消息。

调用接口示例

public void insertMessageToLocalDB(ZIMMessage message, String conversationID,
                                       ZIMConversationType conversationType, String senderUserID,
                                       ZIMMessageInsertedCallback callback)

参数说明

参数 类型 是否必填 说明
message ZIMMessage 插入的消息内容。可以指定传入的消息类型(例如:文本消息,富媒体消息,系统消息等类型)。
conversationID String

插入消息的会话 ID。

  • 单聊时,conversationID 即是对方的 userID。
  • 群组时,conversationID 即是群组的 groupID。
conversationType ZIMConversationType

会话类型。

  • 0:单聊
  • 2:群组
senderUserID String 消息插入者的 userID。
callback ZIMMessageInsertedCallback 插入本地消息操作的结果回调。

示例代码

// 1、创建 ZIM 对象,传入 appID、appSign 与 Android 中的 Application
ZIMAppConfig appConfig = new ZIMAppConfig();
appConfig.appID = 12345;  //替换为您申请到的 AppID
appConfig.appSign = "appSign";   //替换为您申请到的 AppSign
zim = ZIM.create(appConfig, application);

// 2、登录
ZIMUserInfo zimUserInfo = new ZIMUserInfo();
zimUserInfo.userID = "xxxx";
zimUserInfo.userName = "xxxx";
zim.login(zimUserInfo, new ZIMLoggedInCallback() {
    @Override
    public void onLoggedIn(ZIMError error) {
          // 开发者可根据 ZIMError 来判断是否登录成功。          
    }
 });

// 3、向本地数据库插入一条消息
// 这里演示的是插入一条系统消息,开发者可以自行修改为插入其他类型的消息,信令消息不支持。
ZIMSystemMessage systemMessage = new ZIMSystemMessage();
systemMessage.message = "system";
String conversationID ="conversationID";
String senderUserID = "senderUserID";
ZIMConversationType type = ZIMConversationType.PEER;
zim.insertMessageToLocalDB(systemMessage, conversationID, type, senderUserID, new ZIMMessageInsertedCallback() {
    @Override
    public void onMessageInserted(ZIMMessage message, ZIMError errorInfo) {
        // 开发者可以通过这个回调监听是否插入消息成功
    }
});