H5 SDK 开发指南
文档版本号:2024131-112
变更说明:
SDK版本号 | 日期 | 更新内容 |
---|---|---|
master-6.42 | 2024/1/31 | 1、设置鼠标模式Cloudplay.setMouseMode方法,增加滑屏、滑鼠模式 |
master-6.23 | 2023/7/10 | 1、新增场景回调cursorInfo,返回当前鼠标信息 2、新增场景回调gameScreenInfo,返回当前视频流的宽高 3、修改Cloudplay.sendMessageToRom方法,使其支持发送操作指令到实例端 4、新增Cloudplay.resetInputTimer()重置无操作超时计时器 |
master-6.22.1 | 2023/6/25 | 1、移除设置按键鼠标移动速度方法Cloudplay.setBtnMouseMoveRatio 2、更改设置全键盘显隐方法Cloudplay.showKeyboard为Cloudplay.setFullKeyboardState 3、更改设置Xbox、键鼠显隐方法Cloudplay.showGamepad为Cloudplay.setVirtualKeys 4、更改获取Xbox、键鼠按键类型方法Cloudplay.getVirtualGamepadType为Cloudplay.getVirtualKeys 5、新增获取全键盘是否显示Cloudplay.getFullKeyboardState用于查看当前全键盘是否显示 6、新增获取鼠标移动速度方法Cloudplay.getMouseMoveRatio用于查看当前鼠标移动速度 7、新增获取鼠标模式方法Cloudplay.setMouseMode用于查看当前设置的鼠标模式 |
master-6.4.0 | 2023/3/30 | 1、控制权查询方法的参数传入 |
master-6.3.0 | 2022/11/1 | 1、onSceneChanged回调函数中新增videoStreamInfo场景,获取视频流信息 |
master-6.2.0 | 2022/8/26 | 1、鼠标模式新增触控类型3——多点触控 2、onSceneChanged回调函数,新增mediaAction场景,用于获取摄像头、麦克风状态通知 3、onSceneChanged回调函数,新增gameExtraData场景,用于获取支付状态通知 4、支持全面屏(点对点)功能 |
master-6.1.0 | 2022/5/16 | 1、wait场景增加waitingTotalNum等待总人数字段 |
master-6.0.0 | 2022/4/28 | 1、首次发版 |
1 产品简介
欢迎使用海马云游戏服务,本文档主要介绍云游戏H5端SDK的接入流程及提供支持的API详情,开发者通过接入海马云游戏SDK,可以实现云游戏的播放、停止、状态回调等各类控制操作和数据交互,在海马云游戏端到端全栈云服务能力基础上,为用户带来顺畅的云游戏体验。在开始接入SDK前,请确认您已经拥有海马云游戏平台接入方ID并创建了渠道号,并已经完成了在海马云游戏平台上传游戏包等相关准备工作。
2 集成指引
在页面上引入 js 和 css 文件即可开始使用。
<!-- 引入样式 -->
<link rel="stylesheet" href="./saas-sdk.css">
<!-- 引入SDK -->
<script src="./saas-sdk.js"></script>
文件说明
文件名 | 说明 |
---|---|
saas-sdk.css | 云游戏SDK的css样式 |
saas-sdk.js | 云游戏SDK的js插件 |
saas-player-worker.js | 云游戏SDK的平台播放器 |
saas-player-android.js | 云游戏SDK的Android平台播放器 |
saas-player-ios.js | 云游戏SDK的iOS平台播放器 |
img文件夹 | X86云游戏键位图片 |
3 快速开始
示例代码:
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<link rel="stylesheet" type="text/css" href="./saas-sdk.css">
<title>云游戏</title>
</head>
<body>
<div id="example"></div>
</body>
</html>
<script src="./saas-sdk.js"></script>
<script>
var initSDK = {
accessKeyId: "",
channelId: "",
onSceneChanged: function (sceneId, extraInfo) {
},
MessageHandler: function (message) {
}
};
var startGame = {
pkgName: "",
userInfo: {
uId: "",
uToken: "",
},
playingtime: 0,
configInfo: "",
cToken: "",
appChannel: "",
isPortrait: true,
};
Cloudplay.initSDK(initSDK);
Cloudplay.startGame("example", startGame);
</script>
4 国际化
云游戏默认使用中文,若希望使用其他语言,则需要进行多语言设置。以英文为例,在html文件中:
<!-- 引入语言包 -->
<script src="./saas-sdk-en-US.js"></script>
5 场景回调
5.1 通用场景
参数说明
sceneId | sceneId说明 | extraInfo类型 | extraInfo属性名 | extraInfo属性说明 |
---|---|---|---|---|
init | 初始化 | null | - | - |
play | 游戏开始 | Object | cid | 本次云玩的cid |
videoState | 当前播放状态 | |||
videoId | 播放器domId(使用非WebRTC为空) | |||
stop | 游戏结束 | Object | interval | 本次游戏时间,单位为s |
reason | timeLimit:本次游戏时间已到 noOperation:无操作超时 instanceError:云端实例出错 tokenExpire:Token过期失效 maintainServer:正在维护服务器 internalError:内部错误 instanceLimit:超过实例数的申请上限 queueLimit:排队人数过多,禁止排队 internal:主动停止游戏 tokenFailed:token鉴权失败 normal:正常结束游戏 unsupportDevice:设备不支持 |
|||
message | 提示信息 | |||
stateChangeReason | 通过调用服务端接口释放游戏时,透传的reason | |||
errorCode | 错误码(包含cid) | |||
errorCodeWithoutCid | 错误码 | |||
timeout | 游戏时长到,但不结束游戏 | Object | interval | 本次游戏时长,单位为s |
message | 提示信息 | |||
remainingTime | 游戏剩余时长 | Object | time | 剩余可用游戏时长,单位为s |
countDown | true:需要倒计时 false:不需要倒计时 |
|||
wait | 排队 | Object | reason | showQueueInfo:显示当前的排队信息 applyGame:排队完成,正在进入游戏 whetherToQueue:是否进入排队,如果进入排队调用Cloudplay.enterQueue(),否则调用Cloudplay.outQueue() |
message | 提示信息 | |||
waitingPeople | 等待人数 | |||
waitingTotalNum | 等待总人数 | |||
waitingTime | 预计等待时间,单位为s | |||
totalTime | 可用游戏时长 | Object | time | 游戏时长,单位为s |
message | 提示信息 | |||
reconnectingStatus | SDK重连状态提示 | Object | message | 提示信息 |
offline | 网络断开 | Object | message | 提示信息 |
warning | 出错提示 | Object | message | 提示信息 |
loadPlayer | 加载播放器 | Object | result | true:成功 false:失败 |
crst | 切换清晰度开始 | Object | source | 当前清晰度id |
des | 目标清晰度id | |||
cred | 切换清晰度完成 | Object | result | 0:失败 1:成功 |
cur_rate | 当前清晰度id | |||
method | 0:手动 1:自动 |
|||
resolutionList | 清晰度列表 | Object | list | list:数组 [{id:"", name:""}...] |
selected | 当前清晰度id | |||
applyPinCode | 获取授权码 | Object | result | 0:失败 1:成功 |
cid | 本次云玩的cid | |||
pinCode | 授权码 | |||
msg | 提示信息 | |||
videoStreamInfo | 视频流信息 | Object | videoFps | 视频帧率,取不到为-1 |
bitRate | 视频码率,取不到为-1 | |||
packetsLostRate | 丢包率,取不到为-1 | |||
currentDelayMs | 帧网络耗时,取不到为-1 | |||
decodeDelay | 帧解码耗时,取不到为-1 | |||
renderDelay | 帧渲染耗时,取不到为-1 | |||
frameSize | 帧大小,取不到为-1 | |||
jitterBuffer | 抖动,取不到为-1 | |||
framesReceived | 收到的总帧数,取不到为-1 | |||
receiveFrameSize | 收到帧的总大小,取不到为-1 | |||
delay | 网络延迟,取不到为-1 | |||
codecImplementationName | 编解码器名称,取不到为空字符串 | |||
codecName | 解码器名称,取不到为空字符串 | |||
frameWidth | 视频宽度,取不到为-1 | |||
frameHeight | 视频高度,取不到为-1 | |||
gameScreenInfo | 视频流的宽高 | Object | width | 视频流宽 |
height | 视频流高 | |||
playReady | 播流地址已准备就绪 | Object | cid | 本次云玩的cid |
noInputTimeRemind | 无操作超时即将到 | Object | noInputRemainingTime | 无操作超时所剩时长,单位为s |
message | 提示信息 | |||
inputFocusNotify | 输入框获取焦点和失去焦点通知 | String | - | startIM:0.0000,0.9000:获取焦点及坐标 stopIM:失去焦点 |
startLiveState | 开始直播通知 | Object | result | 0:失败 1:成功 |
msg | 提示信息 | |||
endLiveState | 结束直播通知 | Object | result | 0:失败 1:成功 |
msg | 提示信息 | |||
distanceLimit | 用户与机房距离超过限制 | object | minDistance | 用户与机房距离,单位米 |
5.2 ARM游戏
参数说明
sceneId | sceneId说明 | extraInfo类型 | extraInfo属性名 | extraInfo属性说明 |
---|---|---|---|---|
qqup | 云上调起了QQ应用 | null | 无 | 无 |
openGallery | 打开相册 | null | 无 | 无 |
openCamera | 打开摄像头 | null | 无 | 无 |
share | 分享 | null | 无 | 无 |
storage | 云游戏中磁盘空间状态通知 | Object | action | 当前Action |
usablePercentage | 当前可用空间占用百分比 | |||
gps | 请求gps信息 | null | - | - |
intent | intent消息拦截通知 | null | - | - |
sensorList | sensor通知 | Array | cmd | 1:开启 0:关闭 |
samplingPeriodUs | sensor采样频率,单位为μs | |||
sendPeriodMs | 发送sensor数据频率,单位为ms | |||
sensorType | sensor对应的type。参考: https://developer.android.google.cn/reference/android/hardware/Sensor | |||
seizingControl | 获取控制权事件 | Object | result | 0:失败 1:成功 |
cid | 控制权抢夺者cid | |||
msg | 失败提示语 | |||
getControl | 获取控制权结果通知 | Object | result | 0:失败 1:成功 |
newFileAppear | 新的可下载文件 | Object | image_name | 文件名称 |
fileList | 可下载文件列表 | Object | list | 可下载文件列表 [name1,name2...] 排序为倒序 |
downLoadFileInfo | 下载文件状态 | Object | success | true:成功 false:失败 |
msg | 失败时为错误信息描述 | |||
fileBold | 文件二进制流 | |||
fileType | 文件的类型 | |||
fileSize | 文件的大小 | |||
fileName | 文件名称 | |||
cancelDownLoadFail | 取消下载失败原因 | Object | msg | 失败原因描述 |
newBigFile | 新文件通知 | Object | fileState | 0:文件开始创建 1:文件创建完成 |
name | 文件名称 | |||
url | 文件下载地址 | |||
type | 文件 | |||
duration | 文件时长,单位为s。(文件类型为视频格式时该属性生效) | |||
size | 文件大小,单位为Byte | |||
appNotForeground | app当前不在前台运行 | 无 | 无 | 无 |
appCrash | app崩溃 | 无 | 无 | 无 |
mediaDeviceRequestNotify | 获取摄像头、麦克风状态通知 | object | action | Camera:相机 Microphone:麦克风 |
data | op:0 设备关闭 op:1 设备开启 |
5.3 X86游戏
参数说明
sceneId | sceneId说明 | extraInfo类型 | extraInfo属性名 | extraInfo属性说明 |
---|---|---|---|---|
gameControl | 控制权状态通知 | Object | state | loses:失去 got:获得 |
cid | 本次云玩的cid | |||
gameExtraData | 云端透传到客户端的消息 | Object | sdkData | 消息内容 |
cursorInfo | 当前鼠标信息 | Object | showOrHide | true: 显示鼠标指针 false: 隐藏鼠标指针 |
gameCursorData | 鼠标指针图片数据,图片为png格式 | |||
cursorWidth | 鼠标指针图片宽 | |||
cursorHeight | 鼠标指针图片高 | |||
cursorPos | 初始鼠标位置 | |||
gameCursorData | CURSOR_DEFAULT: 默认 CURSOR_CUSTOM: 自定义 CURSOR_ARROW: 箭头 CURSOR_HAND: 小手 CURSOR_HELP: 帮助 CURSOR_APPSTARTING: 箭头和沙漏 CURSOR_CROSS: 十字准线 CURSOR_IBEAM: 输入 |
|||
clipBoard | 透传云端剪切板数据 | Object | data | 数据内容 |
6 消息回调
参数说明
参数 | 类型 | 说明 |
---|---|---|
message | Object | 消息内容,详见message属性说明 |
message属性说明
属性名 | 类型 | 说明 |
---|---|---|
userId | string | 目标userId |
from | string | 消息发送方标识 |
to | string | 消息接收方标识 |
mid | string | 消息ID |
type | int | 消息类型,固定值为1 |
ack | int | 应答类型,固定值为0 |
payload | string | 消息内容 |
7 API说明
7.1 通用API
7.1.1 游戏流程管理
7.1.1.1 初始化
函数原型 :
Cloudplay.initSDK(opitons);
opitons属性说明
属性名 | 类型 | 必填项 | 说明 |
---|---|---|---|
accessKeyId | String | 是 | 接入方唯一id |
channelId | String | 是 | 接入方自行定义,主要方便接入方推广。如一个APK,发布到不同的推广平台时用不同channelId |
isIgnoreResizeEvent | Boolean | 否 | 是否忽略SDK内部的横竖屏旋转,默认:false true:忽略 false:不忽略 |
onSceneChanged | Function | 是 | 场景切换回调函数,详见场景回调 |
MessageHandler | Function | 是 | 消息透传回调函数,详见场景透传 |
示例代码:
Cloudplay.initSDK({
accessKeyId: "",
channelId: "",
onSceneChanged: function (sceneId, extraInfo) {
},
MessageHandler: function (message) {
}
});
7.1.1.2 申请游戏
函数原型 :
Cloudplay.startGame(domId, options);
参数说明
参数 | 类型 | 必填项 | 说明 |
---|---|---|---|
domId | Strings | 是 | DOM节点id |
options | Object | 是 | 申请游戏所需参数,详见options参数说明 |
options属性说明
属性名 | 类型 | 必填项 | 说明 |
---|---|---|---|
userInfo | Object | 是 | 用户信息,详见userInfo属性说明 |
pkgName | String | 是 | 游戏包名称 |
appChannel | String | 是 | 游戏渠道号 |
cToken | String | 是 | 用来校验参数的有效性 |
playingtime | String | 是 | 本次可玩的总游戏时长,单位为s |
configInfo | String | 是 | 免登录功能所需信息,如不使用,传任意非空字符串 |
isPortrait | Boolean | 是 | 游戏的横竖屏属性 true:竖屏游戏 false:横屏游戏 |
noInputTimeout | Number | 否 | 用户无操作断开时长,单位为s |
onlyApply | Boolean | 否 | 仅申请游戏不播流 |
viewResolutionWidth | Number | 否 | 云端游戏画面宽 |
viewResolutionHeight | Number | 否 | 云端游戏画面高 |
cid | Number | 否 | 在保活期内的cid。如果使用控制权转移功能,cid为被转移者的cid |
priority | Number | 否 | 申请游戏服务的优先级,默认设置为0,值越大优先级越高 |
isArchive | Boolean | 否 | 是否存档 true:存档 false:不存档 默认为false |
autoPlayAudio | Boolean | 否 | 是否自动播放音频,默认为false true:是 false:否 |
pinCode | Number | 否 | 控制权被转移者的授权码 |
bitRate | Number | 否 | 清晰度码率,单位为KB(如:200、500、800) |
protoData | String | 否 | 透传字段,服务器端状态同步方法透传使用 |
resolutionId | Number | 否 | 清晰度id |
richData | Object | 否 | 接入方业务控制透传参数 |
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 | 否 | 免登参数,详见extraData属性说明 |
userInfo属性说明
属性名 | 类型 | 必填项 | 说明 |
---|---|---|---|
uId | String | 是 | 自行定义32位以内a-z、0-9字符串 |
uToken | String | 是 | 自行定义32位以内a-z、0-9字符串 |
uType | Number | 否 | 用户类型,默认为0 0:普通用户 5:超级用户 |
extraData属性说明
属性名 | 类型 | 必填项 | 说明 |
---|---|---|---|
booleanExtra | boolean | 否 | 向Intent中添加Boolean |
integerExtra | number | 否 | 向Intent中添加Integer |
integerArrayExtra | array | 否 | 向Intent中添加Integer数组 |
integerListExtra | array | 否 | 向Intent中添加Integer List |
stringExtra | string | 否 | 向Intent中添加String |
stringArrayExtra | array | 否 | 向Intent中添加String数组 |
stringListExtra | array | 否 | 向Intent中添加String List |
floatExtra | number | 否 | 向Intent中添加Float |
floatArrayExtra | array | 否 | 向Intent中添加Float数组 |
floatListExtra | array | 否 | 向Intent中添加Float List |
longExtra | number | 否 | 向Intent中添加Long |
longArrayExtra | array | 否 | 向Intent中添加Long数组 |
longListExtra | array | 否 | 向Intent中添加Long List |
componentNameExtra | string | 否 | 向Intent中添加componentName |
uriExtra | object | 否 | 向Intent中添加uri |
示例代码:
Cloudplay.startGame("example", {
pkgName: "",
userInfo: {
uId: "",
uToken: "",
},
playingtime: 0,
configInfo: "",
cToken: "",
appChannel: "",
isPortrait: true,
});
7.1.1.3 更新用户信息和游戏时长
函数原型 :
Cloudplay.updateGameUID(options, callback);
参数说明
参数 | 类型 | 必填项 | 说明 |
---|---|---|---|
options | Object | 是 | 需要更新的信息,详见options参数说明 |
callback | Function | 是 | 回调函数,详见callback参数说明 |
options属性说明
属性名 | 类型 | 必填项 | 说明 |
---|---|---|---|
playingTime | Number | 是 | 游戏时长,单位为ms |
userInfo | Object | 是 | 用户信息,详见userInfo参数说明 |
cToken | String | 是 | 更新的 cToken,用来校验参数的有效性 |
tip | String | 否 | totalTime 场景回调的提示信息 |
userInfo属性说明
属性名 | 类型 | 必填项 | 说明 |
---|---|---|---|
uId | String | 是 | 申请游戏时使用的uId |
uToken | String | 是 | 申请游戏时使用的uToken |
uType | Number | 否 | 申请游戏时使用的uType |
callback参数说明
参数名 | 类型 | 属性名 | 说明 |
---|---|---|---|
result | Object | ||
code | 0:成功 非0:失败 |
||
msg | 提示信息 |
示例代码:
Cloudplay.updateGameUID({
playingTime: "",
userInfo: {
uId: "",
uToken: ""
}
}, function (result) {
});
7.1.1.4 结束游戏
函数原型 :
Cloudplay.stopGame(callback);
参数说明
参数 | 类型 | 必填项 | 说明 |
---|---|---|---|
callback | Function | 否 | 回调函数,详见callback参数说明 |
callback参数说明
参数名 | 类型 | 属性名 | 说明 |
---|---|---|---|
result | Object | ||
code | 0:成功 非0:失败 |
||
msg | 提示信息 |
7.1.2 实例管理
7.1.2.1 获取cid
函数原型 :
var result = Cloudplay.getCid();
返回值说明
返回值 | 类型 | 属性名 | 说明 |
---|---|---|---|
result | Object | cid | 本次云玩的cid |
7.1.2.2 移除缓存中的cid
函数原型 :
Cloudplay.removeCacheCid();
7.1.2.3 检测未释放游戏
函数原型 :
Cloudplay.checkPlayingGame(options);
options属性说明
属性名 | 类型 | 必填项 | 说明 |
---|---|---|---|
userInfo | Object | 是 | 用户信息,详见userInfo参数说明 |
playingGame | Function | 是 | 回调函数,详见callback参数说明 |
userInfo参数说明
属性名 | 类型 | 必填项 | 说明 |
---|---|---|---|
uId | String | 是 | 申请游戏时使用的uId |
uToken | String | 是 | 申请游戏时使用的uToken |
uType | Number | 否 | 申请游戏时使用的uType |
callback参数说明
参数名 | 类型 | 属性名 | 说明 |
---|---|---|---|
result | Object | ||
code | 0:成功 非0:失败 |
||
errorMessage | 提示信息 | ||
playingGame | 未释放的游戏信息 |
示例代码:
Cloudplay.checkPlayingGame({
userInfo: {
uId: "",
uToken: "",
},
playingGame: function (result) {
},
});
7.1.2.4 释放指定实例
函数原型 :
Cloudplay.releasePlayingGame(options,callback(data));
options属性说明
属性名 | 类型 | 必填项 | 说明 |
---|---|---|---|
userInfo | Object | 是 | 用户信息,详见userInfo参数说明 |
cid | Function | 是 | 回调函数,详见callback参数说明 |
appChannel | String | 是 | 游戏渠道号 |
pkgName | String | 是 | 游戏渠包名 |
playingtime | Number | 是 | 游戏可玩时长 |
cToken | String | 是 | 用来校验参数的有效性 |
userInfo参数说明
属性名 | 类型 | 必填项 | 说明 |
---|---|---|---|
uId | String | 是 | 申请游戏时使用的uId |
uToken | String | 是 | 申请游戏时使用的uToken |
uType | Number | 否 | 申请游戏时使用的uType |
callback参数说明
参数名 | 类型 | 属性名 | 说明 |
---|---|---|---|
data | Object | ||
code | 0:成功 非0:失败 |
||
msg | 提示信息 |
示例代码:
Cloudplay.releasePlayingGame({
cid:"",
appChannel: "",
pkgName: "",
playingtime: 0,
cToken: "",
userInfo: {
uId: "",
uToken: "",
uType: "",
uLevel: "",
},
},function (data) {
});
7.1.3 存档管理
7.1.3.1 获取游戏存档状态
函数原型 :
Cloudplay.getGameArchiveStatus(options);
options属性说明
属性名 | 类型 | 必填项 | 说明 |
---|---|---|---|
userInfo | Object | 是 | 用户信息,详见userInfo参数说明 |
pkgName | String | 是 | 游戏包名称 |
appChannel | String | 是 | 游戏渠道号 |
ifCanPlay | Function | 是 | 回调函数,详见callback参数说明 |
userInfo参数说明
属性名 | 类型 | 必填项 | 说明 |
---|---|---|---|
uId | String | 是 | 申请游戏时使用的uId |
uToken | String | 是 | 申请游戏时使用的uToken |
uType | String | 否 | 申请游戏时使用的uType |
callback参数说明
参数名 | 类型 | 属性名 | 说明 |
---|---|---|---|
result | Object | ||
code | 0:成功 非0:失败 |
||
errorMessage | 提示信息 | ||
ifCanPlay | true:存档完成 false:正在存档中 |
示例代码:
Cloudplay.getGameArchiveStatus({
userInfo: {
uId: "",
uToken: ""
},
pkgName: "",
appChannel: "",
ifCanPlay: function (result) {
}
});
7.1.3.2 查询游戏是否存在存档
函数原型 :
Cloudplay.gameArchived(options);
options属性说明
属性名 | 类型 | 必填项 | 说明 |
---|---|---|---|
userInfo | Object | 是 | 用户信息,详见userInfo参数说明 |
pkgName | String | 是 | 游戏包名称 |
appChannel | String | 是 | 游戏渠道号 |
hasArchive | Function | 是 | 回调函数,详见callback参数说明 |
userInfo参数说明
属性名 | 类型 | 必填项 | 说明 |
---|---|---|---|
uId | String | 是 | 申请游戏时使用的uId |
uToken | String | 是 | 申请游戏时使用的uToken |
uType | String | 否 | 申请游戏时使用的uType |
callback参数说明
参数名 | 类型 | 属性名 | 说明 |
---|---|---|---|
result | Object | ||
code | 0:成功 非0:失败 |
||
errorMessage | 提示信息 | ||
hasArchive | true:有存档 false:无存档 |
示例代码:
Cloudplay.gameArchived({
userInfo: {
uId: "",
uToken: ""
},
pkgName: "",
appChannel: "",
hasArchive: function (result) {
}
});
7.1.4 直播管理
7.1.4.1 是否支持直播功能
函数原型 :
var result = Cloudplay.isSupportLiving();
返回值说明
返回值 | 类型 | 说明 |
---|---|---|
result | Boolean | true:支持 false:不支持 |
7.1.4.2 开始直播
函数原型 :
Cloudplay.startLiving(roomId, pushStreamAddress);
参数说明
参数名 | 类型 | 必填项 | 说明 |
---|---|---|---|
roomId | String | 是 | 房间号 |
pushStreamAddress | String | 是 | 推流地址 |
7.1.4.3 停止直播
函数原型 :
Cloudplay.endLiving(roomId);
参数说明
参数名 | 类型 | 必填项 | 说明 |
---|---|---|---|
roomId | String | 是 | 房间号 |
7.1.5 音频播放
函数原型 :
Cloudplay.enableAudio(enabled);
参数说明
参数名 | 类型 | 必填项 | 说明 |
---|---|---|---|
enabled | Boolean | 是 | true:播放 false:静音 |
7.1.6 切换清晰度
函数原型 :
Cloudplay.switchResolution(resolutionId, videoStreamWidth, videoStreamHeight);
参数说明
参数名 | 类型 | 必填项 | 说明 |
---|---|---|---|
resolutionId | String | 是 | 目标清晰度id |
videoStreamWidth | String | 否 | 视频流的宽度 |
videoStreamHeight | String | 否 | 视频流的高度 |
7.1.7 获取SDK版本号
函数原型 :
var result = Cloudplay.version();
返回值说明
返回值 | 类型 | 说明 |
---|---|---|
result | String | SDK版本号 |
7.1.8 重置无操作超时计时器
函数原型 :
Cloudplay.resetInputTimer();
7.1.9 获取云游戏状态码
函数原型 :
var result = Cloudplay.getCloudPlayStatusCode();
返回值说明
返回值 | 类型 | 说明 |
---|---|---|
result | Number | 100999001:无流地址,cid未获取成功(初始状态) 100999002:无流地址,cid获取成功,Socket连接失败 100999003:无流地址,cid获取成功,Socket连接成功,乒乓状态异常 100999004:无流地址,cid获取成功,Socket连接成功,乒乓状态正常 100999005:有流地址,video成功 100999006:有流地址,video失败,audio成功 100999007:有流地址,video失败,audio失败,input成功 100999008:有流地址,video失败,audio失败,input失败 |
7.1.10 云游戏结束信息上报
函数原型 :
Cloudplay.reportFinishInfo(options);
options属性说明
属性名 | 类型 | 必填项 | 说明 |
---|---|---|---|
finishCode | Number | 是 | 0:正常结束 1:超时结束 2:异常结束有SDK错误码 3:异常结束无SDK错误码 |
pkgName | String | 是 | 云游戏包名 |
appChannel | String | 是 | 云游戏渠道号 |
gameId | String | 是 | 云游戏id号 |
cid | String | 是 | 云游戏cid |
sdkVersion | String | 是 | SDK版本号 |
示例代码:
Cloudplay.reportFinishInfo({
finishCode: 0,
pkgName: "",
appChannel: "",
gameId: "",
cid: "",
sdkVersion: ""
});
7.1.11 获取网络请求数据
函数原型 :
var result = Cloudplay.getNetInfo();
返回值说明
返回值 | 类型 | 属性名 | 说明 |
---|---|---|---|
result | Array{} | ||
url | 网络请求的url | ||
time | 请求耗时 | ||
result | 请求结果 | ||
msg | 结果详细描述 | ||
uid | 当前用户的uid | ||
cid | 当前云游的cid | ||
action | access:长连接 input:input连接 videoUrl:视频流 audioUrl:音频流 104/108/211:actionId |
||
transId | 当前申请的唯一id | ||
packageName | 请求的游戏包名 | ||
startTime | 开始请求的时间 | ||
responseTime | 请求结束的时间 |
7.1.12 发送消息到消息SDK
函数原型 :
Cloudplay.sendMessage(message);
参数说明
参数名 | 类型 | 必填项 | 说明 |
---|---|---|---|
message | String | 是 | 发送的数据信息 |
7.1.13 获取视频流地址域名
函数原型 :
var result = Cloudplay.getStreamingDomain();
返回值说明
返回值 | 类型 | 说明 |
---|---|---|
result | String | 当前云玩视频流地址域名 |
7.1.14 设置游戏画面方向
函数原型 :
Cloudplay.setScreenDirection(direction);
参数说明
参数名 | 类型 | 必填项 | 说明 |
---|---|---|---|
direction | String | 是 | landscape:横向 portrait:竖向 |
7.1.15 发送操作指令到游戏
函数原型 :
Cloudplay.sendMessageToRom(command);
ARM参数说明
参数名 | 类型 | 必填项 | 说明 |
---|---|---|---|
command | String | 是 | 操控云游戏的指令 |
ARM示例代码:
Cloudplay.sendMessageToRom("mouse:1:0.7568,0.5390");
X86参数说明
参数名 | 类型 | 必填项 | 说明 |
---|---|---|---|
command | Object | 是 | X86游戏操控指令 |
X86鼠标键值
属性名 | 键值 | 说明 |
---|---|---|
inputOp | 512 | 左键 |
513 | 中键 | |
514 | 右键 | |
515 | 滚轮 | |
516 | 移动 | |
inputState | 1 | 默认 |
2 | 按下 | |
3 | 抬起 | |
value | 0 | 默认值 |
1 | 鼠标滚轮向上滚动 | |
-1 | 鼠标滚轮向下滚动 | |
posCursor | x | x轴光标位置 |
y | y轴光标位置 | |
posMouse | x | x轴物理位置 |
y | y轴物理位置 |
X86键盘键值
字段 | 键值 | 说明 |
---|---|---|
inputOp | a | 65 |
b | 66 | |
c | 67 | |
... | ... | |
inputState | 2 | 按下 |
3 | 抬起 | |
4 | Lock关闭 | |
5 | Lock开启 | |
value | 0 | 默认值 |
字段 | 键值 | 说明 | |
---|---|---|---|
inputState | |||
1 | 默认 | ||
inputOp | |||
1024 | 普通按键 | ||
1025 | LT | ||
1026 | RT | ||
1027 | 左摇杆X轴 | ||
1028 | 左摇杆Y轴 | ||
1029 | 右摇杆X轴 | ||
1030 | 右摇杆Y轴 | ||
value | |||
0 | 按键抬起 | ||
1 | 十字键上按下 | ||
2 | 十字键下按下 | ||
4 | 十字键左按下 | ||
8 | 十字键右按下 | ||
9 | 十字键右上按下 | ||
10 | 十字键右下按下 | ||
6 | 十字键左下按下 | ||
5 | 十字键左上按下 | ||
16 | START键按下 | ||
32 | SELECT键按下 | ||
4096 | A键按下 | ||
8192 | B键按下 | ||
16384 | X键按下 | ||
32768 | Y键按下 | ||
64 | LS键按下 | ||
256 | LB键按下 | ||
128 | RS键按下 | ||
512 | RB键按下 | ||
255 | RT/LT键按下 | ||
-32768~32767 | 左右摇杆X、Y轴值 |
属性名 | 类型 | 必填项 | 说明 |
---|---|---|---|
file | File | 是 | 上传的文件 |
opType | String | 是 | 文件类型,仅支持:upload_image |
onSuccess | Function | 是 | 上传成功回调,详见onSuccess参数说明 |
onError | Function | 是 | 上传失败回调,详见onError参数说明 |
onSuccess参数说明
参数名 | 类型 | 说明 |
---|---|---|
file | File | 上传成功的原始文件 |
opType | string | 文件类型 |
onError参数说明
参数名 | 类型 | 说明 |
---|---|---|
message | File | 提示信息 |
opType | String | 文件类型 |
示例代码:
Cloudplay.upload({
file: file,
opType: "upload_image",
onSuccess: function (opType, file) {
},
onError: function (opType, message) {
}
});
7.2.1.2 获取可下载图片列表
函数原型 :
Cloudplay.getFileList(options);
options属性说明
属性名 | 类型 | 必填项 | 说明 |
---|---|---|---|
size | Number | 否 | 图片列表数量,默认为 19 (最大值为20) |
offset | Number | 否 | 第一个图片起始位置,默认为0 |
callback | Function | 否 | 回调函数,详见callback参数说明 |
callback参数说明
参数名 | 类型 | 说明 |
---|---|---|
result | Array | 图片列表 |
示例代码:
Cloudplay.getFileList({
size: 20,
offset: 2,
callback: function (result) {
}
});
7.2.1.3 下载指定图片
函数原型 :
Cloudplay.downLoadFile(name, callback);
参数说明
参数名 | 类型 | 必填项 | 说明 |
---|---|---|---|
name | String | 是 | 图片名称 |
callback | Object | 否 | 回调函数,详见callback参数说明 |
callback参数说明
参数名 | 类型 | 属性名 | 说明 |
---|---|---|---|
result | Object | ||
success | true:成功 false:失败 |
||
msg | 提示信息 | ||
fileBold | 文件二进制流 | ||
fileType | 文件类型 | ||
fileSize | 文件大小 | ||
fileName | 文件名称 |
示例代码:
Cloudplay.downLoadFile("fileName", function (result) {
});
7.2.1.4 取消下载图片
函数原型 :
Cloudplay.cancelDownLoadFile(name);
参数说明
参数名 | 类型 | 必填项 | 说明 |
---|---|---|---|
name | String | 是 | 图片名称 |
7.2.2 文件下载
7.2.2.1 获取文件列表
函数原型 :
Cloudplay.getBigFileList(callback);
callback参数说明
参数名 | 类型 | 属性名 | 说明 |
---|---|---|---|
result | Object | ||
name | 文件名称 | ||
url | 文件下载地址 | ||
type | 文件类型 | ||
duration | 文件时长,单位为s。(文件类型为视频格式时该属性生效) | ||
size | 文件大小,单位为Byte |
7.2.2.2 开始下载保活
函数原型 :
Cloudplay.startHangUp(options, callabck);
options属性说明
属性名 | 类型 | 必填项 | 说明 |
---|---|---|---|
downloadList | Array | 是 | 下载文件列表 |
hangUpTime | Number | 是 | 保活时长,单位为s |
Cutoff | Boolean | 是 | true:断流 false:不断流 |
callabck参数说明
参数名 | 类型 | 属性名 | 说明 |
---|---|---|---|
result | Object | ||
state | 0:下载保活失败 1:开始下载保活 2:下载保活时间到 |
||
message | 提示信息 | ||
gameTimerOver | 当前游戏时长是否已耗尽 | ||
hangupTimeSeconds | 当前剩余下载保活时间,单位为s |
7.2.2.3 结束下载保活
函数原型 :
Cloudplay.stopHangUp(callback);
callback参数说明
参数名 | 类型 | 属性名 | 说明 |
---|---|---|---|
result | Object | ||
state | 0:失败 1:成功 |
||
message | 提示信息 | ||
gameTimerOver | 当前游戏时长是否已耗尽 |
7.2.3 视频帧信息
7.2.3.1 注册监听帧变化
函数原型 :
Cloudplay.requestVideoFrameCallback(callback);
callback参数说明
参数名 | 类型 | 属性名 | 说明 |
---|---|---|---|
result | Object | ||
code | 0:正常 1:浏览器不支持 2:当前流类型不支持 |
||
number | 自增序号,number类型 | ||
timestamp | 当前帧对应的时间戳 | ||
isRestart | 是否重新开始播放视频 | ||
frameInfo | Object | ||
width | 视频帧的宽度 | ||
height | 视频帧的宽度 | ||
presentationTime | 用户代理提交帧以进行合成的时间 | ||
expectedDisplayTime | 用户代理期望框架可见的时间 | ||
mediaTime | 媒体呈现时间戳 |
7.2.3.2 移除监听帧变化
函数原型 :
Cloudplay.removeRequestVideoFrameCallback();
7.2.4 控制权转移
7.2.4.1 获取授权码
函数原型 :
Cloudplay.getPinCode();
7.2.5 消息传输
7.2.5.1 消息其它发送消息到游戏
函数原型 :
Cloudplay.sendWSMessage(options);
options属性说明
属性名 | 类型 | 必填项 | 说明 |
---|---|---|---|
type | String | 是 | clipboard:剪贴板 gps:GPS数据 intent:intent |
data | Array|Object | 是 | 发送的内容,根据消息类型自定义 |
mid | String | 是 | 消息唯一ID |
callback | Function | 否 | 回调函数,详见callback参数说明 |
callback参数说明
参数名 | 类型 | 说明 |
---|---|---|
messageId | String | 发送时使用的消息ID |
successed | Boolean | true:发送成功 false:发送失败 |
message | String | 提示信息 |
实例代码:
// 剪切板
Cloudplay.sendWSMessage({
type: "clipboard",
data: [{itemType: "text/plain", itemData: "abc"}],
mid: (Math.random() * 1000000).toString().replace(".", ""),
callback: function (messageId, successed, message) {
}
});
// GPS数据
Cloudplay.sendWSMessage({
type: "gps",
data: {longitude: 116.23128, latitude: 40.22077},
mid: (Math.random() * 1000000).toString().replace(".", ""),
});
7.2.5.2 发送传感器信息到游戏
函数原型:
Cloudplay.sendSensorData(options);
options属性说明:
属性名 | 类型 | 必填项 | 说明 |
---|---|---|---|
accuracy | Number | 是 | 精度类型,通过sensorList 场景查看当前游戏需要的类型 |
sensorType | Number | 是 | sensor类型,通过sensorList 场景查看当前游戏需要的类型 |
values | Array | 是 | sensor数据分别是X、Y、Z |
示例代码:
Cloudplay.sendSensorData({
accuracy:3,
sensorType:2,
values:[0.1563701, 0.073616914, 9.840504]
});
7.2.6 游戏截图
函数原型 :
Cloudplay.getCapture(options);
options属性说明
属性名 | 类型 | 必填项 | |
---|---|---|---|
zoom | Number | 否 | 图片压缩比例 |
callback | Function | 是 | 回调函数,详见callback参数说明 |
callback参数说明
参数名 | 类型 | 说明 |
---|---|---|
result | ArrayBuffer | 图片数据 |
7.2.7 摄像头麦克风
7.2.7.1 摄像头画面镜像/旋转
函数原型:
Cloudplay.cameraRotate(options);
options属性说明:
属性名 | 类型 | 必填项 | 说明 |
---|---|---|---|
rotate | Number | 否 | 状态码。 0:正常(默认) 1:旋转90° 2:旋转180° 3:旋转270° |
flip | Number | 否 | 状态码。 0:不镜像翻转(默认) 1:水平镜像翻转 2:垂直镜像翻转 |
示例代码:
Cloudplay.cameraRotate({
rotate:1,
flip:1
});
7.2.7.2 开启摄像头麦克风设备
函数原型:
Cloudplay.openMediaDevices(options,callback(status,Track));
options属性说明:
属性名 | 类型 | 必填项 | 说明 |
---|---|---|---|
audio | Object | 否 | 麦克风参数 |
video | Object | 否 | 摄像头参数 |
status | Any | 否 | 开启结果,开启成功时为空字符串,失败时为error时catch捕获的event |
Track | Track | 否 | 返回的stream,成功时为媒体流,失败时为空字符串 |
示例代码:
Cloudplay.openMediaDevices({
audio: {
deviceId:"default",
channelCount:2,
sampleRate:48000,
echoCancellation:true,
noiseSuppression:true,
autoGainControl:false,
},
video: {
deviceId:"default",
width:"1280",
height:"720",
frameRate:"30",
}
},(status,mediaStream)=>{
});
7.2.7.3 摄像头麦克风指令确认
函数原型:
Cloudplay.mediaDevicesResponseNotify(action,options);
options属性说明:
属性名 | 类型 | 必填项 | 说明 |
---|---|---|---|
action | String | 是 | 媒体类型:”Camera”,”Microphone” |
op | Number | 是 | 设备开关状态 1:开启 0:关闭 |
code | Number | 是 | 开启成功或者失败 0:成功 1:失败 |
示例代码:
Cloudplay.openMediaDevices({
audio: {
deviceId:"default",
channelCount:2,
sampleRate:48000,
echoCancellation:true,
noiseSuppression:true,
autoGainControl:false,
},
video: {
deviceId:"default",
width:"1280",
height:"720",
frameRate:"30",
}
},(status,mediaStream)=>{
Cloudplay.mediaDevicesResponseNotify(action,{op:1,code:0});
});
7.2.7.4 关闭摄像头麦克风设备
函数原型:
Cloudplay.closeMediaDevices(action);
options属性说明:
属性名 | 类型 | 必填项 | 说明 |
---|---|---|---|
action | string | 否 | “Camera”,”Microphone”释放对应的设备,不传时释放所有。 |
示例代码:
Cloudplay.closeMediaDevices("Camera");
7.2.7.5 发送体感数据到游戏
函数原型:
Cloudplay.sendSenseMessage(data);
options属性说明:
属性名 | 类型 | 必填项 | 说明 |
---|---|---|---|
data | Any | 否 | 体感数据 |
示例代码:
Cloudplay.sendSenseMessage(data);
7.2.8 将游戏切换到前台
函数原型:
Cloudplay.bringUpApp();
7.3 X86游戏
7.3.1 控制权转移
7.3.1.1 获取授权码
函数原型:
Cloudplay.getPinCode();
7.3.1.2 控制权分配
函数原型:
Cloudplay.controlPowerDistribute(options, callback);
参数说明
参数名 | 类型 | 必填项 | 说明 |
---|---|---|---|
options | Object | 是 | 分配参数,详见options参数说明 |
callback | Function | 是 | 回调函数,详见callback参数说明 |
options属性说明
属性名 | 类型 | 必填项 | 说明 |
---|---|---|---|
cid | Number | 是 | 当前云玩主控cid |
controlInfos | Object[] | 是 | 分配数据,详见controlInfos参数说明 |
controlInfos属性说明
属性名 | 类型 | 必填项 | 说明 |
---|---|---|---|
cid | Number | 是 | 云玩主控或从控cid |
position | Number | 是 | 1:获得控制权 0:失去控制权 |
callback参数说明
参数名 | 类型 | 属性名 | 说明 |
---|---|---|---|
result | Object | ||
code | 0:成功 非0:失败 |
||
errorMsg | 提示信息 | ||
controlInfos | 分配结果,详见controlInfos参数说明 |
示例代码:
Cloudplay.controlPowerDistribute({
cid: "",
controlInfos: [{cid: "", position: 1}, {cid: "", position: 0}]
}, function (result) {
});
7.3.1.3 控制权查询
函数原型:
Cloudplay.controlPowerQuery(options, callback);
参数说明
参数名 | 类型 | 必填项 | 说明 |
---|---|---|---|
options | Object | 是 | 查询参数,详见options参数说明 |
callback | Function | 是 | 回调函数,详见callback参数说明 |
options属性说明
属性名 | 类型 | 必填项 | 说明 |
---|---|---|---|
cid | Number | 是 | 当前云玩主控cid |
callback参数说明
参数名 | 类型 | 属性名 | 说明 |
---|---|---|---|
result | Object | ||
code | 0:成功 非0:失败 |
||
errorMsg | 提示信息 | ||
controlInfos | 分配结果 |
示例代码:
Cloudplay.controlPowerQuery({
cid: ""
}, function (result) {
});
7.3.2 触屏模式管理
7.3.2.1 设置鼠标移动速度
7.3.2.2 设置鼠标移动速度
函数原型:
Cloudplay.setMouseMoveRatio(speed);
参数说明
参数名 | 类型 | 必填项 | 说明 |
---|---|---|---|
speed | Number | 是 | 移动速度值 |
7.3.2.3 设置鼠标模式
函数原型:
Cloudplay.setMouseMode(mode);
参数说明
参数名 | 类型 | 必填项 | 说明 |
---|---|---|---|
mode | Number | 是 | 0:禁用 1:滑鼠点击 2:触控 3:多点触控 4:滑屏 5:滑鼠 |
7.3.2.4 获取鼠标模式
函数原型:
var result = Cloudplay.getMouseMode();
返回值说明
返回值 | 类型 | 说明 |
---|---|---|
result | Number | 0:禁用 1:滑鼠点击 2:触控 3:多点触控 4:滑屏 5:滑鼠 |
7.3.2.5 获取鼠标坐标
函数原型:
var result = Cloudplay.getMouseCoordinate();
返回值说明
返回值 | 类型 | 属性名 | 说明 |
---|---|---|---|
result | Object | ||
posCursor | 光标位置 | ||
posMouse | 物理位置 |
7.3.2.6 设置虚拟键位
函数原型:
Cloudplay.setVirtualKeys(type);
参数说明
参数名 | 类型 | 必填项 | 说明 |
---|---|---|---|
type | String | 是 | xbox:xbox手柄布局 keyboard:自定义键鼠布局 NONE:不显示 |
7.3.2.7 获取虚拟键位
函数原型:
var result = Cloudplay.getVirtualKeys();
返回值说明
返回值 | 类型 | 说明 |
---|---|---|
result | String | xbox:xbox手柄布局 keyboard:自定义键鼠布局 NONE:不显示 |
7.3.2.8 设置全键盘是否显示
函数原型:
Cloudplay.setFullKeyboardState(status);
参数说明
参数名 | 类型 | 必填项 | 说明 |
---|---|---|---|
status | Boolean | 是 | true:显示 false:隐藏 |
7.3.2.9 获取全键盘是否显示
函数原型:
var result = Cloudplay.getFullKeyboardState();
返回值说明
返回值 | 类型 | 说明 |
---|---|---|
result | Boolean | true:显示 false:隐藏 |
7.3.3 游戏截图
函数原型:
Cloudplay.captureGameImage(options, callback);
参数说明
参数名 | 类型 | 必填项 | 说明 |
---|---|---|---|
options | Object | 是 | 截图参数,详见options参数说明 |
callback | Function | 是 | 回调函数,详见callback参数说明 |
options属性说明
属性名 | 类型 | 必填项 | 说明 |
---|---|---|---|
uploadUrl | String | 是 | 图片上传地址, 必须是post请求 |
cid | Number | 是 | 本次云玩的cid |
opType | Number | 是 | 1:截图 2:开始周期性截图 3:停止周期性截图 |
txId | String | 是 | 事务ID,每次调用传入的值保持唯一性, 消息重发时该字段维持不变 |
size | String | 是 | 单张图片大小,单位为MB。当opType等于1或2该字段有效 |
interval | String | 否 | 指令间隔,单位为ms。默认1000,最小1000毫秒,最大60000毫秒,代表间隔n毫秒执行一次截图。 当opType等于2时该字段有效 |
format | String | 否 | 图片格式,如:png |
pixel | String | 否 | 分辨率。默认1920X1080,当opType等于1或2该字段有效 |
uploadType | String | 否 | 图片上传协议类型,缺省为:http |
callback参数说明
参数名 | 类型 | 属性名 | 说明 |
---|---|---|---|
result | Object | ||
code | 0:成功 非0:失败 |
||
errorMsg | 提示信息 |
示例代码:
Cloudplay.captureGameImage({
uploadUrl: "",
cid: 11231,
opType: 1,
txId: "43242",
size: ""
}, function (result) {
});
7.3.4 发送数据到云端剪切板
函数原型:
Cloudplay.sendDataToClipBoard(data);
参数说明
参数名 | 类型 | 必填项 | 说明 |
---|---|---|---|
data | String | 是 | 发送的数据内容 |