// // KBSkinService.h // keyBoard // // 统一的键盘皮肤下载/应用服务。 // - App 端调用,一处封装本地图标导出 / 网络图标下载 / 背景图下载逻辑 // - 内部会检查键盘是否开启完全访问,并在不足时给出提示或引导 // #import #import NS_ASSUME_NONNULL_BEGIN typedef void(^KBSkinApplyCompletion)(BOOL success); /// 皮肤资源来源 typedef NS_ENUM(NSUInteger, KBSkinSourceMode) { /// 远程 Zip:通过网络下载 zip_url 并解压到 App Group KBSkinSourceModeRemoteZip = 0, /// 本地 bundle Zip:从主 App bundle 中读取 zip_url 指定的 zip 文件并解压到 App Group KBSkinSourceModeLocalBundleZip = 1, }; /// 皮肤下载与应用服务(仅主 App 使用) @interface KBSkinService : NSObject + (instancetype)shared; /// 根据后端返回的皮肤 JSON 下载并应用皮肤。 /// /// @param skinJSON 与后端约定的皮肤结构(包含 id/name/background_image/hidden_keys/key_icons 等) /// @param presenting 用于弹出“键盘权限引导页”的控制器,可为 nil /// @param mode 资源来源模式:远程 / 本地 bundle /// @param completion 应用完成回调(下载/写入全部结束后调用,success 表示是否成功) - (void)applySkinWithJSON:(NSDictionary *)skinJSON fromViewController:(nullable UIViewController *)presenting mode:(KBSkinSourceMode)mode completion:(nullable KBSkinApplyCompletion)completion; @end NS_ASSUME_NONNULL_END