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
用于指定具体的资源下载链接:
| 属性 | 类型 | 描述 |
|---|---|---|
| version | String | 必填。游戏版本 |
| fid | String | 游戏包文件指纹 |
| fidType | FIDType | 游戏包文件指纹生成方式 |
| appGameID | String | 必填。指定gameID |
| appCPID | String | 指定游戏开发者的CP ID |
| appGroupID | String | 指定游戏开发者的Group ID |
2. FIDType
用于指定游戏包文件指纹生成方式
| 属性 | 类型 | 描述 |
|---|---|---|
| MD5 | enum | MD5算法 |
| CRC32 | enum | CRC32算法 |
| SHA1 | enum | SHA1算法 |
| SHA256 | Strenuming | SHA256算法 |
3. SUDOPPreDownloadGameListener
用于接收下载过程中的状态反馈:
void onSuccess(String gameId):资源包下载、校验及解压完成。void onFailure(int retCode, String retMsg):下载失败。常见原因包括 URL 地址无效、网络不可达或磁盘空间不足。
运行行为
- 直接链接访问:SDK 不会向 SUD 服务端请求资源路径,而是直接建立与
gamePkgUrl的连接。 - 下载并缓存:资源包下载后会存储在 SDK 管理的特定缓存目录下。
- 元数据提取:解压过程中,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()。