startGameBySignature
启动游戏(通过游戏签名)
startGameBySignature 是生产环境下最推荐的启动方式。它通过从服务端获取的加密**游戏签名(Game Signature)**来启动游戏,确保了游戏版本的合法性、安全性和用户权限的有效性。
该接口会自动处理资源比对、静默下载(若本地无匹配版本)以及环境初始化。
方法声明
java
/**
* 启动游戏,根据游戏签名
*
* @param signature 游戏签名
* @param listener 启动过程监听器
* @return SUDOPGameTask 任务句柄
*/
public static SUDOPGameTask startGameBySignature(String signature, SUDOPStartGameListener listener);参数说明
| 属性 | 类型 | 描述 |
|---|---|---|
| signature | String | 必填。通过 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:错误信息描述。
运行行为
- 安全校验:SDK 首先验证签名的合法性,解析出对应的
gameId和版本约束。 - 热更新检查:对比本地缓存。若服务端有更新,将触发增量下载。
- 环境复用:如果之前调用过
preStart或preLoad且签名匹配,SDK 将直接返回已就绪的视图,实现瞬开。 - 渲染激活:
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(),否则游戏可能在后台持续消耗资源。