如何根据场景拉取配置和资源?
一、使用场景
Shiply 支持用户定义场景,通过将场景 ID 与配置/资源关联,可以实现通过场景 ID 批量拉取 所关联的下发配置或资源。例如:您可以定义一个「会员中心」场景,在进入页面前,批量下载场景下的所有资源。
二、使用步骤
2.1 创建或查询场景 ID
- 创建场景后,SDK 通过场景 ID 拉取绑定在场景下的远程配置或远程资源
- 支持查询场景关联的所有配置
2.2 在配置与开关中关联场景
关联场景为关键变更,在弹窗中进行二次确认。
2.3 在资源与发布中关联场景
2.4 注意事项
- 在配置/资源中关联场景后,需要新建任务生效,或者修改任务重新发布生效。
三、SDK 拉取场景下的资源
3.1 iOS SDK
通过场景(Scene)ID异步拉取多个远程最新资源(推荐):
///
/// 资源加载策略:
/// 1. 尽可能返回最新资源,即使本地有可用资源,也会根据最新配置,先尝试获取最新包
/// 2. 如果次更新失败,回调失败结果,并返回本地最新包
///
/// 注意:
/// 1. 由于获取的是最新资源,该方法多次调用返回的资源不保证是同一个版本
/// 2. 如果需要在进程运行期间获取特定资源时使用同一版本,可使用带版本锁定的接口
///
/// @param sceneId 场景ID
/// @param progressBlock 进度的回调
/// @param completedBlock 完成的回调
- (void)batchLoadLatestWithSceneId:(NSString *)sceneId
progress:(nullable ResHubBatchLoadProgressBlock)progressBlock
completed:(nullable ResHubBatchLoadCompletionBlock)completedBlock;特别的,如果希望
通过场景(Scene)异步拉取多个资源的锁定版本(按需使用)
锁定版本:意味着当资源更新到最新版本时,需要重启才能生效,未重启前会保持锁定初次加载时的版本。
///
/// 资源加载策略:// 1. 如果本地有锁定版本的资源,优先返回,并检查更新
/// 2. 如果本地没有锁定版本的资源,则等待网络请求资源后,锁定版本并返回
///
/// 注意:
/// 该方法在进程运行期间,多次调用返回的资源保证是同一个版本
///
/// @param sceneId 场景ID
/// @param progressBlock 进度的回调
/// @param completedBlock 完成的回调
- (void)batchLoadWithSceneId:(NSString *)sceneId
progress:(nullable ResHubBatchLoadProgressBlock)progressBlock
completed:(nullable ResHubBatchLoadCompletionBlock)completedBlock;