为方便 Cocos2D 开发者调试和接入腾讯云游戏多媒体引擎产品 API,这里向您介绍适用于 Cocos2D 开发的快速接入文档。
重要接口 | 接口含义 |
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、鉴权信息
函数原型
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);