Skip to content

preDownloadGameByUrl

预下载游戏(通过游戏包 URL)

preDownloadGameByUrl 方法允许开发者跳过 SDK 内部的版本查询逻辑,直接通过指定的 URL 地址 下载游戏资源包。该接口通常用于测试环境下的包体分发,或业务侧有自定义 CDN 资源管理需求的场景。


方法声明

java
/**
 * 预下载游戏,根据游戏包 URL
 *
 * @param url      pkg url
 * @param params   包含游戏包信息的参数对象
 * @param listener 下载状态与进度监听器
 * @return SUDOPGameTask 任务句柄,可用于取消或管理下载任务
 */
public static SUDOPGameTask preDownloadGameByUrl(String url, SUDOPGamePackageParams params, SUDOPPreDownloadGameListener listener);

参数说明

1. SUDOPGamePackageParams

用于指定具体的资源下载链接:

属性类型描述
versionString必填。游戏版本
fidString游戏包文件指纹
fidTypeFIDType游戏包文件指纹生成方式
appGameIDString必填。指定gameID
appCPIDString指定游戏开发者的CP ID
appGroupIDString指定游戏开发者的Group ID

2. FIDType

用于指定游戏包文件指纹生成方式

属性类型描述
MD5enumMD5算法
CRC32enumCRC32算法
SHA1enumSHA1算法
SHA256StrenumingSHA256算法

3. SUDOPPreDownloadGameListener

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

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

运行行为

  1. 直接链接访问:SDK 不会向 SUD 服务端请求资源路径,而是直接建立与 gamePkgUrl 的连接。
  2. 下载并缓存:资源包下载后会存储在 SDK 管理的特定缓存目录下。
  3. 元数据提取:解压过程中,SDK 会自动提取包内的 gameId 和版本信息,以便后续启动时能够正确识别。

代码示例

java
String url = "https://cdn.example.com/games/my_game_v1.zip";

SUDOPGamePackageParams params = new SUDOPGamePackageParams();
params.version = "gamePkgVersion";
params.fid = "2e7ca170f33629c7baf4dc430c541c43";
params.fidType = FIDType.MD5;
params.appGameID = "appGameID";
params.appCPID = "Game Developer id";
params.appGroupID = "Game developer group id";

SUDOP.preDownloadGameByUrl(url, params, new SUDOPPreDownloadGameListener() {
    @Override
    public void onSuccess(String gamId) {
    }
    @Override
    public void onFailure(int retCode, String retMsg) {
    }
});

注意事项

  • 安全性提示:由于该接口直接信任传入的 URL,请确保下载链接来自受信任的来源。
  • 资源结构:传入的资源包必须符合 SUD SDK 的规范目录结构,否则 onSuccess 后的启动可能会失败。
  • 流量管理:通过 URL 下载的任务同样受 SUDOPGameTask 管理,必要时请调用 task.destroy()