preDownloadGameBySignature
预下载游戏(通过游戏签名)
preDownloadGameBySignature 方法允许开发者利用已获取的**游戏签名(Game Signature)**提前下载游戏资源。相比于直接使用游戏 ID,通过签名下载可以确保下载的是特定版本、特定授权范围内的资源包,具有更高的安全性和版本确定性。
方法声明
java
/**
* 预下载游戏,根据游戏签名
*
* @param signature 游戏信息签名数据
* @param listener 下载状态与进度监听器
* @return SUDOPGameTask 任务句柄,可用于管理下载任务
*/
public static SUDOPGameTask preDownloadGameBySignature(
String signature,
SUDOPPreDownloadGameListener listener
);参数说明
用于封装下载所需的授权信息:
| 属性 | 类型 | 描述 |
|---|---|---|
| signature | String | 必填。通过 getGameSignature 接口获取的合法签名。 |
SUDOPPreDownloadGameListener
用于接收下载过程中的状态反馈:
void onSuccess(String gameId):资源包下载、校验及解压完成。void onFailure(int retCode, String retMsg):下载失败。常见原因包括签名失效、网络异常或磁盘空间不足。
运行行为
- 签名解析:SDK 首先解析
gameSignature中的元数据,获取对应的游戏 ID 和资源版本号。 - 资源比对:检查本地缓存目录中是否存在匹配版本的资源,实现增量更新或跳过已下载内容。
- 安全下载:建立加密通道下载资源包,并在下载完成后利用签名中的 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()以终止后台流量消耗。