Skip to content

preDownloadGameWithSignature:completion:

预下载游戏(通过游戏签名)

该方法使用预先获取的游戏签名(Game Signature)开启游戏包的异步下载任务。相比于直接使用 Game ID,该接口适用于开发者已在服务端或其他环节提前换取好签名的情况,省去了内部再次请求签名的步骤,能够更快地启动下载流程。


方法声明

objectivec
/**
 Pre-download game package using a game signature.
 @param gameSignature The signature used to authorize the game download.
 @param completion Called when the download task finishes or fails.
 @return An instance of id<SUDOPGameTask> to control or track the task.
 */
+ (id<SUDOPGameTask>)preDownloadGameWithSignature:(nonnull NSString *)gameSignature
                                        completion:(nullable SUDOPCompletion)completion;

参数说明

参数名类型必传描述
gameSignatureNSString *游戏的授权签名字符串。
completionSUDOPCompletion任务结束回调。成功时 error 为 nil;失败时 error 包含具体原因。

返回值

返回一个遵循 id<SUDOPGameTask> 协议的对象。开发者可以通过该对象获取任务状态或调用 cancel 中止下载。


运行行为

  1. 直接授权:SDK 解析签名中的权限信息,直接建立下载通道。
  2. 文件校验:下载过程中会根据签名中包含的元数据(如 FID)实时校验包体的完整性。
  3. 缓存复用:如果本地已存在该签名对应版本的游戏包且校验通过,任务将直接触发完成回调(进度跳至 100%)。

代码示例

objc
// 假设已通过 getGameSignatureWithGameID 拿到 signature
NSString *signature = @"your_game_signature_string";
[SUDOP preDownloadGameWithSignature:signature completion:nil];

注意事项

  • 有效性校验:如果传入的 gameSignature 已过期或格式非法,任务会立即通过 completion 返回错误,错误码通常与认证失败相关。
  • 版本锁定:签名通常绑定了特定的游戏版本。如果需要更新游戏,请确保获取最新的签名后再调用此接口。
  • 并发限制:同一时间内,SDK 可能会对同一资源的下载进行合并处理,避免重复占用带宽。