Skip to content

startGameBySignature

启动游戏(通过游戏签名)

startGameBySignature 是生产环境下最推荐的启动方式。它通过从服务端获取的加密**游戏签名(Game Signature)**来启动游戏,确保了游戏版本的合法性、安全性和用户权限的有效性。

该接口会自动处理资源比对、静默下载(若本地无匹配版本)以及环境初始化。


方法声明

java
/**
 * 启动游戏,根据游戏签名
 *
 * @param signature         游戏签名
 * @param listener          启动过程监听器
 * @return SUDOPGameTask    任务句柄
 */
public static SUDOPGameTask startGameBySignature(String signature, SUDOPStartGameListener listener);

参数说明

属性类型描述
signatureString必填。通过 getGameSignature 获取的加密签名字符串。

1. SUDOPStartGameListener

  • void onGamePkgDecrypt(GamePkgDecryptHandle handle, String filePath):游戏包解密回调。
  • void onCreated(SUDRTGameHandle gameHandle):游戏实例创建完成。gameHandle为游戏实例句柄,可用于后续控制游戏生命周期或交互。
  • void onSuccess(String gameId, SUDRTGameHandle gameHandle):游戏启动成功。
  • void onFailure(int retCode, String retMsg):游戏启动失败。

2. GamePkgDecryptHandle

  • void success(String decryptedFilePath, boolean isDeleteFile):解密成功。decryptedFilePath:解密后的文件路径。isDeleteFile:游戏加载完成后是否删除该文件。

  • void fail(int retCode, String retMsg):解密失败。retCode:错误码。retMsg:错误信息描述。


运行行为

  1. 安全校验:SDK 首先验证签名的合法性,解析出对应的 gameId 和版本约束。
  2. 热更新检查:对比本地缓存。若服务端有更新,将触发增量下载。
  3. 环境复用:如果之前调用过 preStartpreLoad 且签名匹配,SDK 将直接返回已就绪的视图,实现瞬开
  4. 渲染激活onSuccess 回调后,游戏开始处理触摸事件并播放音频。

代码示例

java
String signature = "SERVER_SIDE_ENCRYPTED_SIGNATURE";
SUDOPGameTask gameTask = SUDOP.startGameBySignature(signature, new SUDOPStartGameListener() {
    @Override
    public void onGamePkgDecrypt(GamePkgDecryptHandle handle, String filePath) {
    }
    @Override
    public void onCreated(SUDRTGameHandle gameHandle) {
    }
    @Override
    public void onSuccess(String gameId, SUDRTGameHandle gameHandle) {
        // 将这个View贴到app自身的页面上即可
        View gameView = gameHandle.getGameView();
    }
    @Override
    public void onFailure(int retCode, String retMsg) {
    }
});

注意事项

  • 签名失效性:签名通常有较短的有效期。如果用户在启动页停留过久导致签名过期,需重新获取。
  • 实例唯一性:调用此方法会销毁当前进程内已有的其他游戏运行实例,以确保资源独占。
  • 生命周期同步:请务必在 Activity 的 onDestroy 中调用 task.destroy(),否则游戏可能在后台持续消耗资源。