Skip to content

preLoadGameWithURL:options:completion:

预加载游戏(通过远端 URL 配置)

该方法通过指定游戏包的下载地址(URL)及校验元数据来执行预加载操作。它是 preDownloadpreLoad 的结合体: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;

参数说明

参数名类型必传描述
urlNSString *远端 url
optionsSUDOPGamePackageOptions *包含远端 url、版本号 version 以及文件校验标识 fid 等信息的对象。
completionSUDOPGameOperationCompletion异步操作完成后的回调。成功时返回可获取句柄的 provider

返回值

返回一个遵循 id<SUDOPGameTask> 协议的对象。开发者可以通过该对象取消下载或加载过程。


运行行为

  1. 智能缓存检查:SDK 优先根据 options.appGameIDoptions.version 查找本地是否存在已解压或已下载的资源。
  2. 自动流水线
  • Step 1: 若本地无可用资源,启动网络下载。
  • Step 2: 下载完成后进行 fid 完整性校验。
  • Step 3: 校验通过后自动执行解压并初始化运行时环境。
  1. 就绪回调:当上述所有步骤完成,游戏处于内存就绪状态时,触发 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 会自动清理损坏的资源,并返回相应的错误码。