开放平台
平台概述
开发者文档
  • API文档
  • SDK文档
  • 接入指南
  • 集成方案
产品功能
  • 新手入门
  • 产品功能
常见问题首页
平台概述
开发者文档
  • API文档
  • SDK文档
  • 接入指南
  • 集成方案
产品功能
  • 新手入门
  • 产品功能
常见问题首页
  1. Harmony SDK
  • DEMO示例
  • JS SDK
    • web 点播 sdk
      • 更新记录
      • 点播上传SDK
    • web 观播 sdk
      • 产品介绍
      • 快速接入
      • 对接示例
      • 观看直播
      • 文档白板
      • 互动连麦
      • 暖场视频
      • 全局事件
      • 全局错误码
      • 房间消息说明
      • 版本更新记录
      • 互动工具
        • 互动-抽奖
        • 互动-礼物
        • 互动-签到
        • 互动-问卷
        • 互动-公告
        • 互动-商品
        • 互动-问答
        • 互动-推屏卡片
        • 互动-快问快答
        • 互动-聊天
        • 互动-优惠券
        • 互动-点赞
      • 直播间拓展功能
        • 资料下载
        • 观看限制验证
        • 观看协议
        • 回放章节
  • iOS SDK
    • 整体介绍
    • 快速接入
    • SDK 登录
    • 暖场视频
    • 视频轮询
    • 直播彩排
    • 高级美颜
    • 云导播
    • 观看协议
    • 文档白板演示
    • 聊天功能
    • 视频直播
      • 发起视频直播
      • 观看视频直播
    • 互动直播
      • 观众互动
      • 推流摄像头
      • 互动直播API
      • 主播发起互动直播
      • 嘉宾加入互动直播
    • 无延迟直播
      • 主播发起无延迟直播
      • 观众观看无延迟直播
    • 互动工具
      • 互动-抽奖
      • 互动-礼物
      • 互动-签到
      • 互动-问卷
      • 互动-章节打点
      • 互动-公告
      • 互动-商品
      • 互动-计时器
      • 互动-问答
      • 互动-推屏卡片
      • 互动-快问快答
      • 互动-优惠券
      • 互动-点赞
    • 直播间拓展能力
      • 直播间特色功能配置项
      • 文件下载
      • 修改角色昵称
      • 观看权限校验
      • 投屏
      • 虚拟人数
    • 观看回放
      • 观看回放
    • 防录屏
      • 跑马灯
    • 字段说明
      • 互动活动详情字段
      • 错误码说明
      • 常量定义
      • 活动详情字段说明
    • 版本更新说明
      • 版本更新信息
      • v2.3.0 到 v2.4.0 升级说明
      • v3.0.1 到 v3.2.0 升级说明
      • V2.9.0到v3.0.1升级说明
      • v6.3.0
      • v6.2.1
      • v3.2.0 到 v4.0.1
      • v2.7.0 到 v2.8.0、v2.9.0 升级说明
      • 6.5.0
      • v5.0.x 到 v6.0.0
      • v6.4.0
  • Adroid SDK
    • 整体介绍
    • 快速接入
    • SDK登录
    • 暖场视频
    • 视频轮巡功能
    • 直播彩排
    • 高级美颜
    • 云导播功能
    • 观看协议
    • 文档白板
    • 聊天功能
    • 房间消息
    • 信息采集说明
    • 视频直播
      • 发起视频直播
      • 观看视频直播
    • 互动直播
      • 互动直播API
      • 主播发起互动直播
      • 嘉宾加入互动直播
      • 观众观看互动直播
    • 无延迟直播
      • 主播发起无延迟直播
      • 观众观看无延迟直播
    • 互动工具
      • 互动-抽奖
      • 互动-礼物
      • 互动-签到
      • 互动-问卷
      • 互动-公告
      • 互动-商品
      • 互动-计时器
      • 互动-问答
      • 互动-推屏卡片
      • 互动-快问快答
      • 互动-优惠券
      • 互动-点赞
    • 直播拓展功能
      • 修改角色名称
      • 文件下载
      • 投屏演示
      • 虚拟人数
      • 观看权限校验
      • 直播间特色功能配置项
    • 观看回放
      • 观看回放/点播
    • 防录屏
      • 直播水印
      • 跑马灯
    • 字段说明
      • 房间消息字段说明
      • 聊天消息字段说明
      • 活动详情字段说明
    • 更新记录
      • 更新记录
    • 版本更新说明
      • v6.4.0
      • v6.3.0
      • v6.2.3
      • v6.2.1
      • v6.2.0
      • v6.1.0
      • v6.0.0
      • v5.0.0
      • v4.1.0
      • v4.0.0
      • v3.3.0
  • Harmony SDK
    • 整体介绍
    • 快速接入
    • SDK初始化
    • 登录&登出
    • 活动基础信息
    • 观看协议
    • 观看权限校验&预约
    • 开屏海报
    • 暖场视频
    • 观看直播
    • 观看回放/点播
    • 聊天
    • 房间消息
    • 在线人数&热度
    • 文档/白板
    • 版本更新
    • 私聊
    • 播放器错误码
    • 互动工具
      • 互动-问答
      • 互动-问卷
      • 互动-公告
      • 互动-抽奖
      • 互动-签到
      • 互动-计时器
      • 互动-礼物
      • 互动-互动有礼
      • 互动-快问快答
      • 互动-口令红包
      • 互动-推屏卡片
      • 互动-商品
      • 互动-优惠卷
      • 互动-观看有礼
      • 互动-点赞
    • 防录屏
      • 播放器水印&跑马灯
    • 菜单
      • 自定义菜单
      • 文件下载
      • 概要总结
      • 回放列表
      • 邀请卡
  • 微信小程序 SDK
  • 相关协议
    • 微吼直播 SDK 隐私政策
    • 微吼直播 SDK 开发者使用规范
  1. Harmony SDK

聊天

聊天是直播的标配功能,通过集成SDK中聊天功能可以实现直播间中各成员互相交流;
聊天相关消息比如:聊天消息、上下线消息、禁言、礼物、点赞消息等。

VHIMServer#

消息服务总类
方法方法描述
VHSaaSDK.getInstance().sendMessage发送聊天消息
VHSaaSDK.getInstance().sendMessageToTarget给指定用户发送消息
VHSaaSDK.getInstance().sendTypeMessage发送图片等类型消息

VHIMServerInterface#Callback#

消息回调
方法方法描述
imReceiveChatMessage接收聊天消息
imReceiveOnlineMessage接收上下线消息
imReceiveCustomMessage接收自定义消息
imReceiveRoomMessage接收房间消息
imSDKError错误回调
onVHNetworkConnect消息服务连接成功
onVHNetworkDisconnect监听消息服务异常监听
onVHNetworkConnecting消息服务连接正在重新链接

使用说明#

在观看活动进行初始化时创建消息服务,注意一个活动仅需要创建一个im对象即可。
aboutToAppear(){
...
this.imBase = new VHIMServer(this);//创建im实例
this.imBase.join(this.webinar_info!);//设置消息回调
...
}

原始数据消息体VHIMMessageModel#

VHIMMessageModel消息体类型描述
msg_idstring消息ID
channelstring频道ID
eventstring消息事件类型
date_timestring时间
third_party_user_idstring发送者三方用户id
connection_online_numnumber连线人数
user_online_numnumber在线人数
clientstring客户
dataJsonstringdata数据
avatarstring发送者头像
nick_namestring发送者昵称
service_typestring服务类型
sender_idstring发送者id
contextstring发送的自定义消息
pvnumber直播中观看次数
uvnumber直播中观看人数
bunumber业务单元
keystring关键字
dataobject消息体

聊天消息VHContent#

对应VHIMMessageModel转换为VHContent
VHContent类型描述
avatarstring头像
nicknamestring昵称
dataVHMsgData消息体
date_timestring时间
image_urlsstring图片资源
role_namestring角色 1 主持人,2 观众,3 助理,4 嘉宾
msg_idstring消息id

聊天消息VHMsgData消息内容#

对应VHIMMessageModel.data消息内容
VHMsgData消息内容类型描述
typestring消息类型,text 文本 image 图片
barragestring消息内容
text_contentstring消息内容
nicknamestring昵称
avatarstring头像
image_urlsstring聊天图片列表
event_typestring站点类型
target_idstring目标id,用于私聊

代码示例#

发送聊天消息#

 this.imBase.sendMessage(this.messageInput, {
   onSuccess: () => {
     console.log("消息发送成功");
      this.messageInput = '';
      // 收起软键盘
      this.hideSoftInputMethod(this.getUIContext());
      // 5. 延迟滚动到最新消息(确保UI已更新)
        setTimeout(() => {
        this.scrollToBottom();
     }, 100);
      },
      onFailure(errorCode: number, errorMsg: string) {
         // 弹出消息信息
         ToastUtil.showToast("发送消息失败");
        }
  });

接收房间消息#

imReceiveRoomMessage 包含:礼物消息、禁言、聊天昵称加密、删除聊天消息等
 imReceiveRoomMessage(type: string, message: VHIMMessageModel) {
    console.log("接收房间消息:", message);
    if (type == VHRoomEventType.GIFT_MSG) { // 礼物消息
      EmitterMessage.handleGiftMsg(message);
    }else if(type == VHRoomEventType.IM_BANNED_MODE_UPDATE){//禁言感知状态
      this.handleBannedModeUpdate( message);
    }else if(type == VHRoomEventType.IM_CHAT_NICK_NAME_ENCRYPTION){//聊天昵称加密
      this.handleChatNicknameEncryption( message);
    } else if(type == VHRoomEventType.CHAT_DELETE){ //删除聊天消息
      EmitterMessage.handleChatDelete(message);
    } 
}

接收上下线消息#

imReceiveOnlineMessage

监听消息服务异常监听#

onVHNetworkDisconnect
  onVHNetworkDisconnect(code: number, message: string): void {
    ToastUtil.showToast("消息服务已断开")
    if (this.imConnectTimer != -1) {
      return;
    }
    //启用定时器进行重连。
    this.imConnectTimer = setTimeout(() => {
      //重连只需要重新调用join方法
      this.imBase?.join(this.webinar_info!);
      this.imConnectTimer = -1;
    }, RECONNECT_TIMEOUT);
  }

接收聊天消息#

imReceiveChatMessage
imReceiveChatMessage(type: string, message: VHIMMessageModel) {
    if (type === VHRoomEventType.IM_TEXT) {
      let newMsg = message as VHContent;
      if (newMsg.data!.target_id !== undefined && newMsg.data!.target_id.length > 0) {
        // 如果是私聊消息,需要产生tab
        this.addPrivateChatTab(JSON.stringify(message));
        EmitterMessage.handleChatImText(type, message);
      } else {
        EmitterMessage.handleChatImText(type, message);
      }
    }
    // 点赞消息
    if (type === VHRoomEventType.CUSTOM_PRAISE) {
      EmitterMessage.handleCustomMessage(type, message);
    }
  }

接收自定义消息#

imReceiveCustomMessage(type: string, message: VHIMMessageModel) {
      // 清空聊天消息
    if (type === VHRoomEventType.CLEAR_CHAT_MESSAGE) {
      EmitterMessage.handleCustomMessage(type, message);
    }
  }

应用退到后台申请长时任务#

当应用退到后台为了保持消息服务的长链接,需要为应用申请后台长时任务否则系统会挂起消息服务长连接,否则消息影响在线状态。
参考:HarmonyOS 长时任务实现
修改于 2025-11-19 08:22:07
上一页
观看回放/点播
下一页
房间消息
Built with