preLoadGameWithSignature:completion:
预加载游戏(通过游戏签名)
该方法使用预先获取的游戏签名(Game Signature)开启预加载流程。它是最常用的预加载方式之一,结合了权限验证、资源下载(如果本地缺失)以及运行时环境初始化。通过签名,SDK 可以获取该游戏版本的所有元数据,确保预加载的环境与正式运行环境完全一致。
方法声明
objectivec
/**
Pre-load game with a game signature to prepare the runtime environment.
@param gameSignature The signature used to authorize the game operation.
@param completion Called when the pre-load operation finishes.
@return An instance of id<SUDOPGameTask> to track the pre-load task.
*/
+ (id<SUDOPGameTask>)preLoadGameWithSignature:(NSString *)gameSignature
completion:(nullable SUDOPGameOperationCompletion)completion;参数说明
| 参数名 | 类型 | 必传 | 描述 |
|---|---|---|---|
| gameSignature | NSString * | 是 | 游戏的授权签名字符串,通常通过 getGameSignatureWithGameID:completion: 获取。 |
| completion | SUDOPGameOperationCompletion | 否 | 异步操作完成后的回调。成功时返回可获取句柄的 provider。 |
返回值
返回一个遵循 id<SUDOPGameTask> 协议的对象。开发者可以通过该对象获取任务 ID 或在必要时调用 cancel 终止预加载。
运行行为
- 元数据解析:SDK 解析签名以识别游戏 ID、版本信息及资源校验标识(FID)。
- 静默下载(按需):如果本地缓存中不存在该签名对应的游戏资源,SDK 会自动启动下载流程。
- 环境热启动:资源就绪后,SDK 会初始化运行时引擎(Runtime),预加载必要的脚本和配置,使游戏进入“准运行”状态。
- 句柄生成:在
completion回调触发时,gameHandle已经被初步创建并分配,等待最终的startGame指令。
代码示例
objectivec
// 1. 获取签名
[SUDOP getGameSignatureWithGameID:@"game_123" completion:nil];注意事项
- 签名有效期:请确保在签名过期前完成预加载。如果预加载过程中签名过期,可能会导致资源请求失败。
- 资源同步:该接口会确保加载的是签名指定的特定版本,有效防止了客户端版本与服务端配置不一致的问题。
- 性能优化:在 UI 层面,可以在用户点击游戏详情页时调用此接口,从而在用户点击“开始”按钮时实现瞬间进入。