preDownloadGameWithURL:options:completion:
预下载游戏(通过自定义 URL 配置)
该方法允许开发者通过直接指定游戏包的下载地址(URL)及校验元数据(FID/FIDType)来开启异步下载任务。相比于使用 ID 或签名,该接口提供了最高的灵活性,适用于开发者拥有自建 CDN 或需要从特定资源服务器下载游戏包的场景。
方法声明
objectivec
/**
Pre-download game package using custom URL options.
@param url url
@param options Configuration object containing the URL, version, and integrity metadata.
@param completion Called when the download task finishes or fails.
@return An instance of id<SUDOPGameTask> to control or track the task.
*/
+ (id<SUDOPGameTask>)preDownloadGameWithURL:(NSString *)url
options:(nullable SUDOPGamePackageOptions *)options
completion:(nullable SUDOPCompletion)completion;参数说明
| 参数名 | 类型 | 必传 | 描述 |
|---|---|---|---|
| url | NSString | 是 | 游戏包下载的地址 |
| options | SUDOPGamePackageOptions * | 是 | 版本号 version 以及文件校验标识 fid 等信息的对象。 |
| completion | SUDOPCompletion | 否 | 任务结束回调。若校验失败或网络异常,error 将携带具体原因。 |
返回值
返回一个遵循 id<SUDOPGameTask> 协议的对象,用于管理该下载任务的生命周期。
运行行为
- 完全受控下载:SDK 将直接从
options.url指向的地址拉取数据,不再通过 SDK 内部的鉴权服务换取地址。 - 强制校验:下载完成后,SDK 会根据
options.fid和options.fidType(如 MD5/SHA256)对文件进行完整性哈希校验。校验不通过将触发失败回调并清理残余文件。 - 覆盖安装:如果本地已缓存了相同
appGameID但version不同的包,SDK 会根据内部逻辑处理版本的更新或替换。
代码示例
objc
NSString *url = @"https://cdn.example.com/games/my_game_v1.zip";
SUDOPGamePackageOptions *options = [[SUDOPGamePackageOptions alloc] init];
options.version = @"1.0.0";
options.fid = @"d41d8cd98f00b204e9800998ecf8427e"; // 文件 MD5
options.fidType = SUDOPFIDTypeMD5;
options.appGameID = @"game_123";
[SUDOP preDownloadGameWithURL:url options:options completion:nil];注意事项
- HTTPS 要求:出于安全考虑,建议
url使用 HTTPS 协议,否则在 iOS 默认配置下可能因 ATS(App Transport Security)限制导致失败。 - 校验必填:强烈建议提供正确的
fid和fidType。若跳过校验,可能会导致后续启动游戏时因包体损坏而崩溃。 - 业务关联:确保
options.appGameID的准确性,这决定了 SDK 内部如何将此资源与后续的startGame逻辑进行关联。