H5 SDK 参考手册
1 Cloudplay对象
| 方法 | 描述 | 方法 | 描述 |
|---|---|---|---|
| initSDK | 初始化SDK | startGame | 启动游戏 |
| stopGame | 停止游戏 | enableAudio | 音频播放 |
| getCid | 获取本次云游戏的cid | bringUpApp | 将游戏切换成前台 |
| enterQueue | 进入排队 | outQueue | 退出排队 |
| getNetInfo | 获取网络请求数据接口 | getGameArchiveStatus | 获取游戏的存档状态 |
| gameArchived | 游戏是否存在存档 | checkPlayingGame | 检测进行中的游戏 |
| getCloudPlayStatusCode | 获取云游戏状态码 | reportFinishInfo | 云游戏结束信息上报接口 |
| sendMessage | 发送消息到服务器 | setScreenDirection | 设置游戏画面方向 |
| getStreamingDomain | 获取推流地址域名 | switchResolution | 切换清晰度 |
| getPinCode | 获取授权码 |
2 initSDK
调用方法
Cloudplay.initSDK({
accessKeyID: '',
channelId: '',
onSceneChanged: function (sceneId, extraInfo) {
console.log('sceneId:' + sceneId, extraInfo);
if (sceneId === 'play') {
alert('游戏开始了');
}
},
MessageHandler: function (message) {
console.log('got message:', message);
}
});
参数说明
| 参数 | 类型 | 必选 | 说明 |
|---|---|---|---|
| accessKeyID | string | 是 | 接入商唯一ID |
| channelId | string | 是 | 接入方自行定义,主要方便接入方推广需要,如一个APK,发布到不同的推广平台时用不同channelId |
| isIgnoreResizeEvent | boolean | 否 | 是否忽略SDK内部的resize事件。默认:false;忽略:true;不忽略:false; |
| onSceneChanged | function | 是 | 场景切换回调函数:参考本文档中的“onSceneChanged回调函数说明” |
| MessageHandler | function | 是 | 支付消息的回调函数:参考本文档中的“MessageHandler回调函数说明” |
onSceneChanged回调函数说明
| sceneId | sceneId说明 | extraInfo类型 | extraInfo属性名 | extraInfo属性说明 |
|---|---|---|---|---|
| init | 初始化中 | null | ||
| play | 开始游戏 | null | ||
| stop | 游戏结束 | object | interval | 本次游戏时间,单位:秒 |
| ~ | ~ | ~ | reason | timeLimit:本次游戏时间已到 noOperation:无操作超时,默认20分钟,可联系运营人员修改配置 instanceError:云端实例出错 tokenExpire:Token过期失效 maintainServer:正在维护服务器 internalError:内部错误 instanceLimit:超过实例数的申请上限 queueLimit:排队人数过多,禁止排队 internal:主动停止游戏 tokenFailed:token鉴权失败 |
| ~ | ~ | ~ | message | 提示信息 |
| ~ | ~ | ~ | stateChangeReason | 通过调用服务端接口释放游戏时,透传的reason |
| ~ | ~ | ~ | errorCode | 错误码(包含cid) |
| ~ | ~ | ~ | errorCodeWithoutCid | 错误码 |
| maintain | 服务器维护 | object | progress | soon:维护进度即将开始 start:开始 |
| ~ | ~ | ~ | time | 时间,单位:秒 |
| ~ | ~ | ~ | message | 提示信息 |
| timeout | 游戏时间结束,但不结束游戏 | object | interval | 本次游戏时间,单位:秒 |
| ~ | ~ | ~ | message | 提示信息 |
| remainingTime | 剩余游戏时间 | object | time | 剩余可玩的游戏时间,单位:秒 |
| ~ | ~ | ~ | countDown | true:需要倒计时 false:不需要倒计时 |
| wait | 排队 | object | reason | showQueueInfo:显示当前的排队信息 applyGame:排队完成,正在进入游戏 whetherToQueue:是否进入排队,如果进入排队调用Cloudplay.enterQueue(),否则调用Cloudplay.outQueue() |
| ~ | ~ | ~ | message | 提示信息 |
| ~ | ~ | ~ | waitingPeople | 等待人数 |
| ~ | ~ | ~ | waitingTime | 预计等待时间,单位:秒 |
| totalTime | 本次可玩游戏时间 | object | time | 单位:秒 |
| ~ | ~ | ~ | message | 提示信息 |
| reconnectingStatus | 重连状态提示 | object | message | 提示信息 |
| offline | 断网提示 | object | message | 提示信息 |
| warning | 出错提示 | object | message | 提示信息 |
| loadPlayer | 加载播放器 | object | result | true:成功 false:失败 |
| qqup | 云上调起了QQ应用 | null | ||
| delay | 画面延迟 | object | delay | 当前画面的延时,单位:毫秒。 备注:只有使用WebRTC播放器时才有此参数 |
| packetsLost | 丢包率 | object | packetsLost | 当前画面的丢包率,单位:%。 备注:只有使用WebRTC播放器时才有此参数 |
| packetsLost | 丢包率 | object | packetsLost | 当前画面的丢包率,单位:%。 备注:只有使用WebRTC播放器时才有此参数 |
| transmit | 游戏退出场景回调 | object | type | gameSignOut 用户主动退出 |
| openGallery | 打开相册 | _ | _ | _ |
| openCamera | 打开摄像头 | _ | _ | _ |
| share | 分享 | _ | _ | _ |
| crst | 切换码率开始 | object | source | 当前码率 |
| ~ | ~ | ~ | des | 目标码率 |
| cred | 切换码率完成 | object | result | 0:失败; 1:成功 |
| ~ | ~ | ~ | cur_rate | 当前码率 |
| ~ | ~ | ~ | method | 自动手动模式; 0:手动; 1:自动 |
| resolutionList | 清晰度列表 | object | list | ist:数组 [{id:‘’,name:‘’}…] |
| ~ | ~ | ~ | selected | 当前选中清晰度id |
| idcInfo | IDC信息 | object | idcId | IDC编号 |
| ~ | ~ | ~ | idcName | IDC名称 |
| newFileAppear | 有新的可下载文件 | object | image_name | 文件名称 |
| fileList | 可下载文件列表 | object | list | 可下载文件列表 [name1,name2…] 排序为倒序。 |
| downLoadFileInfo | 下载文件状态 | object | success | 下载是否成功 成为为true,失败为false |
| ~ | ~ | ~ | msg | 失败时为错误信息描述 |
| ~ | ~ | ~ | fileBold | 当前下载文件的二进制流 |
| ~ | ~ | ~ | fileType | 当前下载文件的类型 |
| ~ | ~ | ~ | fileSize | 当前下载文件的大小 |
| ~ | ~ | ~ | fileName | 当前下载文件的名称 |
| cancelDownLoadFail | 取消下载失败原因 | object | msg | 失败原因描述 只在取消失败时触发,成功不触发。 |
| applyPinCode | 获取授权码 | object | result | 0:失败; 1:成功 |
| ~ | ~ | ~ | cid | 当前cid |
| ~ | ~ | ~ | pinCode | 控制权转移所需授权码 |
| ~ | ~ | ~ | msg | 失败提示语 |
| seizingControl | 获取控制权事件 | object | result | 0:失败; 1:成功 |
| ~ | ~ | ~ | cid | 控制权抢夺者cid |
| ~ | ~ | ~ | msg | 失败提示语 |
| getControl | 获取控制权结果 | object | result | 0:失败; 1:成功 |
MessageHandler回调函数说明
| 参数名 | 类型 | 必选 | 说明 |
|---|---|---|---|
| userId | string | 否 | 目标userId |
| from | string | 是 | 消息发送方标识 |
| to | string | 是 | 消息接收方标识 |
| mid | string | 是 | 消息ID |
| type | int | 是 | 消息类型:固定值为1 |
| ack | int | 是 | 应答类型:固定值为0 |
| payload | string | 是 | 消息内容 |
3 startGame
调用方法
Cloudplay.startGame('example', {
userInfo: {
uId: '',
uToken: '',
uType: 0
},
pkgName: '',
appChannel: '1',
cToken: '',
isPortrait: false,
priority: 0,
configInfo: '',
playingtime: 1200,
streamType: '1',
isArchive: true,
cid: '',
protoData: '',
extraId: '',
});
参数说明
| 参数 | 类型 | 必选 | 说明 |
|---|---|---|---|
| uId | string | 是 | 自行定义32位以内a-z,0-9字符串 |
| uToken | string | 是 | 自行定义32位以内a-z,0-9字符串 |
| uType | int | 是 | 默认传0 |
| pkgName | string | 是 | 游戏包名称 |
| appChannel | string | 否 | 游戏渠道号 |
| cToken | string | 是 | 用来校验参数的有效性:生成算法详见本文档的cToken生成算法 |
| isPortrait | boolean | 是 | 游戏的横竖屏属性:true为竖屏游戏;false为横屏游戏 |
| priority | int | 是 | 申请游戏服务的优先级;默认设置为0;值越大优先级越高 |
| configInfo | string | 是 | 免登录功能所需信息,如不使用,传任意非空字符串 |
| playingtime | int | 是 | 用户可以玩的总游戏时间,单位:毫秒,可联系营运人员配置 |
| streamType | string | 否 | 指定使用哪种 Streaming, 1:WebRTC, 0:H5Streaming |
| isArchive | boolean | 否 | 是否存档:默认为true;true存档;false不存档; |
| cid | int | 否 | 游戏的cid,(抢夺控制权时为被抢夺者cid) |
| protoData | string | 否 | 透传字段,服务器端状态同步接口透传使用 |
| extraId | string | 否 | 预留字段,传空字符串 |
| archiveFromUserId | string | 否 | 被读取文档用户 id |
| archiveFromBid | string | 否 | 被读取文档 bid |
| componentType | number | 否 | 组件类型,0为activity,1为service,2为broadcast |
| componentName | string | 否 | 指定的组件名, 格式(packageName/componentName),如(快手开心消消乐):com.happyelements.AndroidAnimal.kuaishou/com.happyelements.hellolua.MainActivity |
| action | string | 否 | 组件对应的action |
| extraData | object | 否 | 免登参数(⻅定义4.2.1) |
| viewResolutionWidth | number | 否 | 游戏画面分辨率 宽 |
| viewResolutionHeight | number | 否 | 游戏画面分辨率 高 |
| pinCode | string | 否 | 抢夺控制权授权码(抢夺控制权使用,同时需要被抢夺者:cid,accessKeyID) |
4 stopGame
调用方法
Cloudplay.stopGame(function(data){});
回调函数返回的数据说明
| 属性 | 类型 | 说明 |
|---|---|---|
| code | int | 0:成功, 非0:失败 |
5 enableAudio
调用方法
Cloudplay.enableAudio(enabled);
参数说明
| 参数 | 类型 | 必选 | 说明 |
|---|---|---|---|
| enabled | boolean | 是 | 是否播放音频:true: 播放;false: 静音 |
6 getCid
调用方法
Cloudplay.getCid();
返回数据说明
| 属性 | 类型 | 说明 |
|---|---|---|
| cid | string | 本次游戏的cid |
7 bringUpApp
调用方法
Cloudplay.bringUpApp();
8 enterQueue
调用方法
Cloudplay.enterQueue();
9 outQueue
调用方法
Cloudplay.outQueue();
10 getNetInfo
调用方法
Cloudplay.getNetInfo();
返回数据说明
| 属性 | 说明 |
|---|---|
| url | 网络请求的url |
| time | 请求耗时 |
| result | 请求结果。 |
| msg | 结果详细描述 |
| uid | 当前用户的uid |
| cid | 当前云游的cid |
| action | 请求的类型(长连接:access、input连接:input、视频流:videoUrl、音频流:audioUrl、action:actionId)。 |
| transId | 当前申请的唯一ID |
| packageName | 请求的游戏包名。 |
| startTime | 开始请求的时间 |
| responseTime | 请求结束的时间。 |
11 getGameArchiveStatus
调用方法
Cloudplay.getGameArchiveStatus({
userInfo: {
uId: '',
uToken: '',
uType: 0
},
pkgName: '',
appChannel: '1',
ifCanPlay: function (res) {
// todo
},
});
参数说明
| 参数 | 类型 | 必选 | 说明 |
|---|---|---|---|
| uId | string | 是 | 自行定义32位以内a-z,0-9字符串 |
| uToken | string | 否 | 自行定义32位以内a-z,0-9字符串 |
| uType | int | 否 | 默认传0 |
| pkgName | string | 是 | 游戏包名称 |
| appChannel | string | 否 | 游戏渠道号 |
| ifCanPlay | function | 是 | 回调函数 |
返回数据说明
| 属性 | 类型 | 说明 |
|---|---|---|
| code | int | 0:获取信息成功, 1:获取信息失败 |
| errorMessage | string | 报错信息 |
| ifCanPlay | boolen | true: 可以进行游戏, false:不可进行游戏 |
12 gameArchived
调用方法
Cloudplay.gameArchived({
userInfo: {
uId: '',
uToken: '',
uType: 0
},
pkgName: '',
appChannel: '1',
hasArchive: function (res) {
// todo
},
});
参数说明
| 参数 | 类型 | 必选 | 说明 |
|---|---|---|---|
| uId | string | 是 | 自行定义32位以内a-z,0-9字符串 |
| uToken | string | 否 | 自行定义32位以内a-z,0-9字符串 |
| uType | int | 否 | 默认传0 |
| pkgName | string | 是 | 游戏包名称 |
| appChannel | string | 否 | 游戏渠道号 |
| hasArchive | function | 是 | 回调函数 |
返回数据说明
| 属性 | 类型 | 说明 |
|---|---|---|
| code | int | 0:获取信息成功, 1:获取信息失败 |
| errorMessage | string | 报错信息 |
| hasArchive | boolen | true: 有存档, false:没有存档 |
13 checkPlayingGame
调用方法
Cloudplay.checkPlayingGame({
userInfo: {
uId: '',
uToken: '',
uType: 0
},
playingGame: function (res) {
// todo
},
});
参数说明
| 参数 | 类型 | 必选 | 说明 |
|---|---|---|---|
| uId | string | 是 | 自行定义32位以内a-z,0-9字符串 |
| uToken | string | 否 | 自行定义32位以内a-z,0-9字符串 |
| uType | int | 否 | 默认传0 |
| playingGame | function | 是 | 回调函数 |
返回数据说明
| 属性 | 类型 | 说明 |
|---|---|---|
| code | int | 0:获取信息成功, 1:获取信息失败 |
| errorMessage | string | 报错信息 |
| playingGame | array | [{appChannel: “”, cid: “”, pkgName: “”}] 未释放游戏的appChannel、cid、pkgName信息。如果数组为空,则没有未释放的游戏 |
14 getCloudPlayStatusCode
调用方法
Cloudplay.getCloudPlayStatusCode();
返回数据说明
| 属性 | 类型 | 说明 |
|---|---|---|
| 100999001 | int | 没流地址,cid未获取成功(初始状态) |
| 100999002 | int | 没流地址,cid获取成功,Socket连接失败。 |
| 100999003 | int | 没流地址,cid获取成功,Socket连接成功,乒乓状态异常。 |
| 100999004 | int | 没流地址,cid获取成功,Socket连接成功,乒乓状态正常。 |
| 100999005 | int | 有流地址,video成功。 |
| 100999006 | int | 有流地址,video失败,audio成功。 |
| 100999007 | int | 有流地址,video失败,audio失败,input成功。 |
| 100999008 | int | 有流地址,video失败,audio失败,input失败。 |
15 reportFinishInfo
调用方法
Cloudplay.reportFinishInfo({
finishCode: 0,
pkgName: '',
appChannel: '',
gameId: '',
cid: '',
sdkVersion: '',
});
参数说明
| 参数 | 类型 | 说明 |
|---|---|---|
| finishCode | string | 结束状态 0:正常结束, 1:超时结束, 2:异常结束有SDK错误码,3:异常结束无SDk错误码。 |
| pkgName | string | 云游戏包名 |
| appChannel | string | 云游戏渠道号 |
| gameId | string | 云游戏id号 |
| cid | string | 云游戏cid |
| sdkVersion | string | SDK版本号 |
16 sendMessage
调用方法
Cloudplay.sendMessage(payload)
参数说明
| 参数名 | 类型 | 必选 | 说明 |
|---|---|---|---|
| payload | string | 是 | 发送的数据信息 |
17 getStreamingDomain
调用方法
Cloudplay.getStreamingDomain();
18 setScreenDirection
调用方法
Cloudplay.setScreenDirection(direction);
参数说明
| 参数名 | 类型 | 必选 | 说明 |
|---|---|---|---|
| direction | string | 是 | 画面方向:landscape横向;portrait竖向; |
19 upload
调用方法
Cloudplay.upload({
file: files[0],
opType: 'upload_image',
onSuccess: function (opType, file) {
console.log(opType, file)
},
onError: function (opType, message) {
console.log('wxy', opType, message)
}
});
参数说明
| 参数名 | 类型 | 必选 | 说明 |
|---|---|---|---|
| file | File | 是 | 要上传的⽂件 |
| opType | string | 是 | ⽬前⽀持类型: upload_image |
| onSuccess | function | 是 | 上传成功回调, |
| onError | function | 是 | 上传失败回调 |
*onSuccess回调说明 *
| 参数名 | 类型 | 必选 | 说明 |
|---|---|---|---|
| file | File | 是 | 上传成功的原始⽂件 |
| opType | string | 是 | ⽬前⽀持类型: upload_image |
*onError回调说明 *
| 参数名 | 类型 | 必选 | 说明 |
|---|---|---|---|
| message | File | 是 | 上传成功的原始⽂件 |
| opType | string | 是 | 当前上传类型:upload_image |
20 switchResolution
调用方法
Cloudplay.switchResolution(id,callback);
参数说明
| 参数名 | 类型 | 必选 | 说明 |
|---|---|---|---|
| id | string | 是 | 需要切换到的清晰度id |
| callback | function | 是 | 清晰度切换结束之后回调函数 |
21 sendWSMessage
调用方法
Cloudplay.sendWSMessage({
type: 'clipboard',
data: [{itemType: 'text/plain', itemData: 'abc'}],
mid: (Math.random() * 1000000).toString().replace('.', ''),
callback: function (messageId, successed, message) {
console.log('sendWSMessage id: ' + messageId + ', result: ' + successed + ', description: ' + message);
}
}
);
参数说明
| 参数名 | 类型 | 必选 | 说明 |
|---|---|---|---|
| type | String | 是 | 消息类型,目前支持:clipboard 剪贴板 |
| data | Array | 是 | 发送的内容 |
| mid | String | 是 | 消息唯一ID |
| callback | function | 是 | 发送结果回调 |
*onSuccess回调说明 *
| 参数名 | 类型 | 必选 | 说明 |
|---|---|---|---|
| messageId | String | 是 | 发送是填入的消息ID |
| successed | Boolean | 是 | 是否发送成功 |
| message | String | 是 | 发送结果说明 |
22 setScreenDirection
调用方法
Cloudplay.setScreenDirection(direction);
参数说明
| 参数名 | 类型 | 必选 | 说明 |
|---|---|---|---|
| direction | string | 是 | 画面方向:landscape横向;portrait竖向; |
23 getFileList
调用方法
Cloudplay.getFileList(option);
参数说明
| 参数名 | 类型 | 必选 | 说明 |
|---|---|---|---|
| size | number | 否 | 文件列表数量,默认为 19 (最大值为20) |
| offset | number | 否 | 第一个文件起始位置,默认为0 |
| callback(fileList) | function | 否 | 获取文件列表回调函数,同场景“fileList”返回值 |
24 downLoadFile
调用方法
Cloudplay.downLoadFile(name,function(file){});
参数说明
| 参数名 | 类型 | 必选 | 说明 |
|---|---|---|---|
| name | string | 是 | 准备下载的文件名称 |
| function(file) | function | 否 | 下载动作结束的回调函数 |
| file | object | 否 | 同场景回调 downLoadFileInfo 返回值 |
25 cancelDownLoadFile
调用方法
Cloudplay.cancelDownLoadFile(name);
参数说明
| 参数名 | 类型 | 必选 | 说明 |
|---|---|---|---|
| name | string | 是 | 准备下载的文件名称 |
26 getPinCode
调用方法
Cloudplay.getPinCode();