添加扩展键盘本地皮肤

This commit is contained in:
2025-11-20 14:27:57 +08:00
parent b3ce856ad4
commit 799b0f3989
18 changed files with 674 additions and 232 deletions

View File

@@ -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];

View File

@@ -93,8 +93,8 @@
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
[tableView deselectRowAtIndexPath:indexPath animated:YES];
// KBTestVC *vc = [[KBTestVC alloc] init];
// [self.navigationController pushViewController:vc animated:true];
KBTestVC *vc = [[KBTestVC alloc] init];
[self.navigationController pushViewController:vc animated:true];
}
#pragma mark - Lazy

View File

@@ -9,6 +9,8 @@
#import <MJRefresh/MJRefresh.h>
#import <Masonry/Masonry.h>
#import "KBSkinCardCell.h"
#import "KBSkinInstallBridge.h"
#import "KBHUD.h"
@interface KBShopItemVC ()<UICollectionViewDataSource, UICollectionViewDelegateFlowLayout>
@property (nonatomic, copy) void(^scrollCallback)(UIScrollView *scrollView);
@@ -113,6 +115,21 @@
return 12.0;
}
- (void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath{
[self kb_handleShopTapAtIndexPath:indexPath];
}
- (void)kb_handleShopTapAtIndexPath:(NSIndexPath *)indexPath {
NSString *title = (indexPath.item < self.dataSource.count) ? self.dataSource[indexPath.item] : KBLocalized(@"专属皮肤002");
// 002.zip id便
static NSString * const kKBBundleSkinId002 = @"bundle_skin_002";
[KBSkinInstallBridge publishBundleSkinRequestWithId:kKBBundleSkinId002
name:title ?: kKBBundleSkinId002
zipName:@"002.zip"
iconShortNames:nil];
[KBHUD showInfo:KBLocalized(@"已通知键盘解压,切换到自定义键盘即可生效")];
}
#pragma mark - UIScrollView Delegate
- (void)scrollViewDidScroll:(UIScrollView *)scrollView {
!self.scrollCallback ?: self.scrollCallback(scrollView);