文档导航 UE4
本页目录

Talk SDK for UnrealEngine4 API接口手册

本页各接口按语法、功能、参数说明、返回值、异步回调介绍;无参数、无返回值或无独立异步完成事件时明确标注。返回类型、回调载荷及线程以本平台封装为准。

相关异步/同步处理方法介绍

游密语音引擎SDK for UnrealEngine4提供了C++和蓝图接口,接口调用都会立即返回,凡是本身需要较长耗时的接口调用都会采用异步回调的方式,所有接口都可以在主线程中直接使用。回调在主线程。

同步接口按各自返回类型解释;异步接口返回成功仅表示请求已受理,最终结果需等待对应事件。同步返回错误时立即处理,不继续等待成功事件。回调中避免耗时任务;当前插件会将原生 error 转为 EYouMeErrorCode,不能将其强转整数当作原始音量值。

插件版本与枚举约定

本页按 UE4_25/UE4_26 的 UYouMeTalkAPI 描述。单/多频道分离入口在该插件中仍有效;JoinChannelMultiMode 的参数顺序为用户 ID、角色、频道 ID、检查标志。UE4_24 的远端音量和网络检测接口与本版本不同。

接口返回 EYouMeErrorCode,使用 EYouMeErrorCode::YOUME_SUCCESS 等枚举比较;不要用原生 SDK 的负错误码比较插件返回值。区域参数使用 EYouMeRTCServerRegion,详见状态码页。

API调用说明

API使用的基本流程:(初始化 -> 收到初始化成功回调通知 -> 加入语言频道 -> 收到加入频道成功回调通知 -> 使用其他接口 -> 离开语音频道 -> 反初始化),要确保严格按照上述的顺序使用接口。

回调与监听

实现回调

  • 语法
C++
static void BindObserver(TScriptInterface<IYouMeTalkObserver> Observer);
  • 功能

用于绑定监听回调的对象。

  • 参数说明

Observer:继承 IYouMeTalkObserver 的类。

  • 返回值

无(void)。

  • 异步回调

注册/解绑操作没有独立完成事件;SDK 在相应事件或数据产生时通过语法指定的回调接口通知。回调线程及载荷见本页回调说明。

示例与补充说明:

蓝图用法

  1. 在蓝图的 ClassSettings 选项中继承 YouMeTalkObserver 接口,如下图所示:

    image-20210706143937430

    image-20210706143824326

  2. 在蓝图中调用 BindObserver 蓝图节点,如下图所示:

    image-20210706144238413

C++用法

  1. 继承回调接口 IYouMeTalkObserver,注意引入头文件。

    image-20210707154001415

  2. 引入头文件。(已引入可忽略)

    TEXT
    #include "YouMeTalkAPI.h"
  3. 调用 BindObserver 接口。

    TEXT
    UYouMeTalkAPI::BindObserver(this);
  • 绑定回调监听时,只允许一个对象进行监听。

回调监听

  • 语法
C++
void OnEvent(const EYouMeEvent event, const EYouMeErrorCode error, const FString& channel, const FString& param);
  • 功能

回调监听事件,用于监听后续TalkSDK操作的相关回调。

  • 参数说明
  • event:回调的事件类型。
    • error:回调的错误码。
    • channel:回调的频道。
    • param:其他参数。
  • 返回值

无(void)。

  • 异步回调

注册/解绑操作没有独立完成事件;SDK 在相应事件或数据产生时通过语法指定的回调接口通知。回调线程及载荷见本页回调说明。

示例与补充说明:

蓝图用法

在继承 YouMeTalkObserver 接口的蓝图中,调用 EventOnEvent 蓝图节点。

image-20210706145856668

C++用法

  1. 在继承回调接口 IYouMeTalkObserver 的类中,引入头文件

    TEXT
    #include "YouMeTalkDefine.h"
  2. 在继承回调接口 IYouMeTalkObserver 的类中,实现 回调事件OnEvent虚函数。

    TEXT
    virtual void OnEvent_Implementation(const EYouMeEvent event, const EYouMeErrorCode error, const FString& channel, const FString& param) override;

注:如果在C++中实现了回调事件虚函数,就不要在蓝图中再实现一次。否则会覆盖C++的回调,导致C++接收不到回调。

  • 完成上述回调事件绑定,即可在后续的API调用中,实现API相关回调。

移除监听

  • 语法
C++
static void UnbindObserver();
  • 功能

解绑监听对象。

  • 参数说明

无。

  • 返回值

无(void)。

  • 异步回调

注册/解绑操作没有独立完成事件;SDK 在相应事件或数据产生时通过语法指定的回调接口通知。回调线程及载荷见本页回调说明。

示例与补充说明:

蓝图用法

在绑定监听的蓝图中调用 UnbindObserver 蓝图节点,进行解绑,如下图所示:

image-20210706151016776

C++用法

  1. 引入头文件。(已引入可忽略)

    TEXT
    #include "YouMeTalkAPI.h"
  2. 调用 UnbindObserver 接口。

    TEXT
    UYouMeTalkAPI::UnbindObserver();

初始化

  • 语法
C++
static EYouMeErrorCode Init(const FString strAppKey, const FString strAPPSecret, EYouMeRTCServerRegion youMeRTCServerRegion, const FString strExtServerRegionName);
  • 功能

初始化语音引擎,做APP验证和资源初始化(只有appkey,appsecret,serverRegionId 都一样时,才可以进行语音互通,改任意一个视为另外一个区服)。

  • 参数说明
  • strAPPKey:从游密后台申请到的 app key, 这个是你们应用程序的唯一标识。

    • strAPPSecret:对应 strAPPKey 的私钥, 这个需要妥善保存,不要暴露给其他人。

    • serverRegionId:设置首选连接服务器的区域码,建议直接使用RTC_DEFAULT_SERVER。如果YOUME_RTC_SERVER_REGION定义的区域码不能满足要求,可以把这个参数设为 RTC_EXT_SERVER,然后通过后面的参数strExtServerRegionName 设置一个自定的区域值(如中国用 "cn" 或者 “ch"表示),然后把这个自定义的区域值同步给游密,我们将通过后台配置映射到最佳区域的服务器。

    • strExtServerRegionName:自定义的扩展的服务器区域名。不能为null,可为空字符串“”。只有前一个参数serverRegionId设为RTC_EXT_SERVER时,此参数才有效(否则都将当空字符串“”处理)。

strAppKey:从游密控制台申请的 AppKey。

youMeRTCServerRegion:服务器区域,使用 EYouMeRTCServerRegion 枚举。

  • 返回值

返回 EYouMeErrorCode,EYouMeErrorCode::YOUME_SUCCESS 表示请求已受理;其他值表示失败,参见 错误码定义。

  • 异步回调

通过 IYouMeTalkObserver::OnEvent(蓝图 EventOnEvent) 接收:

  • YOUME_EVENT_INIT_OK:初始化成功,此后才能加入频道。
  • YOUME_EVENT_INIT_FAILED:初始化失败,常见原因包括网络或 AppKey/AppSecret 错误。

回调示例:

蓝图回调:

image-20210812172632285

C++回调:

TEXT
//涉及到的主要回调事件有:
// YOUME_EVENT_INIT_OK  - 表明初始化成功
// YOUME_EVENT_INIT_FAILED - 表明初始化失败,最常见的失败原因是网络错误或者 AppKey-AppSecret 错误
virtual void OnEvent_Implementation(const EYouMeEvent event, const EYouMeErrorCode error, const FString& channel, const FString& param) override;

示例与补充说明:

蓝图用法

在蓝图中调用 Init 蓝图节点。

image-20210813104256676

C++用法

  1. 引入头文件。(已引入可忽略)

    TEXT
    #include "YouMeTalkAPI.h"
    #include "YouMeTalkDefine.h"
  2. 调用 Init 接口。

    TEXT
    FString strAppKey = "";
    FString strAPPSecret = "";
    EYouMeRTCServerRegion youMeRTCServerRegion = EYouMeRTCServerRegion::RTC_CN_SERVER;
    FString strExtServerRegionName = "";
    UYouMeTalkAPI::Init(strAppKey, strAPPSecret, youMeRTCServerRegion, strExtServerRegionName);

设置服务器区域

  • 语法
C++
static void SetServerRegion(EYouMeRTCServerRegion regionId, const FString extRegionName, bool bAppend);
  • 功能

设置首选连接区域。初始区域通常通过初始化接口参数指定;需要调整时,等待初始化成功后、加入频道前调用。初始化前单独调用区域设置接口不会生效。 所有参数及是否支持追加区域按本平台语法传入。

  • 参数说明

serverRegionId:如果YOUME_RTC_SERVER_REGION定义的区域码不能满足要求,可以把这个参数设为 RTC_EXT_SERVER,然后通过后面的参数strExtServerRegionName 设置一个自定的区域值(如中国用 "cn" 或者 “ch"表示),然后把这个自定义的区域值同步给游密,我们将通过后台配置映射到最佳区域的服务器。

strExtServerRegionName:自定义的扩展的服务器区域名。不能为null,可为空字符串“”。只有前一个参数serverRegionId设为RTC_EXT_SERVER时,此参数才有效(否则都将当空字符串“”处理)。

bAppend:true表示添加,false表示替换。

regionId:首选服务器区域。

extRegionName:扩展区域名;仅扩展区域类型生效,否则传空字符串。

  • 返回值

无(void)。

  • 异步回调

无。本接口不单独返回异步完成通知。

示例与补充说明:

蓝图用法

在蓝图中调用 SetServerRegion 蓝图节点。

image-20210813162329144

C++用法

  1. 引入头文件。(已引入可忽略)

    TEXT
    #include "YouMeTalkAPI.h"
    #include "YouMeTalkDefine.h"
  2. 调用 SetServerRegion 接口。

    TEXT
    EYouMeRTCServerRegion regionId;
    FString extRegionName = " ";
    bool bAppend = false;
    UYouMeTalkAPI::SetServerRegion(regionId, extRegionName, bAppend);

语音频道管理

加入语音频道(单频道)

  • 语法
C++
static EYouMeErrorCode JoinChannelSingleMode(const FString strUserID, const FString strChannelID, EYouMeUserRole userRole, bool bCheckRoomExist);
  • 功能

加入语音频道(单频道模式,每个时刻只能在一个语音频道里面)。

  • 参数说明
  • strUserID:全局唯一的用户标识,全局指在当前应用程序的范围内。

    • strChannelID:全局唯一的频道标识,全局指在当前应用程序的范围内。

    • userRole:用户在语音频道里面的角色,见YouMeUserRole定义。

    • bCheckRoomExist:是否检查频道存在时才加入,默认为false: true 当频道存在时加入、不存在时返回错误(多用于观众角色),false 无论频道是否存在都加入频道。

  • 返回值

返回 EYouMeErrorCode,EYouMeErrorCode::YOUME_SUCCESS 表示请求已受理;其他值表示失败,参见 错误码定义。

  • 异步回调

通过 IYouMeTalkObserver::OnEvent(蓝图 EventOnEvent) 接收:

  • YOUME_EVENT_JOIN_OK:加入频道成功。
  • YOUME_EVENT_JOIN_FAILED:加入频道失败,按 err 处理原因。

回调示例:

蓝图回调:

image-20210812174751162

C++回调:

TEXT
//涉及到的主要回调事件有:
//YOUME_EVENT_JOIN_OK - 成功进入语音频道
//YOUME_EVENT_JOIN_FAILED - 进入语音频道失败,可能原因是网络或服务器有问题,或是bCheckRoomExist为true时频道还未创建
virtual void OnEvent_Implementation(const EYouMeEvent event, const EYouMeErrorCode error, const FString& channel, const FString& param) override;

示例与补充说明:

蓝图用法

在蓝图中调用 JoinChannelSingleMode 蓝图节点。

image-20210706161445437

C++用法

  1. 引入头文件。(已引入可忽略)

    TEXT
    #include "YouMeTalkAPI.h"
    #include "YouMeTalkDefine.h"
  2. 调用 JoinChannelSingleMode 接口。

    TEXT
    FString strUserID = "";
    FString strChannelID = "";
    EYouMeUserRole userRol = EYouMeUserRole::YOUME_USER_HOST;
    bool bCheckRoomExis = true;
    UYouMeTalkAPI::JoinChannelSingleMode(strUserID, strChannelID, userRol, bCheckRoomExis);

加入语音频道(多频道)

  • 语法
C++
static EYouMeErrorCode JoinChannelMultiMode(const FString strUserID, EYouMeUserRole eUserRole, const FString strChannelID, bool bCheckRoomExist);
  • 功能

加入语音频道(单频道模式,每个时刻只能在一个语音频道里面)。

  • 参数说明
  • strUserID:全局唯一的用户标识,全局指在当前应用程序的范围内。

    • strChannelID:全局唯一的频道标识,全局指在当前应用程序的范围内。

    • userRole:用户角色,用于决定讲话/播放战歌等权限。

    • bCheckRoomExist:是否检查频道存在时才加入,默认为false: true 当频道存在时加入、不存在时返回错误(多用于观众角色),false 无论频道是否存在都加入频道。

eUserRole:用户角色,使用本平台角色类型/常量,不能传无效角色。

  • 返回值

返回 EYouMeErrorCode,EYouMeErrorCode::YOUME_SUCCESS 表示请求已受理;其他值表示失败,参见 错误码定义。

  • 异步回调

通过 IYouMeTalkObserver::OnEvent(蓝图 EventOnEvent) 接收:

  • YOUME_EVENT_JOIN_OK:加入频道成功。
  • YOUME_EVENT_JOIN_FAILED:加入频道失败,按 err 处理原因。

回调示例:

蓝图回调:

image-20210812174751162

C++回调:

TEXT
//涉及到的主要回调事件有:
//YOUME_EVENT_JOIN_OK - 成功进入语音频道
//YOUME_EVENT_JOIN_FAILED - 进入语音频道失败,可能原因是网络或服务器有问题,或是bCheckRoomExist为true时频道还未创建
virtual void OnEvent_Implementation(const EYouMeEvent event, const EYouMeErrorCode error, const FString& channel, const FString& param) override;

示例与补充说明:

蓝图用法

在蓝图中调用 JoinChannelMultiMode 蓝图节点。

image-20210812174228945

C++用法

  1. 引入头文件。(已引入可忽略)

    TEXT
    #include "YouMeTalkAPI.h"
    #include "YouMeTalkDefine.h"
  2. 调用 JoinChannelMultiMode 接口。

    TEXT
    FString strUserID = "";
    FString strChannelID = "";
    EYouMeUserRole userRol = EYouMeUserRole::YOUME_USER_HOST;
    bool bCheckRoomExis = true;UYouMeTalkAPI::JoinChannelMultiMode(strUserID, userRol, strChannelID, bCheckRoomExis);

指定讲话频道

  • 语法
C++
static EYouMeErrorCode SpeakToChannel(const FString strChannelID);
  • 功能

多频道模式下,指定当前要讲话的频道。

  • 参数说明
  • strChannelID:全局唯一的频道标识,全局指在当前应用程序的范围内。
  • 返回值

返回 EYouMeErrorCode,EYouMeErrorCode::YOUME_SUCCESS 表示请求已受理;其他值表示失败,参见 错误码定义。

  • 异步回调

通过 IYouMeTalkObserver::OnEvent(蓝图 EventOnEvent) 接收:

  • YOUME_EVENT_SPEAK_SUCCESS:成功切换到指定讲话频道。
  • YOUME_EVENT_SPEAK_FAILED:切换失败,按 err 处理网络或服务端等原因。

回调示例:

蓝图回调:

image-20210813105230089

C++回调:

TEXT
//涉及到的主要回调事件有:
//YOUME_EVENT_SPEAK_SUCCESS - 成功切入到指定语音频道
//YOUME_EVENT_SPEAK_FAILED - 切入指定语音频道失败,可能原因是网络或服务器有问题
virtual void OnEvent_Implementation(const EYouMeEvent event, const EYouMeErrorCode error, const FString& channel, const FString& param) override;

示例与补充说明:

蓝图用法

在蓝图中调用 SpeakToChannel 蓝图节点。

image-20210813103415443

C++用法

  1. 引入头文件。(已引入可忽略)

    TEXT
    #include "YouMeTalkAPI.h"
  2. 调用 SpeakToChannel 接口。

    TEXT
    FString strChannelID = "";
    UYouMeTalkAPI::SpeakToChannel(strChannelID);

退出指定的语音频道

  • 语法
C++
static EYouMeErrorCode LeaveChannelMultiMode(const FString strChannelID);
  • 功能

多频道模式下,退出指定的语音频道。

  • 参数说明
  • strChannelID:全局唯一的频道标识,全局指在当前应用程序的范围内。
  • 返回值

返回 EYouMeErrorCode,EYouMeErrorCode::YOUME_SUCCESS 表示请求已受理;其他值表示失败,参见 错误码定义。

  • 异步回调

通过 IYouMeTalkObserver::OnEvent(蓝图 EventOnEvent) 接收:

  • YOUME_EVENT_LEAVED_ONE:已退出指定频道。

回调示例:

蓝图回调:

image-20210813105921626

C++回调:

TEXT
//涉及到的主要回调事件有:
//YOUME_EVENT_LEAVED_ONE - 成功退出指定语音频道
virtual void OnEvent_Implementation(const EYouMeEvent event, const EYouMeErrorCode error, const FString& channel, const FString& param) override;

示例与补充说明:

蓝图用法

在蓝图中调用 LeaveChannelMultiMode 蓝图节点。

image-20210813105734972

C++用法

  1. 引入头文件。(已引入可忽略)

    TEXT
    #include "YouMeTalkAPI.h"
  2. 调用 SpeakToChannel 接口。

    TEXT
    FString strChannelID = "";
    UYouMeTalkAPI::LeaveChannelMultiMode(strChannelID);

退出所有语音频道

  • 语法
C++
static EYouMeErrorCode LeaveChannelAll();
  • 功能

退出所有的语音频道(单频道模式下直接调用此函数离开频道即可)。

  • 参数说明

无。

  • 返回值

返回 EYouMeErrorCode,EYouMeErrorCode::YOUME_SUCCESS 表示请求已受理;其他值表示失败,参见 错误码定义。

  • 异步回调

通过 IYouMeTalkObserver::OnEvent(蓝图 EventOnEvent) 接收:

  • YOUME_EVENT_LEAVED_ALL:已退出全部频道。

回调示例:

蓝图回调:

image-20210813110605947

C++回调:

TEXT
//涉及到的主要回调事件有:
//YOUME_EVENT_LEAVED_ALL - 成功退出所有语音频道
virtual void OnEvent_Implementation(const EYouMeEvent event, const EYouMeErrorCode error, const FString& channel, const FString& param) override;

示例与补充说明:

蓝图用法

在蓝图中调用 LeaveChannelAll 蓝图节点。

image-20210706163317849

C++用法

  1. 引入头文件。(已引入可忽略)

    TEXT
    #include "YouMeTalkAPI.h"
    #include "YouMeTalkDefine.h"
  2. 调用 LeaveChannelAll 接口。

    TEXT
    UYouMeTalkAPI::LeaveChannelAll();

设置白名单用户

  • 语法
C++
static EYouMeErrorCode SetWhiteUserList(const FString strChannelID, const FString vecWhiteUserList);
  • 功能

设置当前用户的语音消息接收白名单,其语音消息只会转发到白名单的用户,不设置该接口则默认转发至频道内所有人。

  • 参数说明
  • strChannelID:要设置的频道(兼容多频道模式,单频道模式下传入当前频道即可)。
    • strWhiteUserList:白名单用户列表, 以|分隔,如:User1|User2|User3;表示语音消息只发送到User1,User2,User3. "all"表示转发至频道内所有人;设置为自己表示不转发至任何用户。

vecWhiteUserList:语音接收白名单;用户 ID 数组,空列表及全体接收约定见功能说明。

  • 返回值

返回 EYouMeErrorCode,EYouMeErrorCode::YOUME_SUCCESS 表示请求已受理;其他值表示失败,参见 错误码定义。

  • 异步回调

通过 IYouMeTalkObserver::OnEvent(蓝图 EventOnEvent) 接收:

  • YOUME_EVENT_SET_WHITE_USER_LIST_OK:白名单设置完成;存在异常用户时 err 可为 YOUME_ERROR_WHITE_SOMEUSER_ABNORMAL。
  • YOUME_EVENT_SET_WHITE_USER_LIST_FAILED:设置失败。

回调示例:

蓝图回调:

image-20210813111624602

image-20210813111548846

C++回调:

TEXT
//涉及到的主要回调事件有:
//YOUME_EVENT_SET_WHITE_USER_LIST_OK - 成功在指定语音频道设置白名单,有异常用户会返回错误码YOUME_ERROR_WHITE_SOMEUSER_ABNORMAL
//YOUME_EVENT_SET_WHITE_USER_LIST_FAILED - 在指定语音频道设置白名单失败,可能原因是网络或服务器有问题
virtual void OnEvent_Implementation(const EYouMeEvent event, const EYouMeErrorCode error, const FString& channel, const FString& param) override;

示例与补充说明:

蓝图用法

在蓝图中调用 SetWhiteUserList 蓝图节点。

image-20210706164212503

C++用法

  1. 引入头文件。(已引入可忽略)

    TEXT
    #include "YouMeTalkAPI.h"
  2. 调用 SetWhiteUserList 接口。

    TEXT
    FString strChannelID = "";
    FString vecWhiteUserList = "";
    UYouMeTalkAPI::SetWhiteUserList(strChannelID, vecWhiteUserList);

设置黑名单用户

  • 语法
C++
static EYouMeErrorCode SetListenOtherVoice(const FString userID, bool on);
  • 功能

设置指定用户的语音接收黑名单状态,控制本机是否接收该用户的语音。

  • 参数说明

userID:要设置黑名单状态的用户 ID。

on:false 将指定用户加入语音接收黑名单,屏蔽该用户的语音;true 将其移出黑名单,恢复接收其语音。

  • 返回值

返回 EYouMeErrorCode,EYouMeErrorCode::YOUME_SUCCESS 表示本次调用成功;其他值表示失败,参见 错误码定义。

  • 异步回调

没有本次设置的独立完成事件。相关屏蔽状态通知使用 YOUME_EVENT_LISTEN_OTHER_ON / YOUME_EVENT_LISTEN_OTHER_OFF,按通用事件定义处理。

示例与补充说明:

蓝图用法

在蓝图中调用 SetListenOtherVoice 蓝图节点。

image-20210813151201121

C++用法

  1. 引入头文件。(已引入可忽略)

    TEXT
    #include "YouMeTalkAPI.h"
  2. 调用 SetListenOtherVoice 接口。

    TEXT
    FString userID = " ";
    bool bOn = true;
    UYouMeTalkAPI::SetListenOtherVoice(userID, bOn);

设置用户角色

  • 语法
C++
static EYouMeErrorCode SetUserRole(EYouMeUserRole eUserRole);
  • 功能

仅支持单频道,进房成功后切换当前用户角色。

  • 参数说明

eUserRole:用户角色,使用本平台角色类型/常量,不能传无效角色。

  • 返回值

角色影响讲话与播放战歌权限;先检查同步返回值。

  • 异步回调

当前插件没有独立的角色变化事件成员,不依赖核心/Unity 的 77 事件处理角色结果。

获取用户角色

  • 语法
C++
static EYouMeUserRole GetUserRole();
  • 功能

获取用户角色(GetUserRole)。

  • 参数说明

无。

  • 返回值

同步返回本平台用户角色枚举/角色值,不是错误码。仅支持单频道,应在进房成功后查询。

  • 异步回调

无。本接口不单独返回异步完成通知。

查询频道用户列表

  • 语法
C++
static EYouMeErrorCode GetChannelUserList(const FString  channelID, int32 maxCount, bool notifyMemChange);
  • 功能

查询频道当前的用户列表, 并设置是否获取频道用户进出的通知(OnMemberChange)。(必须自己在频道中)

  • 参数说明

channelID:频道ID。

maxCount:想要获取的最大人数。-1表示获取全部列表。

notifyMemChange:其他用户进出房间时,是否要收到通知。(设置为true,自己所在频道有人进出 都会有对应回调产生,反之false就没有对应回调)

  • 返回值

返回 EYouMeErrorCode,EYouMeErrorCode::YOUME_SUCCESS 表示本次调用成功;其他值表示失败,参见 错误码定义。

  • 异步回调

通过 IYouMeTalkObserver 的 OnMemberChange/对应蓝图事件接收列表及成员变更。

蓝图回调

image-20210813184057280

C++回调

TEXT
//涉及到的主要回调事件有:
// channel:频道ID
// memberChangeJsonStr:查询获得的用户列表,或变更列表
// bUpdate: false为第一次查询,true为增量通知
virtual void OnMemberChange_Implementation(const FString& channel, const TMap<FString, FString>& listMemberChangeMap, const TArray<FChannelMemberState>& channelMemberStates, bool bUpdate) override;

备注 当bUpdate为false时,假设当前房间内用户数是curCount, 1、当传入的maxCount >= curCount时: OnMemberChange回调一次,返回房间内所有curCount个用户。 2、当传入的maxCount < curCount时,OnMemberChange回调两次: 第一次返回maxCount个用户; 第二次返回其余curCount-maxCount个用户。 3、当传入的maxCount = -1时,OnMemberChange回调两次: 第一次只返回一个用户(按照用户id排序的最小值); 第二次返回房间内剩余的curCount-1个用户。

示例与补充说明:

蓝图用法

在蓝图中调用 GetChannelUserList 蓝图节点。

image-20210813183731677

C++用法

  1. 引入头文件。(已引入可忽略)

    TEXT
    #include "YouMeTalkAPI.h"
  2. 调用 GetChannelUserList 接口。

    TEXT
    FString channelID = " ";
    int32 maxCount = 0;
    bool bNotifyMemChange = false;
    UYouMeTalkAPI::GetChannelUserList(channelID, maxCount, bNotifyMemChange);

把人踢出房间

  • 语法
C++
static EYouMeErrorCode KickOtherFromChannel(const FString pUserID, const FString pChannelID, int32 lastTime);
  • 功能

把人踢出房间。

  • 参数说明
  • pUserID:被踢的用户ID。
    • pChannelID:从哪个房间踢出(自己需要在房间)。
    • lastTime:踢出后,多长时间内不允许再次进入(单位:秒)。
  • 返回值

返回 EYouMeErrorCode,EYouMeErrorCode::YOUME_SUCCESS 表示请求已受理;其他值表示失败,参见 错误码定义。

  • 异步回调

通过 IYouMeTalkObserver::OnEvent(蓝图 EventOnEvent) 接收:

  • YOUME_EVENT_KICK_RESULT:踢人方收到操作结果,param 为被踢者 ID。
  • YOUME_EVENT_KICK_NOTIFY:被踢方收到通知并退出频道;param 携带踢人者 ID、原因及被禁时长。

回调示例:

蓝图回调

image-20210813184740399

image-20210817164346586

C++回调

TEXT
//涉及到的主要回调事件有:
// YOUME_EVENT_KICK_RESULT  - 踢人方收到,发送消息的结果回调,param为被踢者ID
// YOUME_EVENT_KICK_NOTIFY - 被踢方收到,被踢通知,会自动退出所在频道。param: (踢人者ID,被踢原因,被禁时间)
virtual void OnEvent_Implementation(const EYouMeEvent event, const EYouMeErrorCode error, const FString& channel, const FString& param) override;

示例与补充说明:

蓝图用法

在蓝图中调用 KickOtherfromChannel 蓝图节点。

image-20210707103316119

C++用法

  1. 引入头文件。(已引入可忽略)

    TEXT
    #include "YouMeTalkAPI.h"
  2. 调用 KickOtherfromChannel 接口。

    TEXT
    FString pUserID = "";
    FString pChannelID = "";
    int32 lastTime = 10;
    
    UYouMeTalkAPI::KickOtherfromChannel(pUserID, pChannelID, lastTime);

设备状态管理

切换语音输出设备

  • 语法
C++
static EYouMeErrorCode SetOutputToSpeaker(bool bOutputToSpeaker);
  • 功能

默认输出到扬声器,在加入房间成功后设置。(iOS受系统限制,如果已释放麦克风则无法切换到听筒;Android需要在app的AndroidManifest文件中添加android.permission.MODIFY_AUDIO_SETTINGS权限)

  • 参数说明
  • bOutputToSpeaker:true——输出到扬声器,false——输出到听筒。
  • 返回值

返回 EYouMeErrorCode,EYouMeErrorCode::YOUME_SUCCESS 表示请求已受理;其他值表示失败,参见 错误码定义。

  • 异步回调

通过 IYouMeTalkObserver::OnEvent(蓝图 EventOnEvent) 接收:

  • YOUME_EVENT_SWITCH_OUTPUT:语音输出设备切换结果,按 err 判断。

示例与补充说明:

蓝图用法

在蓝图中调用 SetOutputToSpeaker 蓝图节点。

image-20210813113754397

C++用法

  1. 引入头文件。(已引入可忽略)

    TEXT
    #include "YouMeTalkAPI.h"
  2. 调用 SetOutputToSpeaker 接口。

    TEXT
    bool bOutputToSpeaker = true;
    UYouMeTalkAPI::SetOutputToSpeaker(bOutputToSpeaker);

设置扬声器状态

  • 语法
C++
static void SetSpeakerMute(bool mute);
  • 功能

设置本机扬声器静音状态,加入频道成功后配置;设备状态异步生效。

  • 参数说明

mute:true——关闭扬声器,false——开启扬声器。

  • 返回值

无(void)。

  • 异步回调

通过 IYouMeTalkObserver::OnEvent(蓝图 EventOnEvent) 接收:

  • YOUME_EVENT_LOCAL_SPEAKER_ON:本机扬声器开启状态通知,按 err 判断结果。
  • YOUME_EVENT_LOCAL_SPEAKER_OFF:本机扬声器关闭状态通知,按 err 判断结果。

回调示例:

蓝图回调:

image-20210813111624602

image-20210818174159793

C++回调:

TEXT
//涉及到的主要回调事件有:
//YOUME_EVENT_LOCAL_SPEAKER_ON - 自己扬声器打开
//YOUME_EVENT_LOCAL_SPEAKER_OFF - 自己扬声器关闭
virtual void OnEvent_Implementation(const EYouMeEvent event, const EYouMeErrorCode error, const FString& channel, const FString& param) override;

示例与补充说明:

蓝图用法

image-20210706175311140

C++用法

  1. 引入头文件。(已引入可忽略)

    TEXT
    #include "YouMeTalkAPI.h"
  2. 调用 SetSpeakerMute 接口。

    TEXT
    bool mute = true;UYouMeTalkAPI::SetSpeakerMute(mute);

获取扬声器状态

  • 语法
C++
static bool GetSpeakerMute();
  • 功能

同步读取 SDK 当前设备静音状态配置。设备开关异步生效,设置后立即查询不代表硬件已完成切换。

  • 参数说明

无。

  • 返回值

true 表示设备静音/关闭,false 表示开启。读取 SDK 当前状态,不保证硬件已完成切换。

  • 异步回调

无。本接口不单独返回异步完成通知。

示例与补充说明:

蓝图用法

image-20210813114342420

C++用法

  1. 引入头文件。(已引入可忽略)

    TEXT
    #include "YouMeTalkAPI.h"
  2. 调用 GetSpeakerMute 接口。

    TEXT
    bool bSpeakerMute = UYouMeTalkAPI::GetSpeakerMute();

此接口同步返回当前静音配置,不等待单独的查询回调;设备状态切换可能稍后生效,不应仅通过设置后的立即查询判断硬件已完成切换。

设置麦克风状态

  • 语法
C++
static void SetMicrophoneMute(bool mute);
  • 功能

设置本机麦克风静音状态,加入频道成功后配置;设备状态异步生效。

  • 参数说明

mute:true——关闭麦克风,false——开启麦克风。

  • 返回值

无(void)。

  • 异步回调

通过 IYouMeTalkObserver::OnEvent(蓝图 EventOnEvent) 接收:

  • YOUME_EVENT_LOCAL_MIC_ON:本机麦克风开启状态通知,按 err 判断结果。
  • YOUME_EVENT_LOCAL_MIC_OFF:本机麦克风关闭状态通知,按 err 判断结果。

回调示例:

蓝图回调:

image-20210813111624602

image-20210818174521412

C++回调:

TEXT
//涉及到的主要回调事件有:
//YOUME_EVENT_LOCAL_MIC_ON - 自己麦克风打开
//YOUME_EVENT_LOCAL_MIC_OFF - 自己麦克风关闭
virtual void OnEvent_Implementation(const EYouMeEvent event, const EYouMeErrorCode error, const FString& channel, const FString& param) override;

示例与补充说明:

蓝图用法

image-20210813114738223

C++用法

  1. 引入头文件。(已引入可忽略)

    TEXT
    #include "YouMeTalkAPI.h"
  2. 调用 SetMicrophoneMute 接口。

    TEXT
    bool mute = true;UYouMeTalkAPI::SetMicrophoneMute(mute);

获取麦克风状态

  • 语法
C++
static bool GetMicrophoneMute();
  • 功能

同步读取 SDK 当前设备静音状态配置。设备开关异步生效,设置后立即查询不代表硬件已完成切换。

  • 参数说明

无。

  • 返回值

true 表示设备静音/关闭,false 表示开启。读取 SDK 当前状态,不保证硬件已完成切换。

  • 异步回调

无。本接口不单独返回异步完成通知。

示例与补充说明:

蓝图用法

image-20210813114939831

C++用法

  1. 引入头文件。(已引入可忽略)

    TEXT
    #include "YouMeTalkAPI.h"
  2. 调用 GetMicrophoneMute 接口。

    TEXT
    bool bMicrophoneMute = UYouMeTalkAPI::GetMicrophoneMute();

此接口同步返回当前静音配置,不等待单独的查询回调;设备状态切换可能稍后生效,不应仅通过设置后的立即查询判断硬件已完成切换。

设置是否通知别人麦克风和扬声器的开关

  • 语法
C++
static void SetAutoSendStatus(bool bAutoSend);
  • 功能

设置是否通知别人,自己麦克风和扬声器的开关状态。(建议进入频道后调用,设置后,其他当前在同一个频道的用户可以获取该用户的麦克风和扬声器的开关状态。 对应回调事件 YouMeEvent.YOUME_EVENT_OTHERS_MIC_ON, YouMeEvent.YOUME_EVENT_OTHERS_MIC_OFF, YouMeEvent.YOUME_EVENT_OTHERS_SPEAKER_ON, YouMeEvent.YOUME_EVENT_OTHERS_SPEAKER_OFF, 事件对应具体详细请参考状态码。)

  • 参数说明

bAutoSend:True -- notify, false -- not notify

  • 返回值

无(void)。

  • 异步回调

设置本身没有独立完成事件;开启后同频道其他用户可接收 YOUME_EVENT_OTHERS_MIC_ON/OFF、YOUME_EVENT_OTHERS_SPEAKER_ON/OFF 状态通知。

示例与补充说明:

蓝图用法

image-20210813115257933

C++用法

  1. 引入头文件。(已引入可忽略)

    TEXT
    #include "YouMeTalkAPI.h"
  2. 调用 SetAutoSendStatus 接口。

    TEXT
    UYouMeTalkAPI::SetAutoSendStatus();

设置扬声器音量增益

  • 语法
C++
static void SetVolume(const int32 &uiVolume);
  • 功能

设置扬声器音量增益,实际扬声器音量 = 扬声器音量增益 x 系统音量;百分比 100 对应乘法系数 1。

  • 参数说明

uiVolume:扬声器音量增益,0~100(百分比),100 对应乘法系数 1;实际扬声器音量 = 扬声器音量增益 x 系统音量。

  • 返回值

无(void)。

  • 异步回调

无。本接口不单独返回异步完成通知。

获取扬声器音量增益

  • 语法
C++
static int32 GetVolume();
  • 功能

获取 SDK 当前扬声器音量增益。实际扬声器音量 = 扬声器音量增益 x 系统音量;100% 增益对应乘法系数 1。

  • 参数说明

无。

  • 返回值

返回 SDK 当前扬声器音量增益,范围 0~100(百分比),不是实际扬声器音量。

  • 异步回调

无。本接口不单独返回异步完成通知。

释放麦克风

  • 语法
C++
static bool ReleaseMicSync();
  • 功能

调用后完成麦克风释放,只是为了方便使用 IM 的录音接口时切换麦克风使用权。

  • 参数说明

无。

  • 返回值

返回true,表示释放成功,可以认为只要在占用麦克风的状态肯定能释放成功。

  • 异步回调

无。本接口不单独返回异步完成通知。

示例与补充说明:

蓝图用法

在蓝图中调用 ReleaseMicSync 蓝图节点。

image-20210813152042968

C++用法

  1. 引入头文件。(已引入可忽略)

    TEXT
    #include "YouMeTalkAPI.h"
  2. 调用 ReleaseMicSync 接口。

    TEXT
    UYouMeTalkAPI::ReleaseMicSync(pUserID, bOtherMicMute);

恢复麦克风录音状态

  • 语法
C++
static bool ResumeMicSync();
  • 功能

调用后恢复麦克风到释放前的状态,只是为了方便使用 IM 的录音接口时切换麦克风使用权。

  • 参数说明

无。

  • 返回值

返回true,表示恢复成功,可以认为只要在释放的状态,肯定可以恢复成功。

  • 异步回调

无。本接口不单独返回异步完成通知。

示例与补充说明:

蓝图用法

在蓝图中调用 ResumeMicSync 蓝图节点。

image-20210813152343601

C++用法

  1. 引入头文件。(已引入可忽略)

    TEXT
    #include "YouMeTalkAPI.h"
  2. 调用 ReleaseMicSync 接口。

    TEXT
    UYouMeTalkAPI::ResumeMicSync();

设置麦克风音量增益

  • 语法
C++
static void SetMicVolume(const int32 &uiVolume);
  • 功能

设置麦克风音量增益,0 为无声,100 为正常值,大于 100 为增益、小于 100 为减益;过度放大可能失真。

  • 参数说明

uiVolume:麦克风音量增益,0~1000,100 为正常值,0 为无声;过度放大可能失真。

  • 返回值

无(void)。

  • 异步回调

无。本接口不单独返回异步完成通知。

获取麦克风音量增益

  • 语法
C++
static int32 GetMicVolume();
  • 功能

获取麦克风音量增益配置,不是实时讲话音量;实时讲话音量通过相应的音量回调获取。

  • 参数说明

无。

  • 返回值

返回当前麦克风音量增益,范围 0~1000,100 为正常值,不是实时说话音量。

  • 异步回调

无。本接口不单独返回异步完成通知。

控制他人麦克风

  • 语法
C++
static EYouMeErrorCode SetOtherMicMute(const FString pUserID, bool mute);
  • 功能

控制他人的麦克风状态(也就是关闭或者开启他人的麦克风)。

  • 参数说明

pUserID:要控制的用户ID mute:是否静音。true:静音别人的扬声器,false:开启别人的扬声器

  • 返回值

返回 EYouMeErrorCode,EYouMeErrorCode::YOUME_SUCCESS 表示本次调用成功;其他值表示失败,参见 错误码定义。

  • 异步回调

没有调用方的独立完成事件;被控制端通过通用事件 YOUME_EVENT_MIC_CTR_ON / YOUME_EVENT_MIC_CTR_OFF 接收麦克风控制通知。

示例与补充说明:

蓝图用法

在蓝图中调用 SetOtherMicMute 蓝图节点。

image-20210813144502145

C++用法

  1. 引入头文件。(已引入可忽略)

    TEXT
    #include "YouMeTalkAPI.h"
  2. 调用 SetOtherMicMute 接口。

    TEXT
    FString pUserID = " ";
    bool bOtherMicMute = true;
    UYouMeTalkAPI::SetOtherMicMute(pUserID, bOtherMicMute);

控制他人扬声器

  • 语法
C++
static EYouMeErrorCode SetOtherSpeakerMute(const FString pUserID, bool mute);
  • 功能

控制他人的扬声器状态(也就是关闭或者开启他人的扬声器)。

  • 参数说明

pUserID:要控制的用户ID。 mute:是否静音。true:静音别人的扬声器,false:开启别人的扬声器。

  • 返回值

返回 EYouMeErrorCode,EYouMeErrorCode::YOUME_SUCCESS 表示本次调用成功;其他值表示失败,参见 错误码定义。

  • 异步回调

没有调用方的独立完成事件;被控制端通过通用事件 YOUME_EVENT_SPEAKER_CTR_ON / YOUME_EVENT_SPEAKER_CTR_OFF 接收扬声器控制通知。

示例与补充说明:

蓝图用法

在蓝图中调用 SetOtherSpeakerMute 蓝图节点。

image-20210813150343954

C++用法

  1. 引入头文件。(已引入可忽略)

    TEXT
    #include "YouMeTalkAPI.h"
  2. 调用 SetOtherSpeakerMute 接口。

    TEXT
    FString pUserID = " ";
    bool bOtherMicMute = true;
    UYouMeTalkAPI::SetOtherSpeakerMute(pUserID, bOtherMicMute);

设置当麦克风静音时,是否释放麦克风设备

  • 语法
C++
static EYouMeErrorCode SetReleaseMicWhenMute(bool enabled);
  • 功能

设置当麦克风静音时,是否释放麦克风设备(需要在初始化成功后,加入房间之前调用)。

  • 参数说明

enabled: true--当麦克风静音时,释放麦克风设备,此时允许第三方模块使用麦克风设备录音。在Android和iOS上,语音由通话音轨切换到媒体音轨,回归到双声道高音质输出体验(如果媒体音量和通话音量不同时切换会产生音量变大变小的感觉);false--不管麦克风是否静音,麦克风设备都会被占用。

  • 返回值

返回 EYouMeErrorCode,EYouMeErrorCode::YOUME_SUCCESS 表示本次调用成功;其他值表示失败,参见 错误码定义。

  • 异步回调

无。本接口不单独返回异步完成通知。

示例与补充说明:

蓝图用法

在蓝图中调用 SetReleaseMicWhenMute 蓝图节点。

image-20210813150757060

C++用法

  1. 引入头文件。(已引入可忽略)

    TEXT
    #include "YouMeTalkAPI.h"
  2. 调用 SetReleaseMicWhenMute 接口。

    TEXT
    bool bReleaseMicWhenMute = true;
    UYouMeTalkAPI::SetReleaseMicWhenMute(bReleaseMicWhenMute);

设置插入耳机时,是否自动退出系统通话模式

  • 语法
C++
static EYouMeErrorCode SetExitCommModeWhenHeadsetPlugin(bool enabled);
  • 功能

设置插入耳机时,是否自动退出系统通话模式(禁用手机系统硬件信号前处理) 系统提供的前处理效果包括回声消除、自动增益等,有助于抑制战歌等回声噪音,减少系统资源消耗,对Windows系统无效。 默认为false,在初始化之后、加入房间之前调用。

  • 参数说明

enabled: true--当插入耳机时,自动禁用系统硬件信号前处理,拔出时还原;false--插拔耳机不做处理。

  • 返回值

返回 EYouMeErrorCode,EYouMeErrorCode::YOUME_SUCCESS 表示本次调用成功;其他值表示失败,参见 错误码定义。

  • 异步回调

无。本接口不单独返回异步完成通知。

示例与补充说明:

蓝图用法

在蓝图中调用 SetExitCommModeWhenHeadsetPlugin 蓝图节点。

image-20210813151548943

C++用法

  1. 引入头文件。(已引入可忽略)

    TEXT
    #include "YouMeTalkAPI.h"
  2. 调用 SetExitCommModeWhenHeadsetPlugin 接口。

    TEXT
    bool bEnabled = true;
    UYouMeTalkAPI::SetExitCommModeWhenHeadsetPlugin(bEnabled);

说话及音量检测

设置语音检测

  • 语法
C++
static EYouMeErrorCode SetVadCallbackEnabled(bool enabled);
  • 功能

设置是否开启语音检测回调,开启后频道内有人正在讲话与结束讲话都会发起相应回调通知。(需要游密后台配置开启,该状态值在加入房间成功后设置才有效,并且需要频道内所有用户都设置才生效。)

  • 参数说明
  • bEnabled:true——打开,false——关闭。

enabled:true 开启本项功能,false 关闭。

  • 返回值

如果成功则返回YOUME_SUCCESS,其它具体参见YouMeErrorCode类型定义。

  • 异步回调

通过 IYouMeTalkObserver::OnEvent(蓝图 EventOnEvent) 接收:

  • YOUME_EVENT_OTHERS_VOICE_ON:其他用户进入讲话状态。
  • YOUME_EVENT_OTHERS_VOICE_OFF:其他用户进入静默状态。

回调示例:

蓝图回调:

image-20210813111624602

image-20210818174159793

C++回调:

TEXT
//涉及到的主要回调事件有:
//YOUME_EVENT_OTHERS_VOICE_ON - 其他用户进入讲话状态
//YOUME_EVENT_OTHERS_VOICE_OFF - 其他用户进入静默状态
virtual void OnEvent_Implementation(const EYouMeEvent event, const EYouMeErrorCode error, const FString& channel, const FString& param) override;

示例与补充说明:

蓝图用法

在蓝图中调用 SetVadCallbackEnabled 蓝图节点。

image-20210813143707381

C++用法

  1. 引入头文件。(已引入可忽略)

    TEXT
    #include "YouMeTalkAPI.h"
  2. 调用 PlayBackgroundMusic 接口。

    TEXT
    bool bVadCallbackEnabled = true;
    UYouMeTalkAPI::SetVadCallbackEnabled(bVadCallbackEnabled);

设置本地讲话音量级别回调

  • 语法
C++
static EYouMeErrorCode Talk_SetMicLevelCallback(int32 maxLevel);
  • 功能

设置是否开启监听自己讲话音量回调, 并设置相应的参数。

  • 参数说明
  • maxLevel:音量最大时对应的级别,需大于1,最大可设100。根据实际需要设置小于100的值可以减少回调的次数(注意设置较高的值可能会产生大量回调,特别在Unity上会影响其它事件到达,一般建议不超过30)。比如你只在UI上呈现10级的音量变化,那就设10就可以了。设 0 表示关闭回调。
  • 返回值

如果成功则返回YOUME_SUCCESS,其它具体参见YouMeErrorCode类型定义。

  • 异步回调

通过插件通用事件接收 YOUME_EVENT_MY_MIC_LEVEL;当前 EYouMeErrorCode 转换不能完整保留原始音量数值,不能据此读取实时音量。

示例与补充说明:

蓝图用法

在蓝图中调用 Talk_SetMicLevelCallback 蓝图节点。

image-20210813143707381

C++用法

  1. 引入头文件。(已引入可忽略)

    TEXT
    #include "YouMeTalkAPI.h"
  2. 调用 Talk_SetMicLevelCallback 接口。

    TEXT
    bool bEnabled = true;
    UYouMeTalkAPI::Talk_SetMicLevelCallback(bEnabled);

通话控制

暂停通话

  • 语法
C++
static EYouMeErrorCode PauseChannel();
  • 功能

暂停通话,释放对麦克风等设备资源的占用。当需要用第三方模块临时录音时,可调用这个接口。

  • 参数说明

无。

  • 返回值

返回 EYouMeErrorCode,EYouMeErrorCode::YOUME_SUCCESS 表示请求已受理;其他值表示失败,参见 错误码定义。

  • 异步回调

通过 IYouMeTalkObserver::OnEvent(蓝图 EventOnEvent) 接收:

  • YOUME_EVENT_PAUSED:暂停语音频道完成。

回调示例:

蓝图回调

image-20210813142543318

C++回调

TEXT
//涉及到的主要回调事件有:
//YOUME_EVENT_PAUSED - 暂停语音频道完成
virtual void OnEvent_Implementation(const EYouMeEvent event, const EYouMeErrorCode error, const FString& channel, const FString& param) override;

示例与补充说明:

蓝图用法

在蓝图中调用 PauseChannel 蓝图节点。

image-20210706181707718

C++用法

  1. 引入头文件。(已引入可忽略)

    TEXT
    #include "YouMeTalkAPI.h"
  2. 调用 PauseChannel 接口。

    TEXT
    UYouMeTalkAPI::PauseChannel();

恢复通话

  • 语法
C++
static EYouMeErrorCode ResumeChannel();
  • 功能

恢复通话,调用PauseChannel暂停通话后,可调用这个接口恢复通话。(恢复通话后的麦克风的状态是和重新恢复通话时的角色相关,不一定与PauseChannel暂停通话时的麦克风状态一致)

  • 参数说明

无。

  • 返回值

返回 EYouMeErrorCode,EYouMeErrorCode::YOUME_SUCCESS 表示请求已受理;其他值表示失败,参见 错误码定义。

  • 异步回调

通过 IYouMeTalkObserver::OnEvent(蓝图 EventOnEvent) 接收:

  • YOUME_EVENT_RESUMED:恢复语音频道完成。

示例与补充说明:

蓝图用法

在蓝图中调用 ResumeChannel 蓝图节点。

image-20210706182043884

C++用法

  1. 引入头文件。(已引入可忽略)

    TEXT
    #include "YouMeTalkAPI.h"
  2. 调用 ResumeChannel 接口。

    TEXT
    UYouMeTalkAPI::ResumeChannel();

抢麦连麦

抢麦相关设置

  • 语法
C++
EYouMeErrorCode SetGrabMicOption(const FString pChannelID, int32 mode, int32 maxAllowCount, int32 maxTalkTime, int32 voteTime);
  • 功能

抢麦相关设置(抢麦活动发起前调用此接口进行设置)。

  • 参数说明

pChannelID:抢麦活动的频道id。

mode:抢麦模式(1:先到先得模式;2:按权重分配模式)。先到先得模式中,抢麦活动会持续,用户可以继续抢其他用户释放的麦。

maxAllowCount:允许能抢到麦的最大人数(要大于0)。

maxTalkTime:允许抢到麦后使用麦的最大时间(单位:秒,要大于0)。

voteTime:抢麦仲裁时间(单位:秒,要大于0),过了X秒后服务器将进行仲裁谁最终获得麦(仅在按权重分配模式下有效)。

  • 返回值

如果成功则返回YOUME_SUCCESS。其它返回值请参考YouMeErrorCode类型定义。

  • 异步回调

无。本接口不单独返回异步完成通知。

发起抢麦活动

  • 语法
C++
EYouMeErrorCode StartGrabMicAction(const FString pChannelID, const FString pContent);
  • 功能

抢麦相关设置(抢麦活动发起前调用此接口进行设置)。

  • 参数说明

pChannelID:抢麦活动的频道id。

pContent:游戏传入的上下文内容,通知回调会传回此内容(目前只支持纯文本格式)。

  • 返回值

如果成功则返回YOUME_SUCCESS。其它返回值请参考YouMeErrorCode类型定义。

  • 异步回调

通过 IYouMeTalkObserver::OnEvent(蓝图 EventOnEvent) 接收:

  • YOUME_EVENT_GRABMIC_START_OK:发起抢麦活动成功。
  • YOUME_EVENT_GRABMIC_START_FAILED:发起失败。
  • YOUME_EVENT_GRABMIC_NOTIFY_START:频道内的抢麦活动开始通知。

停止抢麦活动

  • 语法
C++
EYouMeErrorCode StopGrabMicAction(const FString pChannelID, const FString pContent);
  • 功能

停止抢麦活动。先到先得模式下,抢麦成功后,调用停止抢麦不会把当前抢麦人踢下麦。

  • 参数说明

pChannelID:抢麦活动的频道id。

pContent:游戏传入的上下文内容,通知回调会传回此内容(目前只支持纯文本格式)。

  • 返回值

如果成功则返回YOUME_SUCCESS。其它返回值请参考YouMeErrorCode类型定义。

  • 异步回调

通过 IYouMeTalkObserver::OnEvent(蓝图 EventOnEvent) 接收:

  • YOUME_EVENT_GRABMIC_STOP_OK:停止抢麦活动成功。
  • YOUME_EVENT_GRABMIC_STOP_FAILED:停止失败。
  • YOUME_EVENT_GRABMIC_NOTIFY_STOP:频道内的抢麦活动结束通知。

发起抢麦请求

  • 语法
C++
EYouMeErrorCode RequestGrabMic(const FString pChannelID, int32 score, bool isAutoOpenMic, const FString pContent);
  • 功能

发起抢麦请求。

  • 参数说明

pChannelID:抢麦的频道id。

score:积分(权重分配模式下有效,游戏根据自己实际情况设置)。

isAutoOpenMic:抢麦成功后是否自动开启麦克风权限。

pContent:游戏传入的上下文内容,通知回调会传回此内容(目前只支持纯文本格式)。

  • 返回值

如果成功则返回YOUME_SUCCESS。其它返回值请参考YouMeErrorCode类型定义。

  • 异步回调

通过 IYouMeTalkObserver::OnEvent(蓝图 EventOnEvent) 接收:

  • YOUME_EVENT_GRABMIC_REQUEST_OK:抢麦成功,可以讲话。
  • YOUME_EVENT_GRABMIC_REQUEST_FAILED:抢麦失败。
  • YOUME_EVENT_GRABMIC_REQUEST_WAIT:进入等待队列,仅权重模式产生。
  • YOUME_EVENT_GRABMIC_ENDMIC:因使用时长到期或其他原因不再占用麦。

释放抢到的麦

  • 语法
C++
EYouMeErrorCode ReleaseGrabMic(const FString pChannelID);
  • 功能

释放抢到的麦。

  • 参数说明

pChannelID:抢麦的频道id。

  • 返回值

如果成功则返回YOUME_SUCCESS。其它返回值请参考YouMeErrorCode类型定义。

  • 异步回调

通过 IYouMeTalkObserver::OnEvent(蓝图 EventOnEvent) 接收:

  • YOUME_EVENT_GRABMIC_RELEASE_OK:释放麦成功。
  • YOUME_EVENT_GRABMIC_RELEASE_FAILED:释放麦失败。

连麦相关设置

  • 语法
C++
EYouMeErrorCode SetInviteMicOption(const FString pChannelID, int32 waitTimeout, int32 maxTalkTime);
  • 功能

连麦相关设置(角色是频道的管理者或者主播时调用此接口进行频道内的连麦设置)。

  • 参数说明

pChannelID:连麦的频道id。 waitTimeout:等待对方响应超时时间(秒)。 maxTalkTime:最大通话时间(秒)。

  • 返回值

如果成功则返回YOUME_SUCCESS。其它返回值请参考YouMeErrorCode类型定义。

  • 异步回调

通过 IYouMeTalkObserver::OnEvent(蓝图 EventOnEvent) 接收:

  • YOUME_EVENT_INVITEMIC_SETOPT_OK:连麦设置成功。
  • YOUME_EVENT_INVITEMIC_SETOPT_FAILED:连麦设置失败。

发起连麦请求

  • 语法
C++
EYouMeErrorCode RequestInviteMic(const FString pChannelID, const FString pUserID, const FString pContent);
  • 功能

发起与某人的连麦请求(主动呼叫)。

  • 参数说明

pChannelID:连麦的频道id。

pUserID:被叫方的用户id。

pContent:游戏传入的上下文内容,通知回调会传回此内容(目前只支持纯文本格式)。

  • 返回值

如果成功则返回YOUME_SUCCESS。其它返回值请参考YouMeErrorCode类型定义。

  • 异步回调

通过 IYouMeTalkObserver::OnEvent(蓝图 EventOnEvent) 接收:

  • YOUME_EVENT_INVITEMIC_REQUEST_OK:请求已发出,仍需等待对方回应。
  • YOUME_EVENT_INVITEMIC_REQUEST_FAILED:请求失败。
  • YOUME_EVENT_INVITEMIC_NOTIFY_ANSWER:对方回应同意、拒绝或超时。
  • YOUME_EVENT_INVITEMIC_CAN_TALK:双方可以通话。

回应连麦请求

  • 语法
C++
EYouMeErrorCode ResponseInviteMic(const FString pUserID, bool isAccept, const FString pContent);
  • 功能

对连麦请求做出回应(被动应答)。

  • 参数说明

pUserID:主叫方的用户id。

isAccept:是否同意连麦。

pContent:游戏传入的上下文内容,通知回调会传回此内容(目前只支持纯文本格式)。

  • 返回值

如果成功则返回YOUME_SUCCESS。其它返回值请参考YouMeErrorCode类型定义。

  • 异步回调

通过 IYouMeTalkObserver::OnEvent(蓝图 EventOnEvent) 接收:

  • YOUME_EVENT_INVITEMIC_RESPONSE_OK:回应请求处理成功;err=YOUME_ERROR_INVITEMIC_REJECT 表示拒绝。
  • YOUME_EVENT_INVITEMIC_RESPONSE_FAILED:回应请求处理失败。
  • YOUME_EVENT_INVITEMIC_CAN_TALK:对方被接受后,双方可以通话。

停止连麦

  • 语法
C++
EYouMeErrorCode StopInviteMic();
  • 功能

停止连麦。

  • 参数说明

无。

  • 返回值

如果成功则返回YOUME_SUCCESS。其它返回值请参考YouMeErrorCode类型定义。

  • 异步回调

通过 IYouMeTalkObserver::OnEvent(蓝图 EventOnEvent) 接收:

  • YOUME_EVENT_INVITEMIC_STOP_OK:停止连麦成功。
  • YOUME_EVENT_INVITEMIC_STOP_FAILED:停止连麦失败。
  • YOUME_EVENT_INVITEMIC_CANNOT_TALK:双方已不能继续连麦通话。
  • YOUME_EVENT_INVITEMIC_NOTIFY_CANCEL:对方结束连麦或连麦时长到期的通知。

战歌管理

播放战歌

  • 语法
C++
static EYouMeErrorCode PlayBackgroundMusic(const FString pFilePath, bool bRepeat);
  • 功能

播放指定的音乐文件。播放的音乐将会通过扬声器输出,并和语音混合后发送给接收方。这个功能必须进入频道传入身份为主播/指挥才能使用。建议使用mp3格式的文件,目前wav、flac格式的文件不支持。(windows程序目前只支持win32程序,win64程序暂不支持)

  • 参数说明

pFilePath:音乐文件的路径。 bRepeat:是否重复播放,true——重复播放,false——只播放一次就停止播放。

  • 返回值

返回 EYouMeErrorCode,EYouMeErrorCode::YOUME_SUCCESS 表示本次调用成功;其他值表示失败,参见 错误码定义。

  • 异步回调

通过 IYouMeTalkObserver::OnEvent(蓝图 EventOnEvent) 接收:

  • YOUME_EVENT_BGM_STOPPED:战歌播放结束。
  • YOUME_EVENT_BGM_FAILED:战歌播放失败。

回调示例:

蓝图回调

image-20210813154843885

C++回调

TEXT
//涉及到的主要回调事件有:
//YOUME_EVENT_BGM_STOPPED - 通知战歌播放结束
//YOUME_EVENT_BGM_FAILED - 通知战歌播放失败
virtual void OnEvent_Implementation(const EYouMeEvent event, const EYouMeErrorCode error, const FString& channel, const FString& param) override;

示例与补充说明:

蓝图用法

在蓝图中调用 PlayBackgroundMusic 蓝图节点。

image-20210813153523694

C++用法

  1. 引入头文件。(已引入可忽略)

    TEXT
    #include "YouMeTalkAPI.h"
  2. 调用 PlayBackgroundMusic 接口。

    TEXT
    FString pFilePath = " ";
    bool bRepeat = true;
    UYouMeTalkAPI::PlayBackgroundMusic(pFilePath, bRepeat);

停止播放战歌

  • 语法
C++
static EYouMeErrorCode StopBackgroundMusic();
  • 功能

停止播放当前正在播放的战歌。 这是一个同步调用接口,函数返回时,音乐播放也就停止了。

  • 参数说明

无。

  • 返回值

如果成功(表明成功设置了战歌的音量)返回YOUME_SUCCESS,否则返回错误码,具体请参考YouMeErrorCode类型定义。

  • 异步回调

无。本接口不单独返回异步完成通知。

示例与补充说明:

蓝图用法

在蓝图中调用 StopBackgroundMusic 蓝图节点。

image-20210706184723391

C++用法

  1. 引入头文件。(已引入可忽略)

    TEXT
    #include "YouMeTalkAPI.h"
  2. 调用 StopBackgroundMusic 接口。

    TEXT
    UYouMeTalkAPI::StopBackgroundMusic();

设置战歌播放音量

  • 语法
C++
static EYouMeErrorCode SetBackgroundMusicVolume(int32 vol);
  • 功能

设定战歌的音量。这个接口用于调整战歌和语音之间的相对音量,使得战歌和语音混合听起来协调。 这是一个同步调用接口。

  • 参数说明

vol:战歌的音量,范围 [0-100]。

  • 返回值

如果成功(表明成功设置了战歌的音量)返回YOUME_SUCCESS,否则返回错误码,具体请参考YouMeErrorCode类型定义。

  • 异步回调

无。本接口不单独返回异步完成通知。

示例与补充说明:

蓝图用法

在蓝图中调用 SetBackgroundMusicVolume 蓝图节点。

image-20210706185529784

C++用法

  1. 引入头文件。(已引入可忽略)

    TEXT
    #include "YouMeTalkAPI.h"
  2. 调用 SetBackgroundMusicVolume 接口。

    TEXT
    int32 vol = 50;
    UYouMeTalkAPI::SetBackgroundMusicVolume(vol);

设置监听

  • 语法
C++
static EYouMeErrorCode SetHeadsetMonitorOn(bool micEnabled, bool bgmEnabled = true);
  • 功能

设置是否用耳机监听本机的麦克风声音或战歌。这是一个同步调用接口,进入频道时使用主播/指挥身份才能使用。

  • 参数说明

micEnabled:是否监听麦克风 true 监听,false 不监听。

bgmEnabled:是否监听战歌 true 监听,false 不监听。

  • 返回值

如果成功则返回YOUME_SUCCESS,其它具体参见YouMeErrorCode类型定义。

  • 异步回调

无。本接口不单独返回异步完成通知。

示例与补充说明:

蓝图用法

在蓝图中调用 SetHeadsetMonitorOn 蓝图节点。

image-20210813155327007

C++用法

  1. 引入头文件。(已引入可忽略)

    TEXT
    #include "YouMeTalkAPI.h"
  2. 调用 SetHeadsetMonitorOn 接口。

    TEXT
    bool bMicEnabled = false;
    bool bBgmEnabled = false;
    UYouMeTalkAPI::SetHeadsetMonitorOn(bMicEnabled, bBgmEnabled);

混响音效

设置混响音效

  • 语法
C++
static EYouMeErrorCode SetReverbEnabled(bool enabled);
  • 功能

设置是否开启混响音效,这个主要对主播/指挥有用。

  • 参数说明

bEnabled:true——打开,false——关闭。

enabled:true 开启本项功能,false 关闭。

  • 返回值

如果成功则返回YOUME_SUCCESS,其它具体参见YouMeErrorCode类型定义。

  • 异步回调

无。本接口不单独返回异步完成通知。

示例与补充说明:

蓝图用法

在蓝图中调用 SetReverbEnabled 蓝图节点。

image-20210813160448447

C++用法

  1. 引入头文件。(已引入可忽略)

    TEXT
    #include "YouMeTalkAPI.h"
  2. 调用 SetReverbEnabled 接口。

    TEXT
    bool bEnabled = false;
    UYouMeTalkAPI::SetReverbEnabled(bEnabled);

设置混响音效类型

  • 语法
C++
static EYouMeErrorCode SetAudioEffectType(int32 effectType);
  • 功能

具体参见混响音效类型定义。

  • 参数说明

effectType:混响音效类型;具体数值见本平台状态码页的混响音效类型定义。

具体参见混响音效类型定义。

  • 返回值

设置混响音效类型,参数传整数类型值,返回平台错误码。

  • 异步回调

无。本接口不单独返回异步完成通知。

变声音调

获取变声音调

  • 语法
C++
static float GetSoundtouchPitchSemiTones();
  • 功能

获取变声音调(增值服务,需要后台配置开启)。

  • 参数说明

无。

  • 返回值

返回当前变声音调值,范围 -12~+12。

  • 异步回调

无。本接口不单独返回异步完成通知。

示例与补充说明:

蓝图用法

在蓝图中调用 GetSoundtouchPitchSemiTones 蓝图节点。

image-20210813155725396

C++用法

  1. 引入头文件。(已引入可忽略)

    TEXT
    #include "YouMeTalkAPI.h"
  2. 调用 GetSoundtouchPitchSemiTones 接口。

    TEXT
    UYouMeTalkAPI::GetSoundtouchPitchSemiTones();

设置变声音调

  • 语法
C++
static EYouMeErrorCode SetSoundtouchPitchSemiTones(float fPitchSemiTones);
  • 功能

设置变声音调(增值服务,需要后台配置开启),需在进入房间成功后调用,仅对当前房间有效,退出房间时重置为0。目前该接口在windows中只支持win32。

  • 参数说明

fPitchSemiTones:变声音调的值,范围[-12 ~ +12]。

  • 返回值

如果成功则返回YOUME_SUCCESS,其它具体参见YouMeErrorCode类型定义。

  • 异步回调

无。本接口不单独返回异步完成通知。

示例与补充说明:

蓝图用法

在蓝图中调用 SetSoundtouchPitchSemiTones 蓝图节点。

image-20210813155936408

C++用法

  1. 引入头文件。(已引入可忽略)

    TEXT
    #include "YouMeTalkAPI.h"
  2. 调用 SetSoundtouchPitchSemiTones 接口。

    TEXT
    float fPitchSemiTones = 0;
    UYouMeTalkAPI::SetSoundtouchPitchSemiTones(fPitchSemiTones);

广播消息

  • 语法
C++
static EYouMeErrorCode SendMessage(const FString pChannelID, const FString pContent, int32 requestID);
  • 功能

在语音频道内,广播一个文本消息。

  • 参数说明
  • pChannelID:频道ID(自己需要进入这个频道)。
    • pContent:要广播的文本内容。
    • requestID:用于标识消息的ID。
  • 返回值

返回 EYouMeErrorCode,EYouMeErrorCode::YOUME_SUCCESS 表示请求已受理;其他值表示失败,参见 错误码定义。

  • 异步回调

通过 IYouMeTalkObserver::OnEvent(蓝图 EventOnEvent) 接收:

  • YOUME_EVENT_SEND_MESSAGE_RESULT:发送结果,param 为回传 requestID。
  • YOUME_EVENT_MESSAGE_NOTIFY:频道内其他用户收到文本消息,param 为 content 内容。

回调示例:

蓝图回调

image-20210813184740399

image-20210813184659832

C++回调

TEXT
//涉及到的主要回调事件有:
//event:YOUME_EVENT_SEND_MESSAGE_RESULT: 发送消息的结果回调,param为requestID的字符串
//event:YOUME_EVENT_MESSAGE_NOTIFY:频道内其他人收到消息的通知。param为文本内容
virtual void OnEvent_Implementation(const EYouMeEvent event, const EYouMeErrorCode error, const FString& channel, const FString& param) override;

示例与补充说明:

蓝图用法

在蓝图中调用 SendMessage 蓝图节点。

image-20210707102953612

C++用法

  1. 引入头文件。(已引入可忽略)

    TEXT
    #include "YouMeTalkAPI.h"
  2. 调用 SendMessage 接口。

    TEXT
    FString pChannelID = "";
    FString pContent = "";
    int32 requestID = 1;
    
    UYouMeTalkAPI::SendMessage(pChannelID, pContent, requestID);

设置时间戳

设置录音时间戳

  • 语法
C++
static void SetRecordingTimeMs(int32 timeMs);
  • 功能

设置当前录音的时间戳。当通过录游戏脚本进行直播时,要保证观众端音画同步,在主播端需要进行时间对齐。 这个接口设置的就是当前游戏画面录制已经进行到哪个时间点了。

  • 参数说明

timeMs:当前游戏画面播放对应的时间点,单位为毫秒。

  • 返回值

无(void)。

  • 异步回调

无。本接口不单独返回异步完成通知。

示例与补充说明:

蓝图用法

在蓝图中调用 SetRecordingTimeMs 蓝图节点。

image-20210813161243578

C++用法

  1. 引入头文件。(已引入可忽略)

    TEXT
    #include "YouMeTalkAPI.h"
  2. 调用 SetRecordingTimeMs 接口。

    TEXT
    int timeMs = 0;
    UYouMeTalkAPI::SetRecordingTimeMs(timeMs);

设置播放时间戳

  • 语法
C++
static void SetPlayingTimeMs(int32 timeMs);
  • 功能

设置当前声音播放的时间戳。当通过录游戏脚本进行直播时,要保证观众端音画同步,游戏画面的播放需要和声音播放进行时间对齐。 这个接口设置的就是当前游戏画面播放已经进行到哪个时间点了。

  • 参数说明

timeMs:当前游戏画面对应的时间点,单位为毫秒。

  • 返回值

无(void)。

  • 异步回调

无。本接口不单独返回异步完成通知。

示例与补充说明:

蓝图用法

在蓝图中调用 SetPlayingTimeMs 蓝图节点。

image-20210813161651238

C++用法

  1. 引入头文件。(已引入可忽略)

    TEXT
    #include "YouMeTalkAPI.h"
  2. 调用 SetPlayingTimeMs 接口。

    TEXT
    int timeMs = 0;
    UYouMeTalkAPI::SetPlayingTimeMs(timeMs);

移动网络设置

设置是否允许使用移动网络

  • 语法
C++
static void SetUseMobileNetworkEnabled(bool bEnabled);
  • 功能

设置是否允许使用移动网络。在WIFI和移动网络都可用的情况下会优先使用WIFI,在没有WIFI的情况下,如果设置允许使用移动网络,那么会使用移动网络进行语音通信,否则通信会失败。该接口需要在初始化后,加入房间前设置。

  • 参数说明

bEnabled:true——允许使用移动网络,false——禁止使用移动网络。

  • 返回值

无(void)。

  • 异步回调

无。本接口不单独返回异步完成通知。

示例与补充说明:

蓝图用法

在蓝图中调用 SetUseMobileNetworkEnabled 蓝图节点。

image-20210813115857548

C++用法

  1. 引入头文件。(已引入可忽略)

    TEXT
    #include "YouMeTalkAPI.h"
  2. 调用 GetVolume 接口。

    TEXT
    bool bEnabled = true;
    UYouMeTalkAPI::SetUseMobileNetworkEnabled(bEnabled);

获取是否允许使用移动网络

  • 语法
C++
static bool GetUseMobileNetworkEnabled();
  • 功能

获取是否允许SDK在没有WIFI的情况使用移动网络进行语音通信。

  • 参数说明

无。

  • 返回值

true——允许使用移动网络,false——禁止使用移动网络,默认情况下允许使用移动网络。

  • 异步回调

无。本接口不单独返回异步完成通知。

示例与补充说明:

蓝图用法

在蓝图中调用 GetUseMobileNetworkEnabled 蓝图节点。

image-20210813120141479

C++用法

  1. 引入头文件。(已引入可忽略)

    TEXT
    #include "YouMeTalkAPI.h"
  2. 调用 GetVolume 接口。

    TEXT
    bool bUseMobileNetworkEnabled = UYouMeTalkAPI::GetUseMobileNetworkEnabled();

获取 SDK 版本

  • 语法
C++
static int32 GetSDKVersion();
  • 功能

获取 SDK 版本(GetSDKVersion)。

  • 参数说明

无。

  • 返回值

返回压缩整数 SDK 版本号。

  • 异步回调

无。本接口不单独返回异步完成通知。

反初始化

  • 语法
C++
static EYouMeErrorCode UnInit();
  • 功能

反初始化引擎,可在退出游戏时调用,以释放SDK所有资源。

  • 参数说明

无。

  • 返回值

如果成功则返回YOUME_SUCCESS,其它返回值请参考YouMeErrorCode类型定义。

  • 异步回调

无。本接口不单独返回异步完成通知。

示例与补充说明:

蓝图用法

在蓝图中调用 UnInit 蓝图节点。

image-20210706154502112

C++用法

  1. 引入头文件。(已引入可忽略)

    TEXT
    #include "YouMeTalkAPI.h"
    #include "YouMeTalkDefine.h"
  2. 调用 UnInit 接口。

    TEXT
    UYouMeTalkAPI::UnInit();