小游戏管理
1. 游戏启动参数设置
初始化游戏启动参数
接口原型
func setGameStartOptions(options: [String: Any], completion: @escaping (HostRuntimeError?) -> Void)
参数说明
| 参数 | 数据类型 | 必填 | 属性说明 |
|---|---|---|---|
LAUNCH_KEY | String | 是 | 游戏启动项,支持游戏列表启动项,扫码启动项和最近启动项三种。 |
USER_ID | String | 是 | 游戏用户 |
CUSTOM_SCRIPT_FILES | [String] | 否 | js 脚本文件列表 |
CUSTOM_SCRIPT_CONTENTS | [String] | 否 | Javascript 文本 |
ENABLE_VCONSOLE | Bool | 否 | 开启 vConsole, 更改开启或关闭需重启游戏,默认值为 false |
ENABLE_INSPECTOR | Bool | 否 | 开启 Safari DevTools 调试, 默认值为 false |
INSPECTOR_WAIT_FOR_INSPECT | Bool | 否 | 在启动时等待 DevTools 连接, 默认值为 false |
ENABLE_DOMAIN_WHITELIST | Bool | 否 | 开启合法域名白名单,默认值为 false |
DOMAIN_WHITELIST_REQUEST | [String] | 否 | request 合法域名, 以 https:// 开头, 可填写 300 个域名 |
DOMAIN_WHITELIST_SOCKET | [String] | 否 | socket 合法域名, 以 wss:// 开头, 可填写 200 个域名 |
DOMAIN_WHITELIST_UDP | [String] | 否 | udp 合法域名, 以 udp:// 开头, 可填写 200 个域名。注:经 DNS 解析得到的 ip 也能通过白名单 |
DOMAIN_WHITELIST_TCP | [String] | 否 | tcp 合法域名, 以 tcp:// 开头, 可填写 200 个域名。注:经 DNS 解析得到的 ip 也能通过白名单 |
DOMAIN_WHITELIST_UPLOAD_FILE | [String] | 否 | uploadFile 合法域名, 以 https:// 开头, 可填写 200 个域名 |
DOMAIN_WHITELIST_DOWNLOAD_FILE | [String] | 否 | downloadFile 合法域名, 以 https:// 开头, 可填写 200 个域名 |
ENABLE_REPORT_MEMORY | boolean | 否 | 统计 memory 信息, 默认值为 false |
ENABLE_REPORT_CPU | boolean | 否 | 统计 cpu 信息, 默认值为 false |
ENABLE_REPORT_FPS | boolean | 否 | 统计 帧率相关 信息,包含 fps、jank 和 bigJank,默认值为 false |
SPLASH_GAME_TITLE | String | 否 | 替换 Splash 页面游戏标题 |
SPLASH_ICON_URL | String | 否 | 替换 Splash 页面游戏图标 |
SHOW_MENU_EXPLORE_BTN | Bool | 否 | 开启右上角菜单按钮 默认值为 true |
SHOW_MENU_LAYOUT | Bool | 否 | 开启右上角布局 默认值为 true |
ENABLE_TRANSPARENT_MODE | Bool | 否 | 开启游戏透明背景 默认值为 false |
代码示例
func setGameStartOptions() {
if let gameHandle {
var options: [String: Any] = [
TJConstants.LAUNCH_KEY: launchKey,
TJConstants.USER_ID: "gust",
TJConstants.ENABLE_VCONSOLE: true,
]
gameHandle.setGameStartOptions(options: options) { error in
guard error == nil else {
return
}
}
}
}
游戏启动参数 LAUNCH_KEY 说明
目前,游戏支持三种启动方式:游戏列表启动、二维码扫码启动和最近游玩列表启动。
- 游戏列表启动:在游戏列表接口返回的对象中包含有
launchKey字段,该字段需要在启动游戏时作为启动参数传入给LAUNCH_KEY。- launchKey:
67da9d2961b25a25faf0b143
- launchKey:
- 二维码扫码启动:扫描二维码的结果作为启动参数传入给
LAUNCH_KEY。- 二维码扫码结果:
https://minihost.tuanjie.cn/api/game_app/67da9d2961b25a25faf0b143/temp_session/a0f06587-3def-4a3a-95b2-89286bc325fa/start
- 二维码扫码结果:
- 最近游玩列表启动:最近游玩对象中同样包含有
launchKey字段,该字段也是作为启动参数传入给LAUNCH_KEY。具体参考 最近游玩列表- 游戏列表启动时 launchKey:
67da9d2961b25a25faf0b143 - 扫码体验启动时 launchKey:
67da9d2961b25a25faf0b143:67dcc8227ae013b09d23ad23
- 游戏列表启动时 launchKey:
2. 开始游戏
加载、编译游戏资源,游戏界面可见但不可交互,宿主状态转为 RUNNING。
接口原型
func start(onShowMsg: String, completion: @escaping (Error?) -> Void)
参数说明
| 参数 | 数据类型 | 必 填 | 属性说明 |
|---|---|---|---|
onShowMsg | String | 否 | 显示字符串 |
completion | (Error?) -> Void | 否 | 开始后回调 |
3. 运行/恢复游戏
游戏可交互或在 app 切换至前台时恢复运行,宿主状态转为 PLAYING。
接口原型
func play()
4. 暂停游戏
暂停游戏,宿主状态转为 RUNNING。
接口原型
func pause()
5. 结束游戏
结束游戏,宿主状态转为 WAITING。
接口原型
func stop()
6. 设置宿主首帧渲染监听
提供宿主首帧渲染后的回调
接口原型
func setOnFirstFrameRenderedListener(callback: @escaping () -> Void)
参数说明
| 参数 | 数据类型 | 必填 | 属性说明 |
|---|---|---|---|
callback | () -> Void | 是 | 首帧回调 |
7. 设置宿主游戏包下载回调
提供宿主游戏包下载的回调机制,此回调仅会在游戏包首次被下载时触发,若仅是读取缓存中的游戏包,则不会触发该回调。
接口原型
func setOnGamePackageDownloadListener(
onStart: @escaping () -> Void,
onProgress: @escaping (Double, Int64, Int64) -> Void,
onSuccess: @escaping () -> Void,
onFailure: @escaping (Error?) -> Void)
参数说明
| 参数 | 数据类型 | 必填 | 属性说明 |
|---|---|---|---|
onStart | () -> Void | 是 | 游戏包开始下载回调 |
onProgress | (progress: Double, totalBytesWritten: Int64, totalBytesExpectedToWrite: Int64) -> Void | 是 | 游戏包下载进度回调 |
| - progress: 下载进度 | |||
| - totalBytesWritten: 已下载大小 | |||
| - totalBytesExpectedToWrite: 文件大小 | |||
onSuccess | () -> Void | 是 | 游戏包下载成功回调 |
onFailure | (Error?) -> Void | 是 | 游戏包下载失败回调 |
8.设置宿主游戏改变屏幕方向监听
接口原型
func setOnGameChangeOrientationListener(
callback: @escaping (UIInterfaceOrientation, @escaping (Bool) -> Void)
参数说明
| 参数 | 数据类型 | 必填 | 属性说明 |
|---|---|---|---|
callback | (UIInterfaceOrientation, @escaping (Bool) -> Void | 是 | 方向变化回调 |