3
This commit is contained in:
@@ -10,6 +10,18 @@ NS_ASSUME_NONNULL_BEGIN
|
||||
/// 跨进程通知:主 App 请求键盘扩展安装皮肤。
|
||||
extern NSString * const KBDarwinSkinInstallRequestNotification;
|
||||
|
||||
/// 皮肤安装桥接错误域。
|
||||
extern NSErrorDomain const KBSkinBridgeErrorDomain;
|
||||
|
||||
/// 皮肤安装桥接错误码。
|
||||
typedef NS_ENUM(NSUInteger, KBSkinBridgeErrorCode) {
|
||||
KBSkinBridgeErrorInvalidPayload = 1,
|
||||
KBSkinBridgeErrorContainerUnavailable,
|
||||
KBSkinBridgeErrorZipMissing,
|
||||
KBSkinBridgeErrorUnzipFailed,
|
||||
KBSkinBridgeErrorApplyFailed,
|
||||
};
|
||||
|
||||
typedef void (^KBSkinInstallConsumeCompletion)(BOOL success, NSError * _Nullable error);
|
||||
|
||||
@interface KBSkinInstallBridge : NSObject
|
||||
@@ -17,6 +29,17 @@ typedef void (^KBSkinInstallConsumeCompletion)(BOOL success, NSError * _Nullable
|
||||
/// 默认图标短文件名映射(从 KBSkinIconMap.strings 读取)。
|
||||
+ (NSDictionary<NSString *, NSString *> *)defaultIconShortNames;
|
||||
|
||||
/// 主 App / 键盘扩展:通过远程 zip_url 下载并安装一套皮肤。
|
||||
/// - skinJSON 结构与后端约定一致,至少包含:
|
||||
/// * id: 皮肤唯一标识
|
||||
/// * name: 展示名称(可选,缺省为 id)
|
||||
/// * zip_url: 远程 Zip 地址(http/https)
|
||||
/// * key_icons: 按键 -> 图标“短文件名”映射(可选,不传则使用 defaultIconShortNames)
|
||||
/// - 内部会将 Zip 解压到 App Group/Skins/<id>/...,并使用 KBSkinManager 应用主题与背景图。
|
||||
/// - 应用成功后,KBSkinManager 会广播皮肤变更通知,键盘扩展可立即感知。
|
||||
+ (void)installRemoteSkinWithJSON:(NSDictionary *)skinJSON
|
||||
completion:(nullable KBSkinInstallConsumeCompletion)completion;
|
||||
|
||||
/// 主 App 侧:记录一个“从 bundle 解压皮肤”的请求,写入 App Group 并广播 Darwin 通知。
|
||||
+ (void)publishBundleSkinRequestWithId:(NSString *)skinId
|
||||
name:(NSString *)name
|
||||
@@ -36,4 +59,3 @@ typedef void (^KBSkinInstallConsumeCompletion)(BOOL success, NSError * _Nullable
|
||||
@end
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
||||
|
||||
|
||||
Reference in New Issue
Block a user