消息构建

更新时间: 2024/11/14 11:44:17

网易云信即时通讯 SDK(NetEase IM SDK,以下简称 NIM SDK)支持多种消息类型,助您快速实现多样化的消息业务场景。在进行消息收发等操作前,您需要先构建消息。

本文中消息均指会话内消息,适用于单聊、群组、超大群类型会话。更多消息相关功能请参考开发文档 消息概述

支持平台

本文内容适用的开发平台或框架如下表所示:

Android iOS macOS/Windows Web/uni-app/小程序 Node.js/Electron HarmonyOS
✔️️ ✔️️ ✔️️ ✔️️ ✔️️ ✔️️

API 概览

API 说明 起始版本
createTextMessage 创建一条文本消息 v10.2.0(对应 HarmonyOS v0.5.0)
createImageMessage 创建一条图片消息 v10.2.0(对应 HarmonyOS v0.5.0)
createAudioMessage 创建一条语音消息 v10.2.0(对应 HarmonyOS v0.5.0)
createVideoMessage 创建一条视频消息 v10.2.0(对应 HarmonyOS v0.5.0)
createFileMessage 创建一条文件消息 v10.2.0(对应 HarmonyOS v0.5.0)
createLocationMessage 创建一条地理位置消息 v10.2.0(对应 HarmonyOS v0.5.0)
createCustomMessage 创建一条自定义消息 v10.2.0(对应 HarmonyOS v0.5.0)
createForwardMessage 创建一条转发消息 v10.2.0(对应 HarmonyOS v0.5.0)
createTipsMessage 创建一条提示消息 v10.2.0(对应 HarmonyOS v0.5.0)
createCallMessage 创建一条话单消息
  • Android/iOS/Web:v10.2.6
  • macOS/Windows:v10.3.0
  • HarmonyOS:v1.4.0
  • createCustomMessageWithAttachment 构造自定义消息 v10.5.0

    接口类

    V2NIMMessageCreator 类提供消息构建接口,支持构建多种类型的消息。

    createTextMessage

    接口描述

    创建一条文本消息。

    • 在登录后、发送消息前调用该方法。
    • 该方法为同步。

    参数说明

    Android
    Javapublic static V2NIMMessage createTextMessage(String text)
    
    参数名称 类型 是否必填 说明
    text String 文本消息内容,长度上限为 5000 字符。
    iOS
    Objective-C+ (V2NIMMessage *)createTextMessage:(NSString *)text;
    
    参数名称 类型 是否必填 说明
    text NSString * 文本消息内容,长度上限为 5000 字符。
    macOS/Windows
    C++static nstd::optional<V2NIMMessage> createTextMessage(nstd::string text);
    
    参数名称 类型 是否必填 说明
    text nstd::string 文本消息内容,长度上限为 5000 字符。
    Web/uni-app/小程序
    TypeScriptcreateTextMessage(text: string): V2NIMMessage
    
    参数名称 类型 是否必填 说明
    text string 文本消息内容,长度上限为 5000 字符。
    Node.js/Electron
    TypeScriptcreateTextMessage(text): null | V2NIMMessage
    
    参数名称 类型 是否必填 说明
    text string 文本消息内容,长度上限为 5000 字符。
    HarmonyOS
    TypeScriptcreateTextMessage(text: string): V2NIMMessage
    
    参数名称 类型 是否必填 说明
    text string 文本消息内容,长度上限为 5000 字符。

    示例代码

    Android
    JavaV2NIMMessage v2TextMessage = V2NIMMessageCreator.createTextMessage("text content");
    
    iOS
    Objective-CV2NIMMessage *v2Message = [V2NIMMessageCreator createTextMessage:@"hello world"];
    
    macOS/Windows
    C++auto textMessage = V2NIMMessageCreator::createTextMessage("hello world");
    if(!textMessage) {
        // create text message failed
    }
    
    Web/uni-app/小程序
    TypeScripttry {
        const message = nim.V2NIMMessageCreator.createTextMessage('hello world')
    } catch(err) {
        // todo error
    }
    
    Node.js/Electron
    TypeScripttry {
        const message = v2.messageCreator.createTextMessage('Hello, world!')
    } catch(err) {
        // todo error
    }
    
    HarmonyOS
    TypeScripttry {
        const message = nim.messageCreator.createTextMessage('hello world')
    } catch(err) {
        // todo error
    }
    

    返回参数

    已创建的消息对象 V2NIMMessage

    createImageMessage

    接口描述

    创建一条图片消息。

    • 在登录后、发送消息前调用该方法。
    • 该方法为同步。

    参数说明

    Android
    Javapublic static V2NIMMessage createImageMessage(String imagePath, String name, String sceneName, Integer width, Integer height)
    
    参数名称 类型 是否必填 说明
    imagePath String 图片文件地址。
    name String 图片文件显示名称,可不同于文件名。
    sceneName String NOS 文件存储场景名,默认值为 V2NIMStorageSceneConfig.DEFAULT_IM 对应的场景名。若使用自定义的存储场景,需要先调用 addCustomStorageScene 添加自定义存储场景。
    width Integer 图片宽度,单位为像素。
    height Integer 图片高度,单位为像素。
    iOS
    Objective-C+ (V2NIMMessage *)createImageMessage:(NSString *)imagePath
                                    name:(nullable NSString *)name
                               sceneName:(nullable NSString *)sceneName
                                   width:(int)width
                                  height:(int)height;
    
    参数名称 类型 是否必填 说明
    imagePath NSString * 图片文件地址。
    name NSString * 图片文件显示名称,可不同于文件名。
    sceneName NSString * NOS 文件存储场景名,默认值为 V2NIMStorageSceneConfig.DEFAULT_IM 对应的场景名。若使用自定义的存储场景,需要先调用 addCustomStorageScene 添加自定义存储场景。
    width int 图片宽度,单位为像素。
    height int 图片高度,单位为像素。
    macOS/Windows
    C++static nstd::optional<V2NIMMessage> createImageMessage(nstd::string imagePath,
        nstd::string name,
        nstd::string sceneName,
        uint32_t width,
        uint32_t height);
    
    参数名称 类型 是否必填 说明
    imagePath nstd::string 图片文件地址。
    name nstd::string 图片文件显示名称,可不同于文件名。
    sceneName nstd::string NOS 文件存储场景名,默认值为 V2NIMStorageSceneConfig.DEFAULT_IM 对应的场景名。若使用自定义的存储场景,需要先调用 addCustomStorageScene 添加自定义存储场景。
    width uint32_t 图片宽度,单位为像素。
    height uint32_t 图片高度,单位为像素。
    Web/uni-app/小程序
    TypeScriptcreateImageMessage(imageObj: string | File, name?: string, sceneName?: string, width?: number, height?: number): V2NIMMessage
    
    参数名称 类型 是否必填 说明
    imageObj Web File/string
  • 小程序:传入小程序文件路径。通过小程序平台自身的 chooseMessageFile 接口获取。
  • 其它环境:传入 File 对象。
  • name string 图片文件显示名称,可不同于文件名。
    sceneName string NOS 文件存储场景名,默认值为 V2NIMStorageSceneConfig.DEFAULT_IM 对应的场景名。若使用自定义的存储场景,需要先调用 addCustomStorageScene 添加自定义存储场景。
    width number 图片宽度,单位为像素。
    height number 图片高度,单位为像素。
    Node.js/Electron
    TypeScriptcreateImageMessage(imagePath, name, sceneName, width, height): null | V2NIMMessage
    
    参数名称 类型 是否必填 说明
    imagePath nstd::string 图片文件地址。
    name nstd::string 图片文件显示名称,可不同于文件名。
    sceneName nstd::string NOS 文件存储场景名,默认值为 V2NIMStorageSceneConfig.DEFAULT_IM 对应的场景名。若使用自定义的存储场景,需要先调用 addCustomStorageScene 添加自定义存储场景。
    width uint32_t 图片宽度,单位为像素。
    height uint32_t 图片高度,单位为像素。
    HarmonyOS
    TypeScriptcreateImageMessage(imagePath: string, name?: string, sceneName?: string, width?: number, height?: number): Promise<V2NIMMessage>
    
    参数名称 类型 是否必填 说明
    imagePath string 图片文件地址。
    name string 图片文件显示名称,可不同于文件名。
    sceneName string NOS 文件存储场景名,默认值为 V2NIMStorageSceneConfig.DEFAULT_IM 对应的场景名。若使用自定义的存储场景,需要先调用 addCustomStorageScene 添加自定义存储场景。
    width number 图片宽度,单位为像素。
    height number 图片高度,单位为像素。

    示例代码

    Android
    JavaV2NIMMessage v2ImageMessage = V2NIMMessageCreator.createImageMessage(imagePath, name, sceneName, width, height);
    
    iOS
    Objective-CNSString *imagePath = @ "文件沙盒路径";
    V2NIMMessage *message = [V2NIMMessageCreator createImageMessage:imagePath
                                                               name:@"imageName"
                                                          sceneName:@"nim_default_im"
                                                              width:200
                                                             height:200];
    
    macOS/Windows
    C++auto imageMessage = V2NIMMessageCreator::createImageMessage("imagePath", "imageName", V2NIM_STORAGE_SCENE_NAME_DEFAULT_IM, 100,
    100); if(!imageMessage) {
        // create image message failed
    }
    
    Web/uni-app/小程序
    TypeScripttry {
        const message = nim.V2NIMMessageCreator.createImageMessage(document.getElementById('fileInputId').files[0])
    } catch(err) {
        // todo error
    }
    
    Node.js/Electron
    TypeScripttry {
        const message = v2.messageCreator.createImageMessage(imagePath, name, sceneName, width, height)
    } catch(err) {
        // todo error
    }
    
    HarmonyOS
    TypeScripttry {
        const imagePath = "沙盒路径"
        const message = nim.messageCreator.createImageMessage(imagePath)
    } catch(err) {
        // todo error
    }
    

    返回参数

    已创建的消息对象 V2NIMMessage

    createAudioMessage

    接口描述

    创建一条语音消息。

    • 在登录后、发送消息前调用该方法。
    • 该方法为同步。

    参数说明

    Android
    Javapublic static V2NIMMessage createAudioMessage(String audioPath, String name, String sceneName, Integer duration)
    
    参数名称 类型 是否必填 说明
    audioPath String 语音文件地址。
    name String 语音文件显示名称,可不同于文件名。
    sceneName String NOS 文件存储场景名,默认值为 V2NIMStorageSceneConfig.DEFAULT_IM 对应的场景名。若使用自定义的存储场景,需要先调用 addCustomStorageScene 添加自定义存储场景。
    duration Integer 语音文件时长,单位为毫秒。
    iOS
    Objective-C+ (V2NIMMessage *)createAudioMessage:(NSString *)audioPath
                                    name:(nullable NSString *)name
                               sceneName:(nullable NSString *)sceneName
                                duration:(int)duration;
    
    参数名称 类型 是否必填 说明
    audioPath NSString * 语音文件地址。
    name NSString * 语音文件显示名称,可不同于文件名。
    sceneName NSString * NOS 文件存储场景名,默认值为 V2NIMStorageSceneConfig.DEFAULT_IM 对应的场景名。若使用自定义的存储场景,需要先调用 addCustomStorageScene 添加自定义存储场景。
    duration int 语音文件时长,单位为毫秒。
    macOS/Windows
    C++static nstd::optional<V2NIMMessage> createAudioMessage(nstd::string audioPath, nstd::string name, nstd::string sceneName, uint32_t duration);
    
    参数名称 类型 是否必填 说明
    audioPath nstd::string 语音文件地址。
    name nstd::string 语音文件显示名称,可不同于文件名。
    sceneName nstd::string NOS 文件存储场景名,默认值为 V2NIMStorageSceneConfig.DEFAULT_IM 对应的场景名。若使用自定义的存储场景,需要先调用 addCustomStorageScene 添加自定义存储场景。
    duration uint32_t 语音文件时长,单位为毫秒。
    Web/uni-app/小程序
    TypeScriptcreateAudioMessage(audioObj: string | File, name?: string, sceneName?: string, duration?: number): V2NIMMessage
    
    参数名称 类型 是否必填 说明
    audioObj Web File/string
  • 小程序:传入小程序文件路径。通过小程序平台自身的 chooseMessageFile 接口获取。
  • 其它环境:传入 File 对象。
  • name string 语音文件显示名称,可不同于文件名。
    sceneName string NOS 文件存储场景名,默认值为 V2NIMStorageSceneConfig.DEFAULT_IM 对应的场景名。若使用自定义的存储场景,需要先调用 addCustomStorageScene 添加自定义存储场景。
    duration number 语音文件时长,单位为毫秒。
    Node.js/Electron
    TypeScriptcreateAudioMessage(audioPath, name, sceneName, duration): null | V2NIMMessage
    
    参数名称 类型 是否必填 说明
    audioPath nstd::string 语音文件地址。
    name nstd::string 语音文件显示名称,可不同于文件名。
    sceneName nstd::string NOS 文件存储场景名,默认值为 V2NIMStorageSceneConfig.DEFAULT_IM 对应的场景名。若使用自定义的存储场景,需要先调用 addCustomStorageScene 添加自定义存储场景。
    duration uint32_t 语音文件时长,单位为毫秒。
    HarmonyOS
    TypeScriptcreateAudioMessage(audioPath: string, name?: string, sceneName?: string, duration?: number): Promise<V2NIMMessage>
    
    参数名称 类型 是否必填 说明
    audioPath string 语音文件地址。
    name string 语音文件显示名称,可不同于文件名。
    sceneName string NOS 文件存储场景名,默认值为 V2NIMStorageSceneConfig.DEFAULT_IM 对应的场景名。若使用自定义的存储场景,需要先调用 addCustomStorageScene 添加自定义存储场景。
    duration number 语音文件时长,单位为毫秒。

    示例代码

    Android
    JavaV2NIMMessage v2AudioMessage = V2NIMMessageCreator.createAudioMessage(audioPath, name, sceneName, duration);
    
    iOS
    Objective-CNSString *audioPath = @"文件沙盒路径";
    V2NIMMessage *message = [V2NIMMessageCreator createAudioMessage:audioPath
                                                               name:@"audioName"
                                                          sceneName:@"nim_default_im"
                                                           duration:2];
    
    macOS/Windows
    C++auto audioMessage = V2NIMMessageCreator::createAudioMessage("audioPath", "audioName", V2NIM_STORAGE_SCENE_NAME_DEFAULT_IM, 100);
        if(!audioMessage) {
            // create audio message failed
    }
    
    Web/uni-app/小程序
    TypeScripttry {
        const message = nim.V2NIMMessageCreator.createAudioMessage(document.getElementById('fileInputId').files[0])
    } catch(err) {
        // todo error
    }
    
    Node.js/Electron
    TypeScripttry {
        const message = v2.messageCreator.createAudioMessage(audioPath, name, sceneName, duration)
    } catch(err) {
        // todo error
    }
    
    HarmonyOS
    TypeScripttry {
        const audioPath ="文件沙盒路径";
        const message = nim.messageCreator.createAudioMessage(audioPath)
    } catch(err) {
        // todo error
    }
    

    返回参数

    已创建的消息对象 V2NIMMessage

    createVideoMessage

    接口描述

    创建一条视频消息。

    • 在登录后、发送消息前调用该方法。
    • 该方法为同步。

    参数说明

    Android
    Javapublic static V2NIMMessage createVideoMessage(String videoPath, String name, String sceneName, Integer duration, Integer width, Integer height)
    
    参数名称 类型 是否必填 说明
    videoPath String 视频文件地址。
    name String 视频文件显示名称,可不同于文件名。
    sceneName String NOS 文件存储场景名,默认值为 V2NIMStorageSceneConfig.DEFAULT_IM 对应的场景名。若使用自定义的存储场景,需要先调用 addCustomStorageScene 添加自定义存储场景。
    duration Integer 视频文件时长,单位为毫秒。
    width Integer 视频宽度,单位为像素。
    height Integer 视频高度,单位为像素。
    iOS
    Objective-C+ (V2NIMMessage *)createVideoMessage:(NSString *)videoPath
                                    name:(nullable NSString *)name
                               sceneName:(nullable NSString *)sceneName
                                duration:(int)duration
                                   width:(int)width
                                  height:(int)height;
    
    参数名称 类型 是否必填 说明
    videoPath NSString * 视频文件地址。
    name NSString * 视频文件显示名称,可不同于文件名。
    sceneName NSString * NOS 文件存储场景名,默认值为 V2NIMStorageSceneConfig.DEFAULT_IM 对应的场景名。若使用自定义的存储场景,需要先调用 addCustomStorageScene 添加自定义存储场景。
    duration int 视频文件时长,单位为毫秒。
    width int 视频宽度,单位为像素。
    height int 视频高度,单位为像素。
    macOS/Windows
    C++static nstd::optional<V2NIMMessage> createVideoMessage(nstd::string videoPath,
        nstd::string name,
        nstd::string sceneName,
        uint32_t duration,
        uint32_t width,
        uint32_t height);
    
    参数名称 类型 是否必填 说明
    videoPath nstd::string 视频文件地址。
    name nstd::string 视频文件显示名称,可不同于文件名。
    sceneName nstd::string NOS 文件存储场景名,默认值为 V2NIMStorageSceneConfig.DEFAULT_IM 对应的场景名。若使用自定义的存储场景,需要先调用 addCustomStorageScene 添加自定义存储场景。
    duration uint32_t 视频文件时长,单位为毫秒。
    width uint32_t 视频宽度,单位为像素。
    height uint32_t 视频高度,单位为像素。
    Web/uni-app/小程序
    TypeScriptcreateVideoMessage(videoObj: string | File, name?: string, sceneName?: string, duration?: number, width?: number, height?: number): V2NIMMessage
    
    参数名称 类型 是否必填 说明
    videoObj Web File/string
  • 小程序:传入小程序文件路径。通过小程序平台自身的 chooseMessageFile 接口获取。
  • 其它环境:传入 File 对象。
  • name string 视频文件显示名称,可不同于文件名。
    sceneName string NOS 文件存储场景名,默认值为 V2NIMStorageSceneConfig.DEFAULT_IM 对应的场景名。若使用自定义的存储场景,需要先调用 addCustomStorageScene 添加自定义存储场景。
    duration number 视频文件时长,单位为毫秒。
    width number 视频宽度,单位为像素。
    height number 视频高度,单位为像素。
    Node.js/Electron
    TypeScriptcreateVideoMessage(videoPath, name, sceneName, duration, width, height): null | V2NIMMessage
    
    参数名称 类型 是否必填 说明
    videoPath nstd::string 视频文件地址。
    name nstd::string 视频文件显示名称,可不同于文件名。
    sceneName nstd::string NOS 文件存储场景名,默认值为 V2NIMStorageSceneConfig.DEFAULT_IM 对应的场景名。若使用自定义的存储场景,需要先调用 addCustomStorageScene 添加自定义存储场景。
    duration uint32_t 视频文件时长,单位为毫秒。
    width uint32_t 视频宽度,单位为像素。
    height uint32_t 视频高度,单位为像素。
    HarmonyOS
    TypeScriptcreateVideoMessage(videoPath: string, name?: string, sceneName?: string, duration?: number, width?: number, height?: number): Promise<V2NIMMessage>
    
    参数名称 类型 是否必填 说明
    videoPath Web File/string 视频文件地址。
    name string 视频文件显示名称,可不同于文件名。
    sceneName string NOS 文件存储场景名,默认值为 V2NIMStorageSceneConfig.DEFAULT_IM 对应的场景名。若使用自定义的存储场景,需要先调用 addCustomStorageScene 添加自定义存储场景。
    duration number 视频文件时长,单位为毫秒。
    width number 视频宽度,单位为像素。
    height number 视频高度,单位为像素。

    示例代码

    Android
    JavaV2NIMMessage v2VideoMessage = V2NIMMessageCreator.createVideoMessage(videoPath, name, sceneName, duration, width, height);
    
    iOS
    Objective-CNSString *videoPath = @"文件沙盒路径";
    V2NIMMessage *message = [V2NIMMessageCreator createVideoMessage:videoPath
                                                               name:@"name"
                                                          sceneName:@"nim_default_im"
                                                           duration:15
                                                              width:200
                                                             height:200];
    
    macOS/Windows
    C++auto videoMessage = V2NIMMessageCreator::createVideoMessage("videoPath", "videoName", V2NIM_STORAGE_SCENE_NAME_DEFAULT_IM, 100, 100, 100);
    if (!videoMessage) {
        // create video message failed
    }
    
    Web/uni-app/小程序
    TypeScripttry {
        const message = nim.V2NIMMessageCreator.createVideoMessage(document.getElementById('fileInputId').files[0])
    } catch(err) {
        // todo error
    }
    
    Node.js/Electron
    TypeScripttry {
        const message = v2.messageCreator.createVideoMessage(videoPath, name, sceneName, duration, width, height)
    } catch(err) {
        // todo error
    }
    
    HarmonyOS
    TypeScripttry {
        const videoPath = "沙盒路径"
        const message = nim.messageCreator.createVideoMessage(videoPath)
    } catch(err) {
        // todo error
    }
    

    返回参数

    已创建的消息对象 V2NIMMessage

    createFileMessage

    接口描述

    创建一条文件消息。

    • 在登录后、发送消息前调用该方法。
    • 该方法为同步。

    参数说明

    Android
    Javapublic static V2NIMMessage createFileMessage(String filePath, String name, String sceneName)
    
    参数名称 类型 是否必填 说明
    filePath String 文件地址。
    name String 文件显示名称,可不同于文件名。
    sceneName String NOS 文件存储场景名,默认值为 V2NIMStorageSceneConfig.DEFAULT_IM 对应的场景名。若使用自定义的存储场景,需要先调用 addCustomStorageScene 添加自定义存储场景。
    iOS
    Objective-C+ (V2NIMMessage *)createFileMessage:(NSString *)filePath
                                   name:(nullable NSString *)name
                              sceneName:(nullable NSString *)sceneName;
    
    参数名称 类型 是否必填 说明
    filePath NSString * 文件地址。
    name NSString * 文件显示名称,可不同于文件名。
    sceneName NSString * NOS 文件存储场景名,默认值为 V2NIMStorageSceneConfig.DEFAULT_IM 对应的场景名。若使用自定义的存储场景,需要先调用 addCustomStorageScene 添加自定义存储场景。
    macOS/Windows
    C++static nstd::optional<V2NIMMessage> createFileMessage(nstd::string filePath, nstd::string name, nstd::string sceneName);
    
    参数名称 类型 是否必填 说明
    filePath nstd::string 文件地址。
    name nstd::string 文件显示名称,可不同于文件名。
    sceneName nstd::string NOS 文件存储场景名,默认值为 V2NIMStorageSceneConfig.DEFAULT_IM 对应的场景名。若使用自定义的存储场景,需要先调用 addCustomStorageScene 添加自定义存储场景。
    Web/uni-app/小程序
    TypeScriptcreateFileMessage(fileObj: string | File, name?: string, sceneName?: string): V2NIMMessage
    
    参数名称 类型 是否必填 说明
    fileObj Web File/string
  • 小程序:传入小程序文件路径。通过小程序平台自身的 chooseMessageFile 接口获取。
  • 其它环境:传入 File 对象。
  • name string 文件显示名称,可不同于文件名。
    sceneName string NOS 文件存储场景名,默认值为 V2NIMStorageSceneConfig.DEFAULT_IM 对应的场景名。若使用自定义的存储场景,需要先调用 addCustomStorageScene 添加自定义存储场景。
    Node.js/Electron
    TypeScriptcreateFileMessage(filePath, name, sceneName): null | V2NIMMessage
    
    参数名称 类型 是否必填 说明
    fileObj Web File/string
  • 小程序:传入小程序文件路径。通过小程序平台自身的 chooseMessageFile 接口获取。
  • 其它环境:传入 File 对象。
  • name string 文件显示名称,可不同于文件名。
    sceneName string NOS 文件存储场景名,默认值为 V2NIMStorageSceneConfig.DEFAULT_IM 对应的场景名。若使用自定义的存储场景,需要先调用 addCustomStorageScene 添加自定义存储场景。
    HarmonyOS
    TypeScriptcreateFileMessage(filePath: string, name?: string, sceneName?: string): Promise<V2NIMMessage>
    
    参数名称 类型 是否必填 说明
    filePath string 文件地址。
    name string 文件显示名称,可不同于文件名。
    sceneName string NOS 文件存储场景名,默认值为 V2NIMStorageSceneConfig.DEFAULT_IM 对应的场景名。若使用自定义的存储场景,需要先调用 addCustomStorageScene 添加自定义存储场景。

    示例代码

    Android
    JavaV2NIMMessage v2FileMessage = V2NIMMessageCreator.createFileMessage(filePath, name, sceneName);
    
    iOS
    Objective-CNSString *filePath = @"文件沙盒路径";
    V2NIMMessage *message = [V2NIMMessageCreator createFileMessage:filePath
                                                               name:@"name"
                                                          sceneName:@"nim_default_im"];
    
    macOS/Windows
    C++auto fileMessage = V2NIMMessageCreator::createFileMessage("filePath", "fileName", V2NIM_STORAGE_SCENE_NAME_DEFAULT_IM);
    if(!fileMessage) {
        // create file message failed
    }
    
    Web/uni-app/小程序
    TypeScripttry {
        const message = nim.V2NIMMessageCreator.createFileMessage(document.getElementById('fileInputId').files[0])
    } catch(err) {
        // todo error
    }
    
    Node.js/Electron
    TypeScripttry {
        const message = v2.messageCreator.createFileMessage(filePath, name, sceneName)
    } catch(err) {
        // todo error
    }
    
    HarmonyOS
    TypeScripttry {
        const filePath = "沙盒路径"
        const message = nim.messageCreator.createFileMessage(filePath)
    } catch(err) {
        // todo error
    }
    }
    

    返回参数

    已创建的消息对象 V2NIMMessage

    createLocationMessage

    接口描述

    创建一条地理位置消息。

    • 在登录后、发送消息前调用该方法。
    • 该方法为同步。

    参数说明

    Android
    Javapublic static V2NIMMessage createLocationMessage(double latitude, double longitude, String address)
    
    参数名称 类型 是否必填 说明
    latitude double 位置维度。
    longitude double 位置经度。
    address String 位置描述信息。
    iOS
    Objective-C+ (V2NIMMessage *)createLocationMessage:(double)latitude
                                  longitude:(double)longitude
                                    address:(NSString *)address;
    
    参数名称 类型 是否必填 说明
    latitude double 位置维度。
    longitude double 位置经度。
    address NSString * 位置描述信息。
    macOS/Windows
    C++static nstd::optional<V2NIMMessage> createLocationMessage(double latitude, double longitude, nstd::string address);
    
    参数名称 类型 是否必填 说明
    latitude double 位置维度。
    longitude double 位置经度。
    address nstd::string 位置描述信息。
    Web/uni-app/小程序
    TypeScriptcreateLocationMessage(latitude: number, longitude: number, address: string): V2NIMMessage
    
    参数名称 类型 是否必填 说明
    latitude number 位置维度。
    longitude number 位置经度。
    address string 位置描述信息。
    Node.js/Electron
    TypeScriptcreateLocationMessage(latitude, longitude, address): null | V2NIMMessage
    
    参数名称 类型 是否必填 说明
    latitude number 位置维度。
    longitude number 位置经度。
    address string 位置描述信息。
    HarmonyOS
    TypeScriptcreateLocationMessage(latitude: number, longitude: number, address: string): V2NIMMessage
    
    参数名称 类型 是否必填 说明
    latitude number 位置维度。
    longitude number 位置经度。
    address string 位置描述信息。

    示例代码

    Android
    JavaV2NIMMessage v2LocationMessage = V2NIMMessageCreator.createLocationMessage(latitude,longitude, address);
    
    iOS
    Objective-CV2NIMMessage *message = [V2NIMMessageCreator createLocationMessage:37.787359
                                                            longitude:-122.408227
                                                            address:@"杭州滨江区网商路 399 号"];
    
    macOS/Windows
    C++auto locationMessage = V2NIMMessageCreator::createLocationMessage(100, 100, "address");
    if(!locationMessage) {
        // create location message failed
    }
    
    Web/uni-app/小程序
    TypeScripttry {
        const message = nim.V2NIMMessageCreator.createLocationMessage(30.25, 120.166664, "HangZhou")
    } catch(err) {
        // todo error
    }
    
    Node.js/Electron
    TypeScripttry {
        const message = v2.messageCreator.createLocationMessage(latitude, longitude, address)
    } catch(err) {
        // todo error
    }
    
    HarmonyOS
    TypeScripttry {
        const message = nim.messageCreator.createLocationMessage(30.25, 120.166664, "HangZhou")
    } catch(err) {
        // todo error
    }
    

    返回参数

    已创建的消息对象 V2NIMMessage

    createCustomMessage

    接口描述

    创建一条自定义消息。

    • 已注册一个自定义消息解析器。请参考 自定义消息收发
    • 在登录后、发送消息前调用该方法。
    • 该方法为同步。

    参数说明

    Android
    Javapublic static V2NIMMessage createCustomMessage(String text, String rawAttachment)
    
    参数名称 类型 是否必填 说明
    text String 自定义消息文本内容,可用于推送及状态栏消息提醒的展示。
    rawAttachment String 自定义消息附件对象。SDK 会将 JSON 格式的自定义消息解析为附件对象,用于自定义消息收发。长度上限为 4096 字节。
    iOS
    Objective-C+ (V2NIMMessage *)createCustomMessage:(NSString *)text
                            rawAttachment:(NSString *)rawAttachment;
    
    参数名称 类型 是否必填 说明
    text NSString * 自定义消息文本内容,可用于推送及状态栏消息提醒的展示。
    rawAttachment NSString * 自定义消息附件对象。SDK 会将 JSON 格式的自定义消息解析为附件对象,用于自定义消息收发。长度上限为 4096 字节。
    macOS/Windows
    C++static nstd::optional<V2NIMMessage> createCustomMessage(nstd::string text, nstd::string rawAttachment);
    
    参数名称 类型 是否必填 说明
    text nstd::string 自定义消息文本内容,可用于推送及状态栏消息提醒的展示。
    rawAttachment nstd::string 自定义消息附件对象。SDK 会将 JSON 格式的自定义消息解析为附件对象,用于自定义消息收发。长度上限为 4096 字节。
    Web/uni-app/小程序
    TypeScriptcreateCustomMessage(text: string, rawAttachment: string): V2NIMMessage
    
    参数名称 类型 是否必填 说明
    text string 自定义消息文本内容,可用于推送及状态栏消息提醒的展示。
    rawAttachment string 自定义消息附件对象。SDK 会将 JSON 格式的自定义消息解析为附件对象,用于自定义消息收发。长度上限为 4096 字节。
    Node.js/Electron
    TypeScriptcreateCustomMessage(text, rawAttachment): null | V2NIMMessage
    
    参数名称 类型 是否必填 说明
    text string 自定义消息文本内容,可用于推送及状态栏消息提醒的展示。
    rawAttachment string 自定义消息附件对象。SDK 会将 JSON 格式的自定义消息解析为附件对象,用于自定义消息收发。长度上限为 4096 字节。
    HarmonyOS
    TypeScriptcreateCustomMessage(text: string, rawAttachment: string): V2NIMMessage
    
    参数名称 类型 是否必填 说明
    text string 自定义消息文本内容,可用于推送及状态栏消息提醒的展示。
    rawAttachment string 自定义消息附件对象。SDK 会将 JSON 格式的自定义消息解析为附件对象,用于自定义消息收发。长度上限为 4096 字节。

    示例代码

    Android
    JavaV2NIMMessage v2CustomMessage = V2NIMMessageCreator.createCustomMessage(text, rawAttachment);
    
    iOS
    Objective-CV2NIMessage *message = [V2NIMMessageCreator createCustomMessage:@"text"
                                                    rawAttachment:@"custoom JSON String"];
    
    macOS/Windows
    C++auto customMessage = V2NIMMessageCreator::createCustomMessage("text", R"({"key": "value"})");
    if(!customMessage) {
        // create custom message failed
    }
    
    Web/uni-app/小程序
    TypeScripttry {
        const message = nim.V2NIMMessageCreator.createCustomMessage("text", JSON.stringify({
            strategy: 1
        }))
    } catch(err) {
        // todo error
    }
    
    Node.js/Electron
    TypeScripttry {
        const message = v2.messageCreator.createCustomMessage(text, rawAttachment)
    } catch(err) {
        // todo error
    }
    
    HarmonyOS
    TypeScripttry {
        const message = nim.messageCreator.createCustomMessage("text", JSON.stringify({
            strategy: 1
        }))
    } catch(err) {
        // todo error
    }
    

    返回参数

    已创建的消息对象 V2NIMMessage

    createForwardMessage

    接口描述

    创建一条转发消息。

    • 转发的消息类型 不能为 V2NIM_MESSAGE_TYPE_NOTIFICATION(5)V2NIM_MESSAGE_TYPE_ROBOT(11)V2NIM_MESSAGE_TYPE_TIPS(10)V2NIM_MESSAGE_TYPE_AVCHAT(7)
    • 转发的消息消息必须为发送成功的消息,消息状态必须为 V2NIMMessagesendingState.V2NIM_MESSAGE_SENDING_STATE_SUCCEEDED(1),消息内容与原消息相同。
    • 在登录后、发送消息前调用该方法。
    • 该方法为同步。

    参数说明

    Android
    Javapublic static V2NIMMessage createForwardMessage(V2NIMMessage message)
    
    参数名称 类型 是否必填 说明
    message V2NIMMessage 待转发的消息体。
    iOS
    Objective-C+ (V2NIMMessage *)createForwardMessage:(V2NIMMessage *)message;
    
    参数名称 类型 是否必填 说明
    message V2NIMMessage 待转发的消息体。
    macOS/Windows
    C++static nstd::optional<V2NIMMessage> createForwardMessage(V2NIMMessage message);
    
    参数名称 类型 是否必填 说明
    message V2NIMMessage 待转发的消息体。
    Web/uni-app/小程序
    TypeScriptcreateForwardMessage(message: V2NIMMessage): V2NIMMessage | null
    
    参数名称 类型 是否必填 说明
    message V2NIMMessage 待转发的消息体。
    Node.js/Electron
    TypeScriptcreateForwardMessage(message): null | V2NIMMessage
    
    参数名称 类型 是否必填 说明
    message V2NIMMessage 待转发的消息体。
    HarmonyOS
    TypeScriptcreateForwardMessage(message: V2NIMMessage): V2NIMMessage | null
    
    参数名称 类型 是否必填 说明
    message V2NIMMessage 待转发的消息体。

    示例代码

    Android
    Java// 被转发的消息
    // V2NIMMessage v2Message = ;
    V2NIMMessage v2ForwardMessage = V2NIMMessageCreator.createForwardMessage(v2Message);
    
    iOS
    Objective-CV2NIMMessage *message = [V2NIMMessageCreator createForwardMessage:originalMessage];
    
    macOS/Windows
    C++auto forwardMessage = V2NIMMessageCreator::createForwardMessage(message);
    if(!forwardMessage) {
        // create forward message failed
    }
    
    Web/uni-app/小程序
    TypeScripttry {
        const newMessage = nim.V2NIMMessageCreator.createForwardMessage(message)
    } catch(err) {
        // todo error
    }
    
    Node.js/Electron
    TypeScripttry {
        const message = v2.messageCreator.createForwardMessage(message)
    } catch(err) {
        // todo error
    }
    
    HarmonyOS
    TypeScripttry {
        const newMessage = nim.messageCreator.createForwardMessage(message)
    } catch(err) {
        // todo error
    }
    

    返回参数

    已创建的消息对象 V2NIMMessage

    createTipsMessage

    接口描述

    创建一条提示消息。

    • 在登录后、发送消息前调用该方法。
    • 该方法为同步。

    参数说明

    Android
    Javapublic static V2NIMMessage createTipsMessage(String text)
    
    参数名称 类型 是否必填 说明
    text String 提示消息内容。
    iOS
    Objective-C+ (V2NIMMessage *)createTipsMessage:(NSString *)text;
    
    参数名称 类型 是否必填 说明
    text NSString * 提示消息内容。
    macOS/Windows
    C++static nstd::optional<V2NIMMessage> createTipsMessage(nstd::string text);
    
    参数名称 类型 是否必填 说明
    text nstd::string 提示消息内容。
    Web/uni-app/小程序
    TypeScriptcreateTipsMessage(text: string): V2NIMMessage
    
    参数名称 类型 是否必填 说明
    text string 提示消息内容。
    Node.js/Electron
    TypeScriptcreateTipsMessage(text): null | V2NIMMessage
    
    参数名称 类型 是否必填 说明
    text string 提示消息内容。
    HarmonyOS
    TypeScriptcreateTipsMessage(text: string): V2NIMMessage
    
    参数名称 类型 是否必填 说明
    text string 提示消息内容。

    示例代码

    Android
    JavaV2NIMMessage v2TipMessage = V2NIMMessageCreator.createTipsMessage("tip content");
    
    iOS
    Objective-CV2NIMessage *message = [V2NIMMessageCreator createTipsMessage:"tip text"];
    
    macOS/Windows
    C++auto tipMessage = V2NIMMessageCreator::createTipsMessage("text");
    if(!tipMessage) {
        // create tip message failed
    }
    
    Web/uni-app/小程序
    TypeScripttry {
        const newMessage = nim.V2NIMMessageCreator.createTipsMessage("hint")
    } catch(err) {
        // todo error
    }
    
    Node.js/Electron
    TypeScripttry {
        const newMessage = v2.messageCreator.createTipsMessage("hint")
    } catch(err) {
        // todo error
    }
    
    HarmonyOS
    TypeScripttry {
        const newMessage = nim.messageCreator.createTipsMessage("hint")
    } catch(err) {
        // todo error
    }
    

    返回参数

    已创建的消息对象 V2NIMMessage

    createCallMessage

    接口描述

    创建一条话单消息。

    • 在登录后、发送消息前调用该方法。
    • 该方法为同步。

    参数说明

    Android
    Javapublic static V2NIMMessage createCallMessage(int type, String channelId, int status, List<V2NIMMessageCallDuration> durations, String text);
    
    参数名称 类型 是否必填 说明
    type Integer 话单类型,业务侧可自定义,网易云信不校验内容。建议设置为:
  • 1:音频
  • 2:视频
  • channelId String 话单频道 ID,网易云信不校验内容。
    status Integer 通话状态,业务侧可自定义状态,网易云信不校验内容。建议设置为:
  • 1:通话完成
  • 2:通话取消
  • 3:通话拒绝
  • 4:超时未接听
  • 5:对方忙
  • durations List<V2NIMMessageCallDuration> 通话成员时长列表,网易云信不校验内容。
    text String 话单描述。
    iOS
    Objective-C+ (V2NIMMessage *)createCallMessage:(NSString *)text
                                   type:(NSInteger)type
                              channelId:(NSString *)channelId
                                 status:(NSInteger)status
                              durations:(NSArray <V2NIMMessageCallDuration *>*)durations;
    
    参数名称 类型 是否必填 说明
    type NSInteger 话单类型,业务侧可自定义,网易云信不校验内容。建议设置为:
  • 1:音频
  • 2:视频
  • channelId NSString * 话单频道 ID,网易云信不校验内容。
    status NSInteger 通话状态,业务侧可自定义状态,网易云信不校验内容。建议设置为:
  • 1:通话完成
  • 2:通话取消
  • 3:通话拒绝
  • 4:超时未接听
  • 5:对方忙
  • durations NSArray <V2NIMMessageCallDuration > 通话成员时长列表,网易云信不校验内容。
    text NSString * 话单描述。
    macOS/Windows
    C++nstd::optional< V2NIMMessage > v2::V2NIMMessageCreator::createCallMessage(int32_t type, const nstd::string & channelId, int32_t status, const nstd::vector< V2NIMMessageCallDuration > & durations, const nstd::string & text )
    
    参数名称 类型 是否必填 说明
    type int32_t 话单类型,业务侧可自定义,网易云信不校验内容。建议设置为:
  • 1:音频
  • 2:视频
  • channelId nstd::string 话单频道 ID,网易云信不校验内容。
    status int32_t 通话状态,业务侧可自定义状态,网易云信不校验内容。建议设置为:
  • 1:通话完成
  • 2:通话取消
  • 3:通话拒绝
  • 4:超时未接听
  • 5:对方忙
  • durations nstd::vector<V2NIMMessageCallDuration> 通话成员时长列表,网易云信不校验内容。
    text nstd::string 话单描述。
    Web/uni-app/小程序
    TypeScriptcreateCallMessage(type: number, channelId: string, status: number, durations: V2NIMMessageCallDuration[], text?: string): V2NIMMessage
    
    参数名称 类型 是否必填 说明
    type number 话单类型,业务侧可自定义,网易云信不校验内容。建议设置为:
  • 1:音频
  • 2:视频
  • channelId string 话单频道 ID,网易云信不校验内容。
    status number 通话状态,业务侧可自定义状态,网易云信不校验内容。建议设置为:
  • 1:通话完成
  • 2:通话取消
  • 3:通话拒绝
  • 4:超时未接听
  • 5:对方忙
  • durations V2NIMMessageCallDuration[] 通话成员时长列表,网易云信不校验内容。
    text string 话单描述。
    Node.js/Electron
    TypeScriptcreateCallMessage(callType, channelId, status, durations, text): V2NIMMessage
    
    参数名称 类型 是否必填 说明
    type int32_t 话单类型,业务侧可自定义,网易云信不校验内容。建议设置为:
  • 1:音频
  • 2:视频
  • channelId nstd::string 话单频道 ID,网易云信不校验内容。
    status int32_t 通话状态,业务侧可自定义状态,网易云信不校验内容。建议设置为:
  • 1:通话完成
  • 2:通话取消
  • 3:通话拒绝
  • 4:超时未接听
  • 5:对方忙
  • durations nstd::vector<V2NIMMessageCallDuration> 通话成员时长列表,网易云信不校验内容。
    text nstd::string 话单描述。
    HarmonyOS
    TypeScriptcreateCallMessage(type: number, channelId: string, status: number, durations: V2NIMMessageCallDuration[], text?: string): V2NIMMessage
    
    参数名称 类型 是否必填 说明
    type number 话单类型,业务侧可自定义,网易云信不校验内容。建议设置为:
  • 1:音频
  • 2:视频
  • channelId string 话单频道 ID,网易云信不校验内容。
    status number 通话状态,业务侧可自定义状态,网易云信不校验内容。建议设置为:
  • 1:通话完成
  • 2:通话取消
  • 3:通话拒绝
  • 4:超时未接听
  • 5:对方忙
  • durations V2NIMMessageCallDuration[] 通话成员时长列表,网易云信不校验内容。
    text string 话单描述。

    示例代码

    Android
    Javaint type = 1;
    String channelId = "123";
    int status = 1;
    V2NIMMessageCallDuration duration = new V2NIMMessageCallDuration("test", 100);
    List<V2NIMMessageCallDuration> durations = new ArrayList<>();
    durations.add(duration);
    V2NIMMessageCreator.createCallMessage(type, channelId, status, durations,"text");
    
    iOS
    Objective-Cdurations.accountId = @"accountId";
    durations.duration = 60;
    [V2NIMMessageCreator createCallMessage:@"text" type:1 channelId:@"channelId" status:1 durations:@[durations]];2NIMMessage *v2msg = [V2NIMMessageCreator createCallMessage:@"text" rawAttachment:@"rawAttachment"];
    
    macOS/Windows
    C++auto callMessage = V2NIMMessageCreator::createCallMessage(1, "channelId", 1, {{"account1", 100}, {"account2", 200}}, "text");
    if(!callMessage) {
        // create call message failed
    }
    
    Web/uni-app/小程序
    TypeScriptnim.V2NIMMessageCreator.createCallMessage(
      1,
      "Channel_ID",
      1,
      [{
        accountId: "AccountID", duration: 5000
      }]
    )
    
    Node.js/Electron
    TypeScriptv2.messageCreator.createCallMessage(
      1,
      "Channel_ID",
      1,
      [{
        accountId: "AccountID", duration: 5000
      }]
    )
    
    HarmonyOS
    TypeScriptconst callMessage: V2NIMMessage = messageCreator.createCallMessage(1, "Channel_ID", 3, [
      { accountId: "accid_1", duration: 1 },
      { accountId: "accid_2", duration: 2 },
      { accountId: "accid_3", duration: 3 },
      { accountId: "accid_4", duration: 4 }
    ], 'text')
    

    返回参数

    已创建的消息对象 V2NIMMessage

    createCustomMessageWithAttachment

    接口描述

    构造一条自定义消息。

    • 在登录后、发送消息前调用该方法。
    • 该方法为同步。

    参数说明

    Android
    Javapublic static V2NIMMessage createCustomMessageWithAttachment(V2NIMMessageCustomAttachment attachment,int subType) {
        V2NIMMessageImpl message = createV2Message(V2NIMMessageType.V2NIM_MESSAGE_TYPE_CUSTOM);
        message.setAttachment(attachment);
        if (subType > 0) {
            message.setSubType(subType);
        }
        return message;
    }
    
    参数名称 类型 是否必填 说明
    attachment V2NIMMessageCustomAttachment 需要发送的自定义消息的附件。
    subType int 可作为具体的自定义子类型区分 type 字段。需要传入大于等于 0 的值,若小于 0 ,则默认为 0。
    iOS
    Objective-C+ (V2NIMMessage *)createCustomMessageWithAttachment:(V2NIMMessageCustomAttachment *)attachment
                                                subType:(int)subType;
    
    参数名称 类型 是否必填 说明
    attachment V2NIMMessageCustomAttachment 需要发送的自定义消息的附件。
    subType int 可作为具体的自定义子类型区分 type 字段。需要传入大于等于 0 的值,若小于 0 ,则默认为 0。
    macOS/Windows
    C++virtual nstd::optional<V2NIMMessage> createCustomMessageWithAttachment(nstd::shared_ptr<V2NIMMessageCustomAttachment> attachment,
            int32_t subType) = 0;
    
    参数名称 类型 是否必填 说明
    attachment nstd::shared_ptr<V2NIMMessageCustomAttachment> 需要发送的自定义消息的附件。
    subType int32_t 可作为具体的自定义子类型区分 type 字段。需要传入大于等于 0 的值,若小于 0 ,则默认为 0。
    Web/uni-app/小程序
    TypeScriptcreateCustomMessageWithAttachment(attachment: V2NIMMessageCustomAttachment, subType?: number): V2NIMMessage
    
    参数名称 类型 是否必填 说明
    attachment V2NIMMessageCustomAttachment 需要发送的自定义消息的附件。
    subType number 可作为具体的自定义子类型区分 type 字段。需要传入大于等于 0 的值,若小于 0 ,则默认为 0。

    示例代码

    Android
    JavaV2NIMMessageCustomAttachment attachment = new V2Test1CustomAttachment();
    int subtype = 1;
    V2NIMMessageCreator.createCustomMessageWithAttachment(attachment,subtype);
    
    iOS
    Objective-C@interface MyAttachment: V2NIMMessageCustomAttachment
    @end
    
    @implementation MyAttachment
    
    - (void)parse:(NSString *)attach
    {
        // your code
    }
    
    @end
    
    MyAttachment *attachment = [[MyAttachment alloc] init];
    V2NIMMessage *message = [V2NIMMessageCreator createCustomMessageWithAttachment:attachment subType:1];
    
    macOS/Windows
    C++struct V2NIMMessageTempCustomAttachment : public V2NIMMessageCustomAttachment {
         nstd::shared_ptr<V2NIMMessageAttachment> parse(const nstd::string& attach) override {
            // parse attach
        }
    }
    nstd::shared_ptr<V2NIMMessageTempCustomAttachment> attachment = nstd::make_shared<V2NIMMessageTempCustomAttachment>();
    int32_t subType = 1;
    auto customMessage = V2NIMMessageCreator::createCustomMessageWithAttachment(attachment, subType);
    
    Web/uni-app/小程序
    TypeScriptconst attachment = nim.V2NIMMessageCreator.createCustomMessageWithAttachment(
      {
        "raw": "{\"test\":999}",
        "test": 999,
      },
      1
    )
    

    返回参数

    已创建的自定义消息对象 V2NIMMessage

    此文档是否对你有帮助?
    有帮助
    去反馈
    • 支持平台
    • API 概览
    • 接口类
    • createTextMessage
    • createImageMessage
    • createAudioMessage
    • createVideoMessage
    • createFileMessage
    • createLocationMessage
    • createCustomMessage
    • createForwardMessage
    • createTipsMessage
    • createCallMessage
    • createCustomMessageWithAttachment