有奖捉虫:办公协同&微信生态&物联网文档专题 HOT
为方便 Cocos2D 开发者调试和接入腾讯云游戏多媒体引擎产品 API,这里向您介绍适用于 Cocos2D 开发的快速接入文档。
GME 快速入门文档只提供最主要的接入接口,更多详细接口请参考 相关接口文档
重要接口
接口含义
Init
初始化 GME
Poll
触发事件回调
EnterRoom
进房
EnableMic
开麦克风
EnableSpeaker
开扬声器
说明
GME 使用前请对工程进行配置,否则 SDK 不生效。
GME 的接口调用成功后返回值为 AV_OK,数值为 0。
GME 的接口调用要在同一个线程下。
GME 需要周期性的调用 Poll 接口触发事件回调。
GME 回调信息参考回调消息列表。
设备的操作要在进房成功之后。
错误码详情可参考 错误码

快速接入步骤

1、获取单例

在使用语音功能时,需要首先获取 ITMGContext 对象。

示例代码

ITMGContext* context = ITMGContextGetInstance();
context->SetTMGDelegate(this);

2、初始化 SDK

参数获取请查看 接入指引。 此接口需要来自腾讯云控制台的 AppID 号码作为参数,再加上 openID,这个 openID 是唯一标识一个用户,规则由 App 开发者自行制定,App 内不重复即可(目前只支持 INT64)。
注意
初始化 SDK 之后才可以进房。

函数原型

ITMGContext virtual int Init(const char* sdkAppId, const char* openID)
参数
类型
含义
sdkAppId
char*
来自腾讯云控制台的 AppId 号码。
openId
char*
OpenID 只支持 Int64 类型(转为 char* 传入),数值必须大于 10000,用于标识用户

示例代码

#define SDKAPPID3RD "1400089356"
cosnt char* openId="10001";
ITMGContext* context = ITMGContextGetInstance();
context->Init(SDKAPPID3RD, openId);

3、触发事件回调

通过在 update 里面周期的调用 Poll 可以触发事件回调。

函数原型

class ITMGContext {
protected:
virtual ~ITMGContext() {}

public:
virtual void Poll()= 0;
}

示例代码

ITMGContextGetInstance()->Poll();

4、鉴权信息

生成 AuthBuffer,用于相关功能的加密和鉴权,如正式发布请使用后台部署密钥,后台部署请参考 鉴权密钥离线语音获取鉴权时,房间号参数必须填 null。

函数原型

int QAVSDK_AuthBuffer_GenAuthBuffer(unsigned int dwSdkAppID, const char* strRoomID, const char* strOpenID,
const char* strKey, unsigned char* strAuthBuffer, unsigned int bufferLength);
参数
类型
含义
dwSdkAppID
int
来自腾讯云控制台的 AppId 号码。
strRoomID
char*
房间号,最大支持127字符(离线语音房间号参数必须填 null)
strOpenID
char*
用户标识。与 Init 时候的 openID相同。
strKey
char*
来自腾讯云 控制台 的权限密钥。
strAuthBuffer
char*
返回的 authbuff
bufferLength
int
传入的 authbuff 长度,建议为 500

示例代码

unsigned int bufferLen = 512;
unsigned char retAuthBuff[512] = {0};
QAVSDK_AuthBuffer_GenAuthBuffer(atoi(SDKAPPID3RD), roomId, "10001", AUTHKEY,retAuthBuff,bufferLen);

5、加入房间

用生成的鉴权信息进房,会收到消息为 ITMG_MAIN_EVENT_TYPE_ENTER_ROOM 的回调。加入房间默认不打开麦克风及扬声器。返回值为 AV_OK 的时候代表成功。 如果普通语音进房,业务方面无涉及范围语音需求,则使用普通进房接口。详细信息请查看 范围语音

函数原型

ITMGContext virtual int EnterRoom(const char* roomID, ITMG_ROOM_TYPE roomType, const char* authBuff, int buffLen)
参数
类型
含义
roomID
char*
房间号,最大支持127字符
roomType
ITMG_ROOM_TYPE
房间音频类型
authBuffer
char*
鉴权码
buffLen
int
鉴权码长度
房间音频类型请参考 音质选择

示例代码

ITMGContext* context = ITMGContextGetInstance();
context->EnterRoom(roomID, ITMG_ROOM_TYPE_STANDARD, (char*)retAuthBuff,bufferLen);

6、加入房间事件的回调

加入房间完成后会发送信息 ITMG_MAIN_EVENT_TYPE_ENTER_ROOM,在 OnEvent 函数中进行判断。

示例代码


void TMGTestScene::OnEvent(ITMG_MAIN_EVENT_TYPE eventType,const char* data){
switch (eventType) {
case ITMG_MAIN_EVENT_TYPE_ENTER_ROOM:
{
//进行处理
break;
}
}
}

7、开启关闭麦克风

此接口用来开启关闭麦克风。加入房间默认不打开麦克风及扬声器。

函数原型

ITMGAudioCtrl virtual int EnableMic(bool bEnabled)
参数
类型
含义
bEnabled
bool
如果需要打开麦克风,则传入的参数为 true,如果关闭麦克风,则参数为 false

示例代码

ITMGContextGetInstance()->GetAudioCtrl()->EnableMic(true);

8、开启关闭扬声器

此接口用于开启关闭扬声器。

函数原型

ITMGAudioCtrl virtual int EnableSpeaker(bool enabled)
参数
类型
含义
enable
bool
如果需要关闭扬声器,则传入的参数为 false,如果打开扬声器,则参数为 true

示例代码

ITMGContextGetInstance()->GetAudioCtrl()->EnableSpeaker(true);