Skip to content

preDownloadGameBySignature

预下载游戏(通过游戏签名)

preDownloadGameBySignature 方法允许开发者利用已获取的**游戏签名(Game Signature)**提前下载游戏资源。相比于直接使用游戏 ID,通过签名下载可以确保下载的是特定版本、特定授权范围内的资源包,具有更高的安全性和版本确定性。


方法声明

java
/**
 * 预下载游戏,根据游戏签名
 *
 * @param signature      游戏信息签名数据
 * @param listener       下载状态与进度监听器
 * @return SUDOPGameTask 任务句柄,可用于管理下载任务
 */
public static SUDOPGameTask preDownloadGameBySignature(
    String signature, 
    SUDOPPreDownloadGameListener listener
);

参数说明

用于封装下载所需的授权信息:

属性类型描述
signatureString必填。通过 getGameSignature 接口获取的合法签名。

SUDOPPreDownloadGameListener

用于接收下载过程中的状态反馈:

  • void onSuccess(String gameId):资源包下载、校验及解压完成。
  • void onFailure(int retCode, String retMsg):下载失败。常见原因包括签名失效、网络异常或磁盘空间不足。

运行行为

  1. 签名解析:SDK 首先解析 gameSignature 中的元数据,获取对应的游戏 ID 和资源版本号。
  2. 资源比对:检查本地缓存目录中是否存在匹配版本的资源,实现增量更新或跳过已下载内容。
  3. 安全下载:建立加密通道下载资源包,并在下载完成后利用签名中的 Hash 信息进行完整性校验。

代码示例

java
// 开启预下载任务
SUDOPGameTask task = SUDOP.preDownloadGameBySignature("从 getGameSignature 获得的签名", new SUDOPPreDownloadGameListener() {
    @Override
    public void onSuccess(String gameId) {
        // 游戏资源已就绪,记录游戏 ID 或更新 UI
        Log.i("SUDOP", "Pre-download success for game: " + gameId);
    }

    @Override
    public void onFailure(int retCode, String retMsg) {
        // 处理错误
        Log.e("SUDOP", "Pre-download failed: " + retMsg);
    }
});

注意事项

  • 时效性约束gameSignature 具有有效期。如果在下载开始前签名已过期,接口将回调 onFailure
  • 资源覆盖:如果签名指向的是一个新版本,SDK 会自动下载新资源并管理旧版本的清理。
  • 生命周期管理:若 Activity 销毁或用户取消操作,务必调用 task.destroy() 以终止后台流量消耗。