跳到主要内容

下载与展示媒体消息

SDK 提供多媒体文件的下载功能,支持通过媒体消息中的地址下载文件。

下载媒体消息中的媒体文件

如果消息 Message 对象中包含媒体消息内容(指 Message.contentMediaMessageContent 子类(如 FileMessageImageMessage, HQVoiceMessage 等),其中携带了媒体文件地址),可以使用 downloadMediaMessage 下载媒体文件。

提示

首次下载媒体消息,SDK 会将媒体数据保存到 localPath 中返回。同一个媒体消息多次调用下载接口,SDK 只会下载一次

    let messageId = 234;
IMEngine.getInstance().downloadMediaMessage(messageId).then(result => {
if (EngineError.Success === result.code) {
// 本地路径
let localPath = result.data as string;
}
});

展示媒体消息

展示图片消息

在聊天页面展示展示图片消息的缩略图,点击图片消息进入图片预览时加载图片大图。鸿蒙的 Image 组件可以支持加载 base64 ,本地路径和远端地址。

展示图片 base64 缩略图

  1. 创建 base64
// 此处 imgContent 简写
let imgContent : ImageMessage;

let imgBase64 = "data:image/png;base64," + imgContent.thumbnailBase64;

  1. 用 Image 控件展示 base64
Image(imgBase64).width(200)

展示图片大图

  1. 获取大图地址工具方法
import fileUri from "@ohos.file.fileuri";


private getImageUrl(imgContent: ImageMessage): string {
// 如果本地路径存在
if (StringChecker.isValid(imgContent.localPath)) {
let localPath = imgContent.localPath;
// 使用 fileUri 修正路径后返回本地路径
localPath = fileUri.getUriFromPath(localPath);
return localPath;
}
// 如果本地路径不存在,直接返回远端地址
return imgContent.remoteUrl;
}
  1. 获取大图地址
// 此处 imgContent 简写
let imgContent : ImageMessage;

let imgUrl = this.getImageUrl(imgContent);

  1. 用 Image 控件展示大图
Image(imgUrl).width(600)

播放高清语音消息

语音播放器示例代码

详细参考:https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/using-avplayer-for-playback-V5

// audioPath 为高清语音消息下载后的本地沙箱路径
let audioPath = "使用 downloadMediaMessage 下载成功的本地路径";
// 播放高清语音消息
AudioPlayer.playByPlayer(audioPath);