# 性能

# qq.triggerGC()

加快触发 JavaScriptCore 垃圾回收(Garbage Collection)。GC 时机是由 JavaScriptCore 来控制的,并不能保证调用后马上触发 GC。

# qq.getPerformance()

暂不支持,后续版本将进行更新

# number Performance.now()

暂不支持,后续版本将进行更新

# 进入游戏回调事件和超时处理

在加载超时时(首次启动60s,非首次启动30s),平台提供给用户一键修复、重新进入的操作,避免用户长时间等待。

# qq.startLoadingCheck

# qq.startLoadingCheck()

从基础库版本1.62.3开始支持

设置进入小游戏加载超时的开始

# qq.notifyGameCanPlay

# qq.notifyGameCanPlay()

从基础库版本1.62.3开始支持

通知进入小游戏加载超时的完成,此时小游戏内部资源加载完成

# qq.onGameFix

# qq.onGameFix(function callback)

从基础库版本1.62.3开始支持

监听进入小游戏加载超时的修复回调

# 参数

# function callback

小游戏加载超时时用户点击修复的回调函数

# qq.onCreatedRole

# qq.onCreatedRole()

从基础库版本1.71.0开始支持 设置小游戏启动时创角色完成

# qq.onPrivacyShow

# qq.onPrivacyShow()

从基础库版本1.71.0开始支持 小游戏启动时隐私弹窗展示

# qq.onPrivacyClickAgree

# qq.onPrivacyClickAgree()

从基础库版本1.71.0开始支持 小游戏启动时隐私弹窗,点击了同意

# qq.onPrivacyClickReject

# qq.onPrivacyClickReject()

从基础库版本1.71.0开始支持 小游戏启动时隐私弹窗,点击了拒绝

# qq.onPrivacyHasAgreed

# qq.onPrivacyHasAgreed()

从基础库版本1.71.0开始支持 小游戏启动时无需展示隐私弹窗,已经点击过同意

# QQWebAssembly

从基础库版本1.71.0.00002开始支持(QQ版本9.0.15以上)

WebAssembly 在某些场景下具有更好的性能,平台提供 QQWebAssembly 接口支持这个能力。

# QQWebAssembly.instantiate

接口声明:QQWebAssembly.instantiate(path, importObject)

  • path: 代码包内的wasm文件,支持压缩过的br文件。
  • importObject: 一个将被导入到新创建实例中的对象。

和标准 WebAssembly.instantiate 类似,差别是第一个参数只接受一个字符串类型的代码包路径,指向代码包内的.wasm文件。

示例如下:

var info = {
    'env': wasmImports,
    'wasi_snapshot_preview1': wasmImports,
};
QQWebAssembly.instantiate('resources/wasm/a.out.wasm', info)
    .then((result) => {
        logger.success('result=', result);
    });
1
2
3
4
5
6
7
8

# 与标准 WebAssembly 的异同

  1. 最大的区别在QQWebAssembly.instantiate(path, importObject),path为代码包内路径(支持.wasm和.wasm.br后缀)
  2. 其它接口同标准的 WebAssembly 接口。

# 兼容与适配

  1. 在 QQWebAssembly 支持之前,有部分老版本环境内有 WebAssembly 标准接口,更新后只能使用 QQWebAssembly 接口,请开发者做好兼容。使用基础库版本1.71.0.00002来判断是否支持。
  2. iOS 仅在高性能下支持 QQWebAssembly 接口,使用需要开启 iOS 高性能模式。
  3. 如果 wasm 文件过大,建议使用 Brotli 压缩 wasm 文件。QQWebAssembly.instantiate第一个参数传代码包内压缩过的文件路径即可,需要是.wasm.br后缀。目前iOS需要在 15.0 及以上系统才支持 Brotli 压缩。