Skip to content

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;

参数说明

参数名类型必传描述
urlNSString游戏包下载的地址
optionsSUDOPGamePackageOptions *版本号 version 以及文件校验标识 fid 等信息的对象。
completionSUDOPCompletion任务结束回调。若校验失败或网络异常,error 将携带具体原因。

返回值

返回一个遵循 id<SUDOPGameTask> 协议的对象,用于管理该下载任务的生命周期。


运行行为

  1. 完全受控下载:SDK 将直接从 options.url 指向的地址拉取数据,不再通过 SDK 内部的鉴权服务换取地址。
  2. 强制校验:下载完成后,SDK 会根据 options.fidoptions.fidType(如 MD5/SHA256)对文件进行完整性哈希校验。校验不通过将触发失败回调并清理残余文件。
  3. 覆盖安装:如果本地已缓存了相同 appGameIDversion 不同的包,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)限制导致失败。
  • 校验必填:强烈建议提供正确的 fidfidType。若跳过校验,可能会导致后续启动游戏时因包体损坏而崩溃。
  • 业务关联:确保 options.appGameID 的准确性,这决定了 SDK 内部如何将此资源与后续的 startGame 逻辑进行关联。