preLoadGameWithURL:options:completion:
预加载游戏(通过远端 URL 配置)
该方法通过指定游戏包的下载地址(URL)及校验元数据来执行预加载操作。它是 preDownload 与 preLoad 的结合体:SDK 会首先检查本地缓存,若缓存失效或不存在,则自动下载资源,下载完成后立即执行解压及运行时环境初始化。
方法声明
objc
/**
Pre-load game using remote URL options.
This combines downloading (if needed) and runtime initialization.
@param url url.
@param options Configuration object containing version, and integrity metadata.
@param completion Called when the pre-load operation finishes.
@return An instance of id<SUDOPGameTask> to track the pre-load task.
*/
+ (id<SUDOPGameTask>)preLoadGameWithURL:(NSString *)url
options:(SUDOPGamePackageOptions *)options
completion:(nullable SUDOPGameOperationCompletion)completion;参数说明
| 参数名 | 类型 | 必传 | 描述 |
|---|---|---|---|
| url | NSString * | 是 | 远端 url |
| options | SUDOPGamePackageOptions * | 是 | 包含远端 url、版本号 version 以及文件校验标识 fid 等信息的对象。 |
| completion | SUDOPGameOperationCompletion | 否 | 异步操作完成后的回调。成功时返回可获取句柄的 provider。 |
返回值
返回一个遵循 id<SUDOPGameTask> 协议的对象。开发者可以通过该对象取消下载或加载过程。
运行行为
- 智能缓存检查:SDK 优先根据
options.appGameID和options.version查找本地是否存在已解压或已下载的资源。 - 自动流水线:
- Step 1: 若本地无可用资源,启动网络下载。
- Step 2: 下载完成后进行
fid完整性校验。 - Step 3: 校验通过后自动执行解压并初始化运行时环境。
- 就绪回调:当上述所有步骤完成,游戏处于内存就绪状态时,触发
completion回调。
代码示例
objectivec
SUDOPGamePackageOptions *options = [[SUDOPGamePackageOptions alloc] init];
NSString * url = @"https://cdn.example.com/games/my_game_v1.zip";
options.appGameID = @"game_123";
options.version = @"1.0.0";
options.fid = @"d41d8cd98f00b204e9800998ecf8427e";
options.fidType = SUDOPFIDTypeMD5;
[SUDOP preLoadGameWithURL:url options:options completion:nil];注意事项
- 网络依赖:由于此接口可能触发实际的下载行为,其耗时受网络环境影响较大,建议配合 UI 展示加载进度(虽此接口不直接提供 progress block,但可通过 Task 观察状态)。
- 流量消耗:调用此接口可能产生较大的移动数据流量,建议在 WiFi 环境下或提示用户后执行。
- 原子性:若下载成功但校验失败,或解压过程出错,SDK 会自动清理损坏的资源,并返回相应的错误码。