Talk SDK for iOS API接口手册

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

游密语音引擎SDK接口调用都会立即返回,凡是本身需要较长耗时的接口调用都会采用异步回调的方式,所有接口都可以在主线程中直接使用。回调都在子线程中进行,请注意不要在回调中直接操作UI主线程。

API调用说明

API的调用可使用“[YMVoiceService getInstance]”来直接操作,接口使用的基本流程为初始化->收到初始化成功回调通知->加入语音频道->收到加入频道成功回调通知->使用其它接口->离开语音频道->反初始化,要确保严格按照上述的顺序使用接口。

实现回调

使用者要遵守协议VoiceEngineCallback并实现相关函数(回调函数)。回调都在子线程中执行,不能用于更新UI等耗时操作。

  • 首先要遵守协议VoiceEngineCallback来注册回调事件:

注册

  • 然后具体实现回调方法:
(void)onYouMeEvent:(YouMeEvent_t)eventType errcode:(YouMeErrorCode_t)iErrorCode roomid:(NSString *)roomid param:(NSString *)param {
    switch (eventType)
    {
            //case案例只覆盖了部分,仅供参考,详情请查询枚举类型YouMeEvent
        case YOUME_EVENT_INIT_OK:
            //"初始化成功";
            break;
        case YOUME_EVENT_INIT_FAILED:
            // "初始化失败,错误码:" + errorCode;   
            break;
        case YOUME_EVENT_JOIN_OK:
            //"加入频道成功";
            break;
        case YOUME_EVENT_LEAVED_ALL:
            // "离开频道成功"
            break;
        case YOUME_EVENT_JOIN_FAILED:
            //进入语音频道失败
             break;
        case YOUME_EVENT_REC_PERMISSION_STATUS:
            //"通知录音权限状态,成功获取权限时错误码为YOUME_SUCCESS,获取失败为YOUME_ERROR_REC_NO_PERMISSION(此时不管麦克风mute状态如何,都没有声音输出)";
            break;
        case YOUME_EVENT_RECONNECTING:
            //"断网了,正在重连";
            break;
        case YOUME_EVENT_RECONNECTED:
            // "断网重连成功";
            break;
        case  YOUME_EVENT_OTHERS_MIC_OFF:
            //其他用户的麦克风关闭:
            break;
        case YOUME_EVENT_OTHERS_MIC_ON:
            //其他用户的麦克风打开:
            break;
        case YOUME_EVENT_OTHERS_SPEAKER_ON:
            //其他用户的扬声器打开:
            break;
        case YOUME_EVENT_OTHERS_SPEAKER_OFF:
            //其他用户的扬声器关闭
            break;
        case YOUME_EVENT_OTHERS_VOICE_ON:
            //其他用户开始讲话
            break;
        case YOUME_EVENT_OTHERS_VOICE_OFF:
            //其他用户停止讲话
            break;
        case YOUME_EVENT_MY_MIC_LEVEL:
            //麦克风的语音级别,值把iErrorCode转为整形即是音量值
            break;
        case YOUME_EVENT_MIC_CTR_ON:
            //麦克风被其他用户打开
            break;
        case YOUME_EVENT_MIC_CTR_OFF:
            //麦克风被其他用户关闭
            break;
        case YOUME_EVENT_SPEAKER_CTR_ON:
            //扬声器被其他用户打开
            break;
        case YOUME_EVENT_SPEAKER_CTR_OFF:
            //扬声器被其他用户关闭
            break;
        case YOUME_EVENT_LISTEN_OTHER_ON:
            //取消屏蔽某人语音
            break;
        case YOUME_EVENT_LISTEN_OTHER_OFF:
            //屏蔽某人语音
            break;
        default:
            //"事件类型" + eventType + ",错误码" +errcode
            break;
    }
}

- (void)onStatic:(int)loss delay:(int)delay widthUserid:(NSString *)widthUserid{
    //loss 是万分比,丢包率
    //delay 网络延迟,单位ms
    //widthUserid 是对端用户id
}

//RestAPI回调
(void)onRequestRestAPI: (int)requestID iErrorCode:(YouMeErrorCode_t) iErrorCode  query:(NSString*) strQuery  result:(NSString*) strResult {
}
//获取频道用户列表回调
(void)onMemberChange:(NSString*) channelID changeList:(NSArray*) changeList { 
}

初始化

  • 语法

    (YouMeErrorCode_t)initSDK:(id<VoiceEngineCallback>)delegate  appkey:(NSString*)appKey  appSecret:(NSString*)appSecret
        regionId:(YOUME_RTC_SERVER_REGION_t)regionId
           serverRegionName:(NSString*) serverRegionName;
  • 功能
    初始化语音引擎,做APP验证和资源初始化(只有appkey,appsecret,serverRegionId 都一样时,才可以进行语音互通,改任意一个视为另外一个区服)。

  • 参数说明
    delegate:实现了回调函数的委托对象。
    appKey:从游密后台申请到的 app key, 这个是你们应用程序的唯一标识。
    appSecret:对应 appKey 的私钥, 这个需要妥善保存,不要暴露给其他人。
    regionId:设置首选连接服务器的区域码,如果在初始化时不能确定区域,可以填RTC_DEFAULT_SERVER,后面确定时通过 setServerRegion 设置。如果YOUME_RTC_SERVER_REGION定义的区域码不能满足要求,可以把这个参数设为 RTC_EXT_SERVER,然后通过后面的参数serverRegionName 设置一个自定的区域值(如中国用 "cn" 或者 “ch"表示),然后把这个自定义的区域值同步给游密,我们将通过后台配置映射到最佳区域的服务器。
    serverRegionName:自定义的扩展的服务器区域名。不能为null,可为空字符串“”。只有前一个参数serverRegionId设为RTC_EXT_SERVER时,此参数才有效(否则都将当空字符串“”处理)。

  • 返回值
    返回YOUME_SUCCESS才会有异步回调通知。其它返回值请参考YouMeErrorCode类型定义

  • 异步回调
    // 涉及到的主要回调事件有:
    // YOUME_EVENT_INIT_OK  - 表明初始化成功
    // YOUME_EVENT_INIT_FAILED - 表明初始化失败,最常见的失败原因是网络错误或者 AppKey-AppSecret 错误
    (void)onYouMeEvent:(YouMeEvent_t)eventType errcode:(YouMeErrorCode_t)iErrorCode roomid:(NSString *)roomid param:(NSString *)param;

语音频道管理

加入语音频道(单频道)

  • 语法

    (YouMeErrorCode_t) joinChannelSingleMode:(NSString *)strUserID channelID:(NSString *)strChannelID userRole:(YouMeUserRole_t)userRole checkRoomExist:(bool)checkRoomExist;
  • 功能
    加入语音频道(单频道模式,每个时刻只能在一个语音频道里面)。

  • 参数说明
    strUserID:全局唯一的用户标识,全局指在当前应用程序的范围内。
    strChannelID:全局唯一的频道标识,全局指在当前应用程序的范围内。
    userRole:用户在语音频道里面的角色,见YouMeUserRole定义。
    bCheckRoomExist:是否检查频道存在时才加入,默认为false: true 当频道存在时加入、不存在时返回错误(多用于观众角色),false 无论频道是否存在都加入频道。

  • 返回值
    返回YOUME_SUCCESS才会有异步回调通知。其它返回值请参考YouMeErrorCode类型定义

  • 异步回调
    // 涉及到的主要回调事件有:
    // YOUME_EVENT_JOIN_OK - 成功进入语音频道
    // YOUME_EVENT_JOIN_FAILED - 进入语音频道失败,可能原因是网络或服务器有问题,或是bCheckRoomExist为true时频道还未创建
    (void)onYouMeEvent:(YouMeEvent_t)eventType errcode:(YouMeErrorCode_t)iErrorCode roomid:(NSString *)roomid param:(NSString *)param;

加入语音频道(多频道)

  • 语法

    (YouMeErrorCode_t) joinChannelMultiMode:(NSString *)strUserID channelID:(NSString *)strChannelID userRole:(YouMeUserRole_t)userRole checkRoomExist:(bool)checkRoomExist;
  • 功能
    加入语音频道(多频道模式,可以同时听多个语音频道的内容,但每个时刻只能对着一个频道讲话)。

  • 参数说明
    strUserID:全局唯一的用户标识,全局指在当前应用程序的范围内。
    strChannelID:全局唯一的频道标识,全局指在当前应用程序的范围内。
    userRole :用户角色,用于决定讲话/播放战歌等权限。
    bCheckRoomExist:是否检查频道存在时才加入,默认为false: true 当频道存在时加入、不存在时返回错误(多用于观众角色),false 无论频道是否存在都加入频道。

  • 返回值
    返回YOUME_SUCCESS才会有异步回调通知。其它返回值请参考YouMeErrorCode类型定义

  • 异步回调
    // 涉及到的主要回调事件有:
    // YOUME_EVENT_JOIN_OK - 成功进入语音频道
    // YOUME_EVENT_JOIN_FAILED - 进入语音频道失败,可能原因是网络或服务器有问题,或是bCheckRoomExist为true时频道还未创建
    (void)onYouMeEvent:(YouMeEvent_t)eventType errcode:(YouMeErrorCode_t)iErrorCode roomid:(NSString *)roomid param:(NSString *)param;

指定讲话频道

  • 语法

    (YouMeErrorCode_t) speakToChannel:(NSString *)strChannelID;
  • 功能
    多频道模式下,指定当前要讲话的频道。

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

  • 返回值
    返回YOUME_SUCCESS才会有异步回调通知。其它返回值请参考YouMeErrorCode类型定义

  • 异步回调
    // 涉及到的主要回调事件有:
    // YOUME_EVENT_SPEAK_SUCCESS - 成功切入到指定语音频道
    // YOUME_EVENT_SPEAK_FAILED - 切入指定语音频道失败,可能原因是网络或服务器有问题
    (void)onYouMeEvent:(YouMeEvent_t)eventType errcode:(YouMeErrorCode_t)iErrorCode roomid:(NSString *)roomid param:(NSString *)param;

退出指定的语音频道

  • 语法
    (YouMeErrorCode_t)leaveChannelMultiMode:(NSString *)strChannelID;
  • 功能
    多频道模式下,退出指定的语音频道。

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

  • 返回值
    返回YOUME_SUCCESS才会有异步回调通知。其它返回值请参考YouMeErrorCode类型定义

  • 异步回调
    //涉及到的主要回调事件有:
    //YOUME_EVENT_LEAVED_ONE - 成功退出指定语音频道
    (void)onYouMeEvent:(YouMeEvent_t)eventType errcode:(YouMeErrorCode_t)iErrorCode roomid:(NSString *)roomid param:(NSString *)param;

退出所有语音频道

  • 语法

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

  • 返回值
    返回YOUME_SUCCESS才会有异步回调通知。其它返回值请参考YouMeErrorCode类型定义

  • 异步回调
    //涉及到的主要回调事件有:
    //YOUME_EVENT_LEAVED_ALL - 成功退出所有语音频道
    (void)onYouMeEvent:(YouMeEvent_t)eventType errcode:(YouMeErrorCode_t)iErrorCode roomid:(NSString *)roomid param:(NSString *)param;

设置白名单用户

  • 语法

    (YouMeErrorCode_t)setWhiteUserList:(NSString*)channelID  whiteUserList:(NSString*)whiteUserList;
  • 功能
    设置当前用户的语音消息接收白名单,其语音消息只会转发到白名单的用户,不设置该接口则默认转发至频道内所有人。

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

  • 返回值
    返回YOUME_SUCCESS才会有异步回调通知。其它返回值请参考YouMeErrorCode类型定义

  • 异步回调
    // 涉及到的主要回调事件有:
    //YOUME_EVENT_SET_WHITE_USER_LIST_OK - 成功在指定语音频道设置白名单,有异常用户会返回错误码YOUME_ERROR_WHITE_SOMEUSER_ABNORMAL
    //YOUME_EVENT_SET_WHITE_USER_LIST_FAILED - 在指定语音频道设置白名单失败,可能原因是网络或服务器有问题
    (void)onYouMeEvent:(YouMeEvent_t)eventType errcode:(YouMeErrorCode_t)iErrorCode roomid:(NSString *)roomid param:(NSString *)param;

设备状态管理

切换语音输出设备

  • 语法
(YouMeErrorCode_t)setOutputToSpeaker:(bool)bOutputToSpeaker;
  • 功能
    默认输出到扬声器,在加入房间成功后设置。(iOS受系统限制,如果已释放麦克风则无法切换到听筒)

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

  • 返回值
    如果成功返回YOUME_SUCCESS,否则返回错误码,具体请参考YouMeErrorCode类型定义

设置扬声器状态

  • 语法
    (void)setSpeakerMute:(bool)mute;
  • 功能
    打开/关闭扬声器。该状态值在加入房间成功后设置才有效。(该接口是异步接口,调用后会有一段时间生效,一般200ms左右生效)

  • 参数说明
    mute:true——关闭扬声器,false——开启扬声器。

获取扬声器状态

  • 语法

    (bool)getSpeakerMute;
  • 功能
    获取当前扬声器状态。(该接口为异步接口,尽量避免逻辑上设置了扬声器状态后立刻调用该接口)

  • 返回值
    true——扬声器关闭,false——扬声器开启。

设置麦克风状态

  • 语法

    (void)setMicrophoneMute:(bool)mute;
  • 功能
    打开/关闭麦克风。该状态值在加入房间成功后设置才有效。(该接口是异步接口,调用后会有一段时间生效,一般200ms左右生效)

  • 参数说明
    mute:true——关闭麦克风,false——开启麦克风。

获取麦克风状态

  • 语法

    (bool)getMicrophoneMute;
  • 功能
    获取当前麦克风状态。(该接口为异步接口,尽量避免逻辑上设置了麦克风状态后立刻调用该接口)

  • 返回值
    true——麦克风关闭,false——麦克风开启。

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

  • 语法

    (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,
    事件对应具体详细请参考状态码。)

设置音量

  • 语法

    (void)setVolume:(unsigned int)uiVolume;
  • 功能
    设置当前程序输出音量大小。建议该状态值在加入房间成功后按需再重置一次。

  • 参数说明
    uiVolume:当前音量大小,范围[0-100]。

获取音量

  • 语法

    (unsigned int)getVolume;
  • 功能
    获取当前程序输出音量大小,此音量值为程序内部的音量,与系统音量相乘得到程序使用的实际音量。

  • 返回值
    当前音量大小,范围[0-100]。

设置远端用户音量

  • 语法
(YouMeErrorCode_t)setUserVolume:(NSString*) userID uiVolume:(unsigned int)uiVolume;
  • 功能
    设置远端单个用户音量增益(0-300),100为正常值,0 为无声, 150以内相对安全,超过150可能有明显的破音。 注:仅在本端设备生效,自己退出频道时设置失效,被调节的用户进出频道可以保持有效。

  • 参数说明
    userID: 被调节的用户id。
    uiVolume: 当前音量大小,范围[0-300]。

  • 返回值
    如果成功返回YOUME_SUCCESS,否则返回错误码,具体请参考YouMeErrorCode类型定义

设置网络

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

  • 语法

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

  • 参数说明
    bEnabled:true——允许使用移动网络,false——禁止使用移动网络。

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

  • 语法

    (bool) getUseMobileNetworkEnabled;
  • 功能
    获取是否允许SDK在没有WIFI的情况使用移动网络进行语音通信。

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

网络质量检测

  • 语法

    (YouMeErrorCode_t)detectNetworkQuality:(int) nDetectTime nOverTime:(int) nOverTime nInterval:(int)nInterval nPackSize:(int)nPackSize;
  • 功能
    开始网络质量检测。如之前的检测还在进行中,再次调用该接口将返回YOUME_ERROR_FREQUENCY_TOO_HIGH = -701(检测频率过快)的返回值。

  • 参数说明
    nDetectTime:发包检测时长,单位为秒,建议3秒,范围(0,100]。
    nOverTime:检测终止时长,单位为秒,建议4秒,范围(0,110]。
    nInterval:发包间隔,单位毫秒,建议20毫秒,范围[20,30000],发包间隔不能超过检测时长或终止时长。
    nPackSize:发包大小,单位字节,建议300字节,范围[64,1400]。

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

  • 语法

    (YouMeErrorCode_t)stopDetectNetworkQuality;
  • 功能
    终止检测网络质量。终止后将不会收到onDetectNetWorkComplete回调。如未在进行网络质量检测就调用该接口将返回YOUME_ERROR_FREQUENCY_TOO_HIGH = -701的返回值。

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

  • 语法

    (void)onDetectNetWorkComplete:(bool)bNetworkOK detectResult:(NSString*)result;
  • 功能
    网络质量检测回调。

  • 参数说明
    bNetworkOK:网络是否可用。(目前如果lossPer<=0.2并且avgRtt<400,就认为网络是可用的,并且这两个阈值将支持服务器动态下发控制)
    result:检测的结果值,以json格式返回,目前会返回avgRtt(平均往返延迟,整型,单位毫秒)和lossPer(丢包率,浮点型,范围0.0~1.0)。json格式示例:{"avgRtt":39,"lossPer":0}。

控制他人麦克风

  • 语法

    (void) setOtherMicMute:(NSString *)strUserID  mute:(bool) mute;
  • 功能
    控制他人的麦克风状态(也就是关闭或者开启他人的麦克风)。

  • 参数说明
    strUserID:要控制的用户ID。
    mute:是否静音。true:静音别人的麦克风,false:开启别人的麦克风。

  • 返回值
    如果成功返回YOUME_SUCCESS,否则返回错误码,具体请参考YouMeErrorCode类型定义

控制他人扬声器

  • 语法

    (void) setOtherSpeakerMute: (NSString *)strUserID  mute:(bool) mute;
  • 功能
    控制他人的扬声器状态(也就是关闭或者开启他人的扬声器)。

  • 参数说明
    strUserID:要控制的用户ID。
    mute:是否静音。true:静音别人的扬声器,false:开启别人的扬声器。

  • 返回值
    如果成功返回YOUME_SUCCESS,否则返回错误码,具体请参考YouMeErrorCode类型定义

设置是否听某人的语音

  • 语法

    (void) setListenOtherVoice: (NSString *)strUserID  isOn:(bool) isOn;
  • 功能
    设置是否听某人的语音。

  • 参数说明
    strUserID:要控制的用户ID。
    on:true表示开启接收指定用户的语音,false表示屏蔽指定用户的语音。

  • 返回值
    无。

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

  • 语法

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

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

  • 返回值
    返回YOUME_SUCCESS才会有异步回调通知。其它返回值请参考YouMeErrorCode类型定义

设置插入耳机时,是否自动退出系统通话模式(禁用手机系统硬件信号前处理)

  • 语法

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

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

  • 返回值
    成功返回YOUME_SUCCESS,其它返回值请参考YouMeErrorCode类型定义

判断是否初始化完成

  • 语法

    (bool)isInited;
  • 功能
    判断是否初始化完成。

  • 返回值
    true——完成,false——还未完成。

查询是否在某个语音频道内

  • 语法
    (bool)isInChannel:(NSString*) sChannelID;
  • 参数说明
    sChannelID:要查询的频道ID。

  • 功能
    查询是否在某个语音频道内。

  • 返回值
    true——在频道内,false——没有在频道内。

查询是否在语音频道内

  • 语法

    (bool)isInChannel;
  • 功能
    查询是否在语音频道内。

  • 返回值
    true——在频道内,false——没有在频道内。

通话管理

暂停通话

  • 语法

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

  • 返回值
    返回YOUME_SUCCESS才会有异步回调通知。其它返回值请参考YouMeErrorCode类型定义

  • 异步回调
    // 主要回调事件:
    // YOUME_EVENT_PAUSED - 暂停语音频道完成
    (void)onYouMeEvent:(YouMeEvent_t)eventType errcode:(YouMeErrorCode_t)iErrorCode roomid:(NSString *)roomid param:(NSString *)param;

恢复通话

  • 语法

    (YouMeErrorCode_t)resumeChannel;
  • 功能
    恢复通话,调用PauseChannel暂停通话后,可调用这个接口恢复通话。

  • 返回值
    返回YOUME_SUCCESS才会有异步回调通知。其它返回值请参考YouMeErrorCode类型定义

  • 异步回调
    // 主要回调事件:
    // YOUME_EVENT_RESUMED - 恢复语音频道完成
    (void)onYouMeEvent:(YouMeEvent_t)eventType errcode:(YouMeErrorCode_t)iErrorCode roomid:(NSString *)roomid param:(NSString *)param;

设置语音检测

  • 语法

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

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

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

设置是否开启讲话音量级别回调

  • 语法

    (YouMeErrorCode_t) setMicLevelCallback:(int) maxLevel;
  • 功能
    设置是否开启讲话音量级别回调, 并设置相应的参数。

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

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

设置是否开启远端音量级别回调

  • 语法

    (YouMeErrorCode_t) setFarendVoiceLevelCallback:(int) maxLevel maxMixedLevel:(int)maxMixedLevel;
  • 功能
    设置是否开启远端音量级别回调, 并设置相应的参数。

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

  • 返回值

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

  • 异步回调
//eventType:YOUME_EVENT_FAREND_VOICE_LEVEL - 远端音量回调,iErrorCode为音量值,param为说话人,如果param为空,表示所有远端语音的整体音量
(void)onYouMeEvent:(YouMeEvent_t)eventType errcode:(YouMeErrorCode_t)iErrorCode roomid:(NSString *)roomid param:(NSString *)param;

战歌管理

播放战歌播放战歌

  • 语法

    (YouMeErrorCode_t)playBackgroundMusic:(NSString *)path  repeat:(bool)repeat;
  • 功能
    播放指定的音乐文件。播放的音乐将会通过扬声器输出,并和语音混合后发送给接收方。这个功能必须进入频道传入身份为主播/指挥才能使用。建议使用mp3格式的文件,目前wav、flac格式的文件不支持。

  • 参数说明
    path:音乐文件的路径。
    repeat:是否重复播放,true——重复播放,false——只播放一次就停止播放。

  • 返回值
    返回YOUME_SUCCESS才会有异步回调通知。其它返回值请参考YouMeErrorCode类型定义

  • 异步回调
// 主要回调事件:
// YOUME_EVENT_BGM_STOPPED - 通知战歌播放结束
// YOUME_EVENT_BGM_FAILED - 通知战歌播放失败
(void)onYouMeEvent:(YouMeEvent_t)eventType errcode:(YouMeErrorCode_t)iErrorCode roomid:(NSString *)roomid param:(NSString *)param;

停止播放战歌

  • 语法

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

  • 返回值
    如果成功返回YOUME_SUCCESS,表明成功停止了音乐播放流程;否则返回错误码,具体请参考YouMeErrorCode类型定义

设置战歌播放音量

  • 语法

    (YouMeErrorCode_t)setBackgroundMusicVolume:(unsigned int)bgVolume;
  • 功能
    设定战歌的音量。这个接口用于调整战歌和语音之间的相对音量,使得战歌和语音混合听起来协调。 这是一个同步调用接口。

  • 参数说明
    bgVolume:战歌的音量,范围 [0-100]。

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

设置战歌播放进度

  • 语法

    (void)setBgmProgress:(long long)bgmProgress;
  • 功能
    设置当前战歌播放进度。

  • 参数说明
    bgmProgress:当前播放进度,范围(0-音频时长],单位ms。

获取战歌播放进度

  • 语法

    (long long)getBgmProgress;
  • 功能
    获取战歌播放进度。

  • 返回值
    当前战歌播放进度,范围(0-音频时长],单位ms。

获取战歌总时长

  • 语法

    (long long) getBgmDuration;
  • 功能
    获取战歌总时长,单位ms。

  • 返回值
    战歌总时长,单位ms。

设置监听

  • 语法

    (YouMeErrorCode_t)setHeadsetMonitorMicOn:(bool)micEnabled BgmOn:(bool)bgmEnabled;
  • 功能
    设置是否用耳机监听自己的声音或战歌,这是一个同步调用接口。

  • 参数说明
    micEnabled:是否监听麦克风 true 监听,false 不监听。
    bgmEnabled:是否监听战歌 true 监听,false 不监听。

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

获取监听时mic音量

  • 语法

    (int)getMicbypassVolume;
  • 功能
    获取监听时mic的音量。

  • 返回值
    vol 监听时mic的音量,范围 0-100。

设置监听时mic音量

  • 语法

    (YouMeErrorCode_t)setMicbypassVolume:(unsigned int) vol;
  • 功能
    设置监听时mic的音量。

  • 参数说明
    vol:监听时mic的音量,范围 0-100。

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

设置混响音效

  • 语法

    (YouMeErrorCode_t) setReverbEnabled:(bool)enabled;
  • 功能
    设置是否开启混响音效,这个主要对主播/指挥有用。

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

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

设置音频数据回调

(YouMeErrorCode_t) setPcmCallbackEnable:(int)flag outputToSpeaker:(bool)bOutputToSpeaker nOutputSampleRate:(int)nOutputSampleRate nOutputChannel:(int)nOutputChannel;
  • 功能
    设置是否开启音频pcm回调,以及开启哪种类型的pcm回调。 本接口可以在加入房间前,或者加入房间后调用。

  • 参数说明
    flag: 说明需要哪些类型的音频回调,共有三种类型的回调,分别是远端音频,录音音频,以及远端和录音数据的混合音频。flag格式形如PcmCallbackFlag_Romote| PcmCallbackFlag_Record|PcmCallbackFlag_Mix

bOutputToSpeaker: 是否扬声器静音:true 不静音;false 静音。

nOutputSampleRate: 音频回调数据的采样率:8000,16000,32000,44100,48000; 具体参考 YOUME_SAMPLE_RATE类型定义。

nOutputChannel: 音频回调数据的通道数:1 单通道;2 立体声。

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

  • 相关回调接口

    //pcm回调接口位于VoiceEngineCallback
    //以下3个回调分别对应于3种类型的音频pcm回调
    //开启后才会有
    
    //远端数据回调
    //channelNum:声道数
    //samplingRateHz:采样率
    //bytesPerSample:采样深度
    //data:pcm数据buffer
    //dataSizeInByte:buffer的大小
    (void)onPcmDataRemote: (int)channelNum samplingRateHz:(int)samplingRateHz bytesPerSample:(int)bytesPerSample data:(void*) data dataSizeInByte:(int)dataSizeInByte;
    //录音数据回调
    (void)onPcmDataRecord: (int)channelNum samplingRateHz:(int)samplingRateHz bytesPerSample:(int)bytesPerSample data:(void*) data dataSizeInByte:(int)dataSizeInByte;
    //远端和录音的混合数据回调
    (void)onPcmDataMix: (int)channelNum samplingRateHz:(int)samplingRateHz bytesPerSample:(int)bytesPerSample data:(void*) data dataSizeInByte:(int)dataSizeInByte;

获取变声音调

  • 语法
(float) getSoundtouchPitchSemiTones;
  • 功能
    获取变声音调(增值服务,需要后台配置开启)。

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

设置变声音调

  • 语法

    (int) setSoundtouchPitchSemiTones:(float) fPitchSemiTones;
  • 功能
    设置变声音调(增值服务,需要后台配置开启),需在进入房间成功后调用,仅对当前房间有效,退出房间时重置为0。

  • 参数说明
    fPitchSemiTones:变声音调的值,范围[-12 ~ +12]。

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

设置时间戳

设置录音时间戳

  • 语法

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

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

  • 返回值
    无。

设置播放时间戳

  • 语法

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

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

  • 返回值
    无。

设置服务器区域

  • 语法

    (void)setServerRegion:(YOUME_RTC_SERVER_REGION_OC)serverRegionId regionName:(NSString*)regionName bAppend:(bool)bAppend;
  • 功能
    设置首选连接服务器的区域码,初始化前调用,新版本以集成到Init里面,参数三,不填默认为中国。

  • 参数说明
    serverRegionId:如果YOUME_RTC_SERVER_REGION定义的区域码不能满足要求,可以把这个参数设为 RTC_EXT_SERVER,然后通过后面的参数regionName 设置一个自定的区域值(如中国用 "cn" 或者 “ch"表示),然后把这个自定义的区域值同步给游密,我们将通过后台配置映射到最佳区域的服务器。
    regionName:自定义的扩展的服务器区域名。不能为null,可为空字符串“”。只有前一个参数serverRegionId设为RTC_EXT_SERVER时,此参数才有效(否则都将当空字符串“”处理)。
    bAppend:true表示添加,false表示替换。

安全验证码设置V3版本,安全性更高

  • 语法

    (void)setTokenV3:(NSString*)token time:(long)time
  • 功能
    设置身份验证的token,需要配合后台接口,若要使用请联系游密后台配置。

  • token计算方式
    采用SHA1加密算法,token=sha1(apikey+appkey+roomid+userid+timestamp)。 token由于涉及安全问题,正式使用在服务端进行计算。

  • 参数说明
    token:身份验证用token,设置为NULL或者空字符串,清空token值,不进行身份验证。
    time: 用户加入房间的时间,单位s,token鉴权中的一部分。

查询频道用户列表

  • 语法

    (YouMeErrorCode_t) getChannelUserList:(NSString*) channelID maxCount:(int)maxCount notifyMemChange:(bool)notifyMemChange ;
  • 功能
    查询频道当前的用户列表, 并设置是否获取频道用户进出的通知。(必须自己在频道中)

  • 参数说明
    channelID:要查询的频道ID。
    maxCount:想要获取的最大人数。-1表示获取全部列表。
    notifyMemChange:其他用户进出房间时,是否要收到通知。(设置为true,自己所在频道有人进出 都会有对应回调产生,反之false就没有对应回调)

  • 返回值
    返回YOUME_SUCCESS才会有异步回调通知。其它返回值请参考YouMeErrorCode类型定义

  • 异步回调

    // channelID:频道ID
    // changeList:查询获得的用户列表,或变更列表。
    (void)onMemberChange:(NSString*) channelID changeList:(NSArray*) changeList {    
    }
  • 备注
    首次查询用户列表时,假设当前房间内用户数是curCount,
    1、当传入的maxCount >= curCount时:
    OnMemberChange回调一次,返回房间内所有curCount个用户。
    2、当传入的maxCount < curCount时,OnMemberChange回调两次:
    第一次返回maxCount个用户;
    第二次返回其余curCount-maxCount个用户。
    3、当传入的maxCount = -1时,OnMemberChange回调两次:
    第一次只返回一个用户(按照用户id排序的最小值);
    第二次返回房间内剩余的curCount-1个用户。

抢麦连麦相关接口

抢麦相关设置

  • 语法
(YouMeErrorCode_t) setGrabMicOption:(NSString*) channelID mode:(int)mode maxAllowCount:(int)maxAllowCount maxTalkTime:(int)maxTalkTime voteTime:(unsigned int)voteTime;
  • 功能描述
    抢麦相关设置(抢麦活动发起前调用此接口进行设置)。

  • 参数说明
    channelID:抢麦活动的频道id。
    mode:抢麦模式(1:先到先得模式;2:按权重分配模式)。先到先得模式中,抢麦活动会持续,用户可以继续抢其他用户释放的麦。
    maxAllowCount:允许能抢到麦的最大人数(要大于0)。
    maxTalkTime:允许抢到麦后使用麦的最大时间(单位:秒,要大于0)。
    voteTime:抢麦仲裁时间(单位:秒,要大于0),过了X秒后服务器将进行仲裁谁最终获得麦(仅在按权重分配模式下有效)。

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

发起抢麦活动

  • 语法
(YouMeErrorCode_t) startGrabMicAction:(NSString*) channelID strContent:(NSString*) pContent;
  • 功能描述
    发起抢麦活动。接口需要加入房间后再调用。

  • 参数说明
    channelID:抢麦活动的频道id。
    pContent:游戏传入的上下文内容,通知回调会传回此内容(目前只支持纯文本格式)。

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

停止抢麦活动

  • 语法
(YouMeErrorCode_t) stopGrabMicAction:(NSString*) channelID strContent:(NSString*) pContent;
  • 功能描述
    停止抢麦活动。先到先得模式下,抢麦成功后,调用停止抢麦不会把当前抢麦人踢下麦。

  • 参数说明
    channelID:抢麦活动的频道id。
    pContent:游戏传入的上下文内容,通知回调会传回此内容(目前只支持纯文本格式)。

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

发起抢麦请求

  • 语法
(YouMeErrorCode_t) requestGrabMic:(NSString*) channelID score:(int)score isAutoOpenMic:(bool)isAutoOpenMic strContent:(NSString*) pContent;
  • 功能描述
    发起抢麦请求。

  • 参数说明
    channelID:抢麦的频道id。
    score:积分(权重分配模式下有效,游戏根据自己实际情况设置)。
    isAutoOpenMic:抢麦成功后是否自动开启麦克风权限。
    pContent:游戏传入的上下文内容,通知回调会传回此内容(目前只支持纯文本格式)。

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

释放抢到的麦

  • 语法
(YouMeErrorCode_t) releaseGrabMic:(NSString*) channelID;
  • 功能描述
    释放抢到的麦。

  • 参数说明
    channelID:抢麦的频道id。

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

连麦相关设置

  • 语法
(YouMeErrorCode_t) setInviteMicOption:(NSString*) channelID waitTimeout:(int)waitTimeout maxTalkTime:(int)maxTalkTime;
  • 功能描述
    连麦相关设置(角色是频道的管理者或者主播时调用此接口进行频道内的连麦设置)。

  • 参数说明
    channelID:连麦的频道id。
    waitTimeout:等待对方响应超时时间(秒)。
    maxTalkTime:最大通话时间(秒)。

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

发起连麦请求

  • 语法
(YouMeErrorCode_t) requestInviteMic:(NSString*) channelID strUserID:(NSString*)pUserID strContent:(NSString*) pContent;
  • 功能描述
    发起与某人的连麦请求(主动呼叫)。支持跨频道发起连麦。

  • 参数说明
    channelID:连麦的频道id。
    pUserID:被叫方的用户id。
    pContent:游戏传入的上下文内容,通知回调会传回此内容(目前只支持纯文本格式)。

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

回应连麦请求

  • 语法
(YouMeErrorCode_t) responseInviteMic:(NSString*) pUserID isAccept:(bool)isAccept strContent:(NSString*) pContent;
  • 功能描述
    对连麦请求做出回应(被动应答)。

  • 参数说明
    pUserID:主叫方的用户id。
    isAccept:是否同意连麦。
    pContent:游戏传入的上下文内容,通知回调会传回此内容(目前只支持纯文本格式)。

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

停止连麦

  • 语法
(YouMeErrorCode_t) stopInviteMic;

广播消息

  • 语法
(YouMeErrorCode_t) sendMessage:(NSString*) channelID  strContent:(NSString*) strContent  requestID:(int*) requestID;
  • 功能
    在语音频道内,广播一个文本消息。

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

  • 返回值
    返回YOUME_SUCCESS才会有异步回调通知。其它返回值请参考YouMeErrorCode类型定义

  • 异步回调
    发送方会收到YOUME_EVENT_SEND_MESSAGE_RESULT回调,通知发送消息的结果。 频道内其他人收到YOUME_EVENT_MESSAGE_NOTIFY回调,通知消息内容。
//VoiceEngineCallback
//event:YOUME_EVENT_SEND_MESSAGE_RESULT: 发送消息的结果回调,param为requestID的字符串
//event:YOUME_EVENT_MESSAGE_NOTIFY:频道内其他人收到消息的通知。param为文本内容
- (void)onYouMeEvent:(YouMeEvent_t)eventType errcode:(YouMeErrorCode_t)iErrorCode roomid:(NSString *)roomid param:(NSString *)param;

把人踢出房间

  • 语法
(YouMeErrorCode_t) kickOtherFromChannel:(NSString*) userID  channelID:(NSString*)channelID   lastTime:(int) lastTime;
  • 功能
    把人踢出房间。

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

  • 返回值
    返回YOUME_SUCCESS才会有异步回调通知。其它返回值请参考YouMeErrorCode类型定义

  • 异步回调
//VoiceEngineCallback
//event:YOUME_EVENT_KICK_RESULT: 踢人方收到,发送消息的结果回调,param为被踢者ID
//event:YOUME_EVENT_KICK_NOTIFY: 被踢方收到,被踢通知,会自动退出所在频道。param: (踢人者ID,被踢原因,被禁时间)
- (void)onYouMeEvent:(YouMeEvent_t)eventType errcode:(YouMeErrorCode_t)iErrorCode roomid:(NSString *)roomid param:(NSString *)param;

设置日志等级

  • 语法
(void) setLogLevel:(YOUME_LOG_LEVEL_t) level;
  • 功能
    设置日志等级。

  • 参数说明
    level:日志等级。小于等于该等级的日志会打印。

反初始化

  • 语法

    (YouMeErrorCode_t)unInit;
  • 功能
    反初始化引擎,可在退出游戏时调用,以释放SDK所有资源。

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

变声相关文档

需要配合游密变声管理模块文档使用。

设置变声是否可用

(YouMeErrorCode_t) setMagicVoiceEnable:(bool)enabled;
  • 功能
    设置变声是否可用。

  • 参数说明
    enabled:设置变声是否可用,开启后会略微增大声音延迟。

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