浏览 SDKs · Android
SDKsAndroid

发送第一条消息

在 Android 应用中发送并验证第一条单聊文本消息。

复制

本页用一条单聊文本消息验证 OpenIM 已接入成功。开始前,先按认证与管理登录会话完成 SDK 初始化和登录。

开始前准备

  • 为发送方和接收方各准备一个测试账号。
  • 两个账号都需要按认证与管理登录会话完成 SDK 初始化;接收方需要在登录前设置下面的消息 listener。
  • 将示例中的 user_b 替换为接收方的真实 userID

第 1 步:让接收方监听新消息

接收方在登录前设置消息 listener。收到消息后,将它加入页面消息列表或刷新界面即可。

OpenIMClient.getInstance()
    .messageManager
    .setAdvancedMsgListener(new OnAdvanceMsgListener() {
        @Override
        public void onRecvNewMessage(Message message) {
            // 将 message 显示在聊天界面中。
        }
    });

第 2 步:确认可以发送

两个账号登录后,发送方的登录 callback 成功且 OnConnListener.onConnectSuccess() 已到达,即可发送消息。接收方也应保持连接,以便收到新消息。连接尚未成功时,先等待连接恢复,不要重复调用 login()

第 3 步:发送文本消息

发送单聊文本消息

先创建消息,再发送它。第三个目标参数填写接收方 userID,群组目标参数保持空字符串。

Message message = OpenIMClient.getInstance()
    .messageManager
    .createTextMessage("你好,OpenIMSDK");

OnMsgSendCallback sendCallback = new OnMsgSendCallback() {
    @Override
    public void onProgress(long progress) {
        // 文本消息通常不需要处理进度。
    }

    @Override
    public void onError(int code, String error) {
        // 提示发送失败,并允许用户重试。
    }

    @Override
    public void onSuccess(Message sentMessage) {
        // 将 sentMessage 更新到发送方的聊天界面。
    }
};

OpenIMClient.getInstance().messageManager.sendMessage(
    sendCallback,
    message,
    "user_b",
    "",
    new OfflinePushInfo()
);

OfflinePushInfo 用于配置离线推送内容。首次验证时可以传入空对象,后续再按产品需要设置标题、摘要和扩展数据。

onSuccess() 表示发送方已成功发送消息;接收方的 onRecvNewMessage() 表示另一端已收到消息。这两个回调都会到达,才说明这次单聊验证完成。

发送群聊文本消息

发送群消息时,将接收方 userID 改为空字符串,并填写群组的 groupID

Message groupMessage = OpenIMClient.getInstance()
    .messageManager
    .createTextMessage("大家好,OpenIMSDK");

OpenIMClient.getInstance().messageManager.sendMessage(
    sendCallback,
    groupMessage,
    "",
    "group_123",
    new OfflinePushInfo()
);

一次调用只能填写 userIDgroupID 其中之一。

验证成功

  • 发送方进入 onSuccess()
  • 接收方进入 onRecvNewMessage(),并看到文本消息。
  • 单聊只填写接收方 userID;群聊只填写 groupID

下一步