快速入门

最近更新时间:2019-06-27 15:11:18

为方便 iOS 开发者调试和接入腾讯云游戏多媒体引擎产品 API,这里向您介绍适用于 iOS 开发的快速接入文档。

GME 快速入门文档只提供最主要的接入接口,更多详细接口请参考 相关接口文档

重要接口 接口含义
InitEngine 初始化 GME
Poll 触发事件回调
SetDefaultAudienceAudioCategory 设置后台
EnterRoom 进房
EnableMic 开麦克风
EnableSpeaker 开扬声器

说明:

  • GME 使用前请对工程进行配置,否则 SDK 不生效。
  • GME 的接口调用成功后返回值为 QAVError.OK,数值为 0。
  • GME 的接口调用要在同一个线程下。
  • GME 加入房间需要鉴权,请参考文档关于鉴权部分内容。
  • GME 需要周期性的调用 Poll 接口触发事件回调。
  • GME 回调信息参考回调消息列表。
  • 设备的操作要在进房成功之后。
  • 错误码详情可参考 错误码

快速接入步骤

1、获取单例

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

函数原型

ITMGContext ITMGDelegate <NSObject>

示例代码

ITMGContext* _context = [ITMGContext GetInstance];
_context.TMGDelegate =self;

2、初始化 SDK

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

注意:

初始化 SDK 之后才可以进房。

函数原型

ITMGContext -(int)InitEngine:(NSString*)sdkAppID openID:(NSString*)openID
参数 类型 意义
sdkAppId NSString 来自腾讯云控制台的 sdkAppID 号码
openID NSString OpenID 只支持 Int64 类型(转为 string 传入),必须大于10000,用于标识用户

示例代码

[[ITMGContext GetInstance] InitEngine:SDKAPPID3RD openID:_openId];

3、触发事件回调

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

函数原型

ITMGContext -(void)Poll

示例代码

[[ITMGContext GetInstance] Poll];

4、鉴权信息

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

函数原型

@interface QAVAuthBuffer : NSObject
+ (NSData*) GenAuthBuffer:(unsigned int)appId roomId:(NSString*)roomId openID:(NSString*)openID key:(NSString*)key;
+ @end
参数 类型 意义
appId int 来自腾讯云控制台的 sdkAppID 号码
roomId NSString 房间号,最大支持127字符(离线语音房间号参数必须填 null)
openID NSString 用户标识
key NSString 来自腾讯云 控制台 的密钥

示例代码

NSData* authBuffer =   [QAVAuthBuffer GenAuthBuffer:SDKAPPID3RD.intValue roomId:_roomId openID:_openId key:AUTHKEY];

5、加入房间

用生成的鉴权信息进房,会收到消息为 ITMG_MAIN_EVENT_TYPE_ENTER_ROOM 的回调。加入房间默认不打开麦克风及扬声器。返回值为 AV_OK 的时候代表成功。

函数原型

ITMGContext   -(int)EnterRoom:(NSString*) roomId roomType:(int*)roomType authBuffer:(NSData*)authBuffer
参数 类型 意义
roomId NSString 房间号,最大支持127字符
roomType int 房间音频类型
authBuffer NSData 鉴权码

房间音频类型请参考 音质选择

示例代码

[[ITMGContext GetInstance] EnterRoom:_roomId roomType:_roomType authBuffer:authBuffer];

6、加入房间事件的回调

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

- (void)OnEvent:(ITMG_MAIN_EVENT_TYPE)eventType data:(NSDictionary*)data

回调处理相关参考代码。

示例代码

-(void)OnEvent:(ITMG_MAIN_EVENT_TYPE)eventType data:(NSDictionary *)data{
    NSLog(@"OnEvent:%lu,data:%@",(unsigned long)eventType,data);
    switch (eventType) {
        case ITMG_MAIN_EVENT_TYPE_ENTER_ROOM:
        {
            int result = ((NSNumber*)[data objectForKey:@"result"]).intValue;
            NSString* error_info = [data objectForKey:@"error_info"];
                //收到进房成功事件
        }
            break;
    }
}

Data详情

消息 Data 例子
ITMG_MAIN_EVENT_TYPE_ENTER_ROOM result; error_info {"error_info":"","result":0}

7、开启关闭麦克风

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

函数原型

ITMGContext GetAudioCtrl -(void)EnableMic:(BOOL)enable
参数 类型 意义
isEnabled boolean 如果需要打开麦克风,则传入的参数为 YES,如果关闭麦克风,则参数为 NO

示例代码

[[[ITMGContext GetInstance] GetAudioCtrl] EnableMic:YES];

8、开启关闭扬声器

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

函数原型

ITMGContext GetAudioCtrl -(void)EnableSpeaker:(BOOL)enable
参数 类型 意义
isEnabled boolean 如果需要关闭扬声器,则传入的参数为 NO,如果打开扬声器,则参数为 YES

示例代码

[[[ITMGContext GetInstance] GetAudioCtrl] EnableSpeaker:YES];