添加扩展键盘本地皮肤
This commit is contained in:
@@ -10,6 +10,7 @@
|
||||
#import "KBKeyboardPermissionManager.h"
|
||||
#import "KBNetworkManager.h"
|
||||
#import "KBHUD.h"
|
||||
#import "KBSkinInstallBridge.h"
|
||||
|
||||
#if __has_include(<SSZipArchive/SSZipArchive.h>)
|
||||
#import <SSZipArchive/SSZipArchive.h>
|
||||
@@ -19,28 +20,6 @@
|
||||
|
||||
#pragma mark - Icon short-name mapping (local default)
|
||||
|
||||
/// 本地维护的一份“逻辑按键标识 -> 图标短文件名”映射表。
|
||||
/// - 若后端 skinJSON 未提供 key_icons,则远程 Zip 模式会回退使用本表;仅依赖 zip_url + 命名规范即可。
|
||||
+ (NSDictionary<NSString *, NSString *> *)kb_defaultIconShortNames {
|
||||
static NSDictionary<NSString *, NSString *> *map;
|
||||
static dispatch_once_t onceToken;
|
||||
dispatch_once(&onceToken, ^{
|
||||
// 从配置文件加载映射,避免在代码里维护大段字面量。
|
||||
// 使用 .strings 形式,便于为每个键添加注释。
|
||||
NSString *path = [[NSBundle mainBundle] pathForResource:@"KBSkinIconMap" ofType:@"strings"];
|
||||
if (path.length > 0) {
|
||||
NSDictionary *dict = [NSDictionary dictionaryWithContentsOfFile:path];
|
||||
if ([dict isKindOfClass:NSDictionary.class]) {
|
||||
map = dict;
|
||||
}
|
||||
}
|
||||
if (!map) {
|
||||
map = @{}; // 防御:配置缺失时返回空表,避免崩溃
|
||||
}
|
||||
});
|
||||
return map;
|
||||
}
|
||||
|
||||
+ (instancetype)shared {
|
||||
static KBSkinService *s; static dispatch_once_t onceToken;
|
||||
dispatch_once(&onceToken, ^{ s = [KBSkinService new]; });
|
||||
@@ -104,12 +83,12 @@
|
||||
|
||||
// key_icons 可选:
|
||||
// - 若后端提供 key_icons,则优先使用服务端映射;
|
||||
// - 若未提供,则回退到本地默认映射(kb_defaultIconShortNames),这样后端只需返回 id/name/zip_url。
|
||||
// - 若未提供,则回退到本地默认映射(KBSkinInstallBridge.defaultIconShortNames),这样后端只需返回 id/name/zip_url。
|
||||
NSDictionary *iconShortNames = nil;
|
||||
if ([skin[@"key_icons"] isKindOfClass:NSDictionary.class]) {
|
||||
iconShortNames = skin[@"key_icons"];
|
||||
} else {
|
||||
iconShortNames = [self.class kb_defaultIconShortNames];
|
||||
iconShortNames = [KBSkinInstallBridge defaultIconShortNames];
|
||||
}
|
||||
|
||||
NSURL *containerURL = [[NSFileManager defaultManager] containerURLForSecurityApplicationGroupIdentifier:AppGroup];
|
||||
@@ -284,7 +263,7 @@
|
||||
if ([skin[@"key_icons"] isKindOfClass:NSDictionary.class]) {
|
||||
iconShortNames = skin[@"key_icons"];
|
||||
} else {
|
||||
iconShortNames = [self.class kb_defaultIconShortNames];
|
||||
iconShortNames = [KBSkinInstallBridge defaultIconShortNames];
|
||||
}
|
||||
|
||||
NSURL *containerURL = [[NSFileManager defaultManager] containerURLForSecurityApplicationGroupIdentifier:AppGroup];
|
||||
|
||||
Reference in New Issue
Block a user