diff --git a/CustomKeyboard/KeyboardViewController.m b/CustomKeyboard/KeyboardViewController.m index a0bf494..c63a344 100644 --- a/CustomKeyboard/KeyboardViewController.m +++ b/CustomKeyboard/KeyboardViewController.m @@ -27,6 +27,7 @@ #import "Masonry.h" #import "UIImage+KBColor.h" #import +#import // #import "KBLog.h" @@ -74,6 +75,9 @@ static void KBSkinInstallNotificationCallback(CFNotificationCenterRef center, KBFunctionView *functionView; // 功能面板视图(点击工具栏第0个时显示) @property(nonatomic, strong) KBSettingView *settingView; // 设置页 @property(nonatomic, strong) UIImageView *bgImageView; // 背景图(在底层) +@property(nonatomic, strong) UIImageView *personaAvatarImageView; // 语音模式下显示的 persona 小头像 +@property(nonatomic, strong) UIImageView *personaGrayImageView; // 语音模式下显示的 persona 小头像 + @property(nonatomic, strong) KBChatPanelView *chatPanelView; @property(nonatomic, strong) KBKeyboardSubscriptionView *subscriptionView; @property(nonatomic, strong) KBSuggestionEngine *suggestionEngine; @@ -154,6 +158,8 @@ static void KBSkinInstallNotificationCallback(CFNotificationCenterRef center, - (void)viewWillDisappear:(BOOL)animated { [super viewWillDisappear:animated]; [[KBBackspaceUndoManager shared] registerNonClearAction]; + // 清理 persona 头像内存 + [self kb_hidePersonaAvatar]; } - (void)traitCollectionDidChange:(UITraitCollection *)previousTraitCollection { @@ -653,6 +659,8 @@ static void KBSkinInstallNotificationCallback(CFNotificationCenterRef center, if (index == 1) { [self showFunctionPanel:NO]; [self showChatPanel:YES]; + // 显示 persona 头像 + [self kb_showPersonaAvatarOnBgImageView]; return; } [self showFunctionPanel:NO]; @@ -812,6 +820,8 @@ static void KBSkinInstallNotificationCallback(CFNotificationCenterRef center, } self.chatAudioPlayer = nil; [self showChatPanel:NO]; + // 隐藏 persona 头像 + [self kb_hidePersonaAvatar]; } #pragma mark - Chat Helpers @@ -1292,6 +1302,92 @@ static void KBSkinInstallNotificationCallback(CFNotificationCenterRef center, return _subscriptionView; } +- (UIImageView *)personaAvatarImageView { + if (!_personaAvatarImageView) { + _personaAvatarImageView = [[UIImageView alloc] init]; + _personaAvatarImageView.contentMode = UIViewContentModeScaleAspectFill; + _personaAvatarImageView.clipsToBounds = YES; + _personaAvatarImageView.hidden = YES; + } + return _personaAvatarImageView; +} +- (UIImageView *)personaGrayImageView{ + if (!_personaGrayImageView) { + _personaGrayImageView = [[UIImageView alloc] init]; + _personaAvatarImageView.contentMode = UIViewContentModeScaleAspectFill; + + } + return _personaGrayImageView; +} + +#pragma mark - Persona Avatar + +/// 从 AppGroup 读取选中的 persona 信息 +- (NSDictionary *)kb_selectedPersonaFromAppGroup { + NSUserDefaults *ud = [[NSUserDefaults alloc] initWithSuiteName:AppGroup]; + NSDictionary *personaDict = [ud objectForKey:@"AppGroup_SelectedPersona"]; + if ([personaDict isKindOfClass:[NSDictionary class]]) { + return personaDict; + } + return nil; +} + +/// 在 bgImageView 上显示 persona 头像 +- (void)kb_showPersonaAvatarOnBgImageView { + // 检查是否有完全访问权限 + if (![[KBFullAccessManager shared] hasFullAccess]) { + NSLog(@"[Keyboard] 未开启完全访问,无法显示 persona 头像"); + return; + } + + // 从 AppGroup 共享目录读取预处理好的小图片 + NSURL *containerURL = [[NSFileManager defaultManager] containerURLForSecurityApplicationGroupIdentifier:AppGroup]; + if (!containerURL) { + NSLog(@"[Keyboard] 无法获取 AppGroup 容器目录"); + return; + } + + NSString *imagePath = [[containerURL path] stringByAppendingPathComponent:@"persona_cover.jpg"]; + if (![[NSFileManager defaultManager] fileExistsAtPath:imagePath]) { + NSLog(@"[Keyboard] persona 封面图文件不存在: %@", imagePath); + return; + } + + NSLog(@"[Keyboard] 准备从本地加载 persona 封面图: %@", imagePath); + + // 添加视图到 contentView,与 bgImageView 尺寸一致 + if (!self.personaAvatarImageView.superview) { + [self.contentView insertSubview:self.personaAvatarImageView aboveSubview:self.bgImageView]; + [self.personaAvatarImageView addSubview:self.personaGrayImageView]; + [self.personaAvatarImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.edges.equalTo(self.bgImageView); + }]; + [self.personaGrayImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.bottom.equalTo(self.personaAvatarImageView); + make.height.mas_equalTo(self.keyBoardMainView); + }]; + } + + // 先清理旧图片 + self.personaAvatarImageView.image = nil; + + // 从本地文件加载图片(已经是缩小后的小图片,内存占用很小) + UIImage *image = [UIImage imageWithContentsOfFile:imagePath]; + if (image) { + self.personaAvatarImageView.image = image; + self.personaAvatarImageView.hidden = NO; + NSLog(@"[Keyboard] persona 封面图加载成功"); + } else { + NSLog(@"[Keyboard] persona 封面图加载失败"); + } +} + +/// 隐藏 persona 头像 +- (void)kb_hidePersonaAvatar { + self.personaAvatarImageView.hidden = YES; + self.personaAvatarImageView.image = nil; +} + #pragma mark - Actions - (void)kb_openRechargeForProduct:(KBKeyboardSubscriptionProduct *)product { @@ -1472,6 +1568,8 @@ static void KBSkinInstallNotificationCallback(CFNotificationCenterRef center, NSLog(@"⌨️[Keyboard] apply theme id=%@ hasBg=%d", t.skinId, (img != nil)); [self kb_logSkinDiagnosticsWithTheme:t backgroundImage:img]; self.bgImageView.image = img; + self.personaGrayImageView.image = img; + // [self.chatPanelView kb_setBackgroundImage:img]; BOOL hasImg = (img != nil); // 触发键区按主题重绘 diff --git a/Podfile b/Podfile index d41dce1..b754093 100644 --- a/Podfile +++ b/Podfile @@ -29,6 +29,7 @@ target 'CustomKeyboard' do use_frameworks! pod 'AFNetworking','4.0.1' + pod 'SDWebImage', '5.21.1' pod 'Masonry', '1.1.0' pod 'MBProgressHUD', '1.2.0' diff --git a/Podfile.lock b/Podfile.lock index 3bc0913..d00570f 100644 --- a/Podfile.lock +++ b/Podfile.lock @@ -96,6 +96,6 @@ SPEC CHECKSUMS: SDWebImage: f29024626962457f3470184232766516dee8dfea SSZipArchive: fe6a26b2a54d5a0890f2567b5cc6de5caa600aef -PODFILE CHECKSUM: 3b9d37a9d2c323afb33b6389f3c70184f53ea313 +PODFILE CHECKSUM: 890d1710715c017d7364a19c871e9bdf0d685fbf COCOAPODS: 1.16.2 diff --git a/Pods/Manifest.lock b/Pods/Manifest.lock index 3bc0913..d00570f 100644 --- a/Pods/Manifest.lock +++ b/Pods/Manifest.lock @@ -96,6 +96,6 @@ SPEC CHECKSUMS: SDWebImage: f29024626962457f3470184232766516dee8dfea SSZipArchive: fe6a26b2a54d5a0890f2567b5cc6de5caa600aef -PODFILE CHECKSUM: 3b9d37a9d2c323afb33b6389f3c70184f53ea313 +PODFILE CHECKSUM: 890d1710715c017d7364a19c871e9bdf0d685fbf COCOAPODS: 1.16.2 diff --git a/Pods/Pods.xcodeproj/project.pbxproj b/Pods/Pods.xcodeproj/project.pbxproj index 35dde8e..21ccdb1 100644 --- a/Pods/Pods.xcodeproj/project.pbxproj +++ b/Pods/Pods.xcodeproj/project.pbxproj @@ -83,6 +83,7 @@ 1CA85ECC202E5CF62530BAD7C0DCDAF2 /* LookinHierarchyInfo.h in Headers */ = {isa = PBXBuildFile; fileRef = C792FA3E4D3612659DA4500FE9D4A687 /* LookinHierarchyInfo.h */; settings = {ATTRIBUTES = (Public, ); }; }; 1D18A1A5D485D57192B021A8765C0AF5 /* LookinTuple.h in Headers */ = {isa = PBXBuildFile; fileRef = A6D1CC45A7943BAD96C97D9225C9021D /* LookinTuple.h */; settings = {ATTRIBUTES = (Public, ); }; }; 1D3DCD05B685A7CAF291C25D922B1831 /* HWPanModalPresentationController.m in Sources */ = {isa = PBXBuildFile; fileRef = F1FAB9A951323777D4A48D49725B9802 /* HWPanModalPresentationController.m */; }; + 1D7A626B22937B65716BDF135E5566C2 /* Pods-CustomKeyboard-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 9DDD0462C32F55EF5E9CB1056459809F /* Pods-CustomKeyboard-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; 1DB724891F1F6468BDB333369F667F39 /* HWPanModalPresentableHandler.h in Headers */ = {isa = PBXBuildFile; fileRef = 7A518E59A590CAA7BC0D3ADD4113D0AC /* HWPanModalPresentableHandler.h */; settings = {ATTRIBUTES = (Public, ); }; }; 1DC161351EBD409CC622E826340E4FD8 /* JXCategoryTitleVerticalZoomCell.h in Headers */ = {isa = PBXBuildFile; fileRef = ECE929CFE87E3E6402751CE58A6B7439 /* JXCategoryTitleVerticalZoomCell.h */; settings = {ATTRIBUTES = (Public, ); }; }; 1EA011B45EC780B434507AFB3D9647ED /* NSObject+MJCoding.h in Headers */ = {isa = PBXBuildFile; fileRef = 0157E81AF7D3A5016170216831D8914B /* NSObject+MJCoding.h */; settings = {ATTRIBUTES = (Public, ); }; }; @@ -102,7 +103,6 @@ 2175B894008D948C762468307BA677B8 /* RTLManager.m in Sources */ = {isa = PBXBuildFile; fileRef = AD9FC9F1DFCA104E54D6E4547D96356D /* RTLManager.m */; }; 2210A1E405AB21104E7AF86D05C8AD39 /* LYEmptyView.m in Sources */ = {isa = PBXBuildFile; fileRef = B7C6325AEC2E86B0B251C3EB931247DD /* LYEmptyView.m */; }; 22516EA77E7120000632C30BD9A03927 /* UIScrollView+MJExtension.h in Headers */ = {isa = PBXBuildFile; fileRef = 5ED944F2FDEEB1DA10261DC24BC5A158 /* UIScrollView+MJExtension.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 22A4B2F6485F38FC998C238B899ED0DE /* Pods-CustomKeyboard-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 3CB13D51E717D347023EEB57263E3072 /* Pods-CustomKeyboard-dummy.m */; }; 22C38AE7AB145224FF646303AFED11D2 /* JXCategoryDotCellModel.h in Headers */ = {isa = PBXBuildFile; fileRef = 44F2EA17CF495B3C7801177736C26647 /* JXCategoryDotCellModel.h */; settings = {ATTRIBUTES = (Public, ); }; }; 22F19B23471EE7840581A348EB735BD1 /* UIViewController+LayoutHelper.m in Sources */ = {isa = PBXBuildFile; fileRef = 44FDE6E0FD25622CBD1C32FE4FDD3698 /* UIViewController+LayoutHelper.m */; }; 231A40F14D020AE2F61AA5C3289E6CF9 /* UITextView+LookinServer.h in Headers */ = {isa = PBXBuildFile; fileRef = 81D1208390281107018E2EF73BCE3B61 /* UITextView+LookinServer.h */; settings = {ATTRIBUTES = (Public, ); }; }; @@ -216,6 +216,7 @@ 4DD9F4BAA95C3527A660D3AAD055CF1E /* HWPanModalContentView.h in Headers */ = {isa = PBXBuildFile; fileRef = BF92FB29A700B0634F55358F1FC1D8BE /* HWPanModalContentView.h */; settings = {ATTRIBUTES = (Public, ); }; }; 4E56BA148170B3A6E7FA6D312B06C784 /* mz_zip_rw.h in Headers */ = {isa = PBXBuildFile; fileRef = B313FB2E02E6138E1628A481AF03A970 /* mz_zip_rw.h */; settings = {ATTRIBUTES = (Project, ); }; }; 4E964FFE29CFF8613C0029C913F39A05 /* LKS_InbuiltAttrModificationHandler.h in Headers */ = {isa = PBXBuildFile; fileRef = A0041C94BD88F8B62868FB3EF9609FB8 /* LKS_InbuiltAttrModificationHandler.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 4EBF759D0963EB4E343C5B0A9CF3EA7F /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D8490F2CF00DB93F5FEEDE1C788BBE73 /* Foundation.framework */; }; 4EC8DBADA7BB954276351A639EB4398D /* UIBlurEffect+LookinServer.h in Headers */ = {isa = PBXBuildFile; fileRef = A7A301C66E696681FADD2B5F1A72E77F /* UIBlurEffect+LookinServer.h */; settings = {ATTRIBUTES = (Public, ); }; }; 4ECE7F80A917130DE4045E25D741EAF9 /* JXCategoryTitleCellModel.m in Sources */ = {isa = PBXBuildFile; fileRef = 677A9795E43833ACFE4BEFACEB9C9E50 /* JXCategoryTitleCellModel.m */; }; 4ED05DB3E43FF6AE1FA22130B2B50F05 /* UIImage+MemoryCacheCost.h in Headers */ = {isa = PBXBuildFile; fileRef = FEF0A8FDB47640450B4AD235DDCCFFE1 /* UIImage+MemoryCacheCost.h */; settings = {ATTRIBUTES = (Public, ); }; }; @@ -356,7 +357,6 @@ 7EB365BD2FC75CE205A638DD725B0555 /* LSTTimer-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = B60A9EA622DCF45E87F4BCA20F525D85 /* LSTTimer-dummy.m */; }; 7ED6C3C05EA6EE83780A3600C7088B46 /* mz_crypt.h in Headers */ = {isa = PBXBuildFile; fileRef = 43F7DFAD54A39AC067B93B7F37CEACC4 /* mz_crypt.h */; settings = {ATTRIBUTES = (Project, ); }; }; 7F10C0D094C74F2FA4CD38C7FD77B0A8 /* WKWebView+AFNetworking.m in Sources */ = {isa = PBXBuildFile; fileRef = E7430A9EA4CB87590757C1508062129E /* WKWebView+AFNetworking.m */; }; - 7F2995EC78B2E2AA4D1A778EF6965729 /* Pods-CustomKeyboard-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 9DDD0462C32F55EF5E9CB1056459809F /* Pods-CustomKeyboard-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; 7F886FC2763F0BF1625A24EE4F94C04D /* UIRefreshControl+AFNetworking.h in Headers */ = {isa = PBXBuildFile; fileRef = A496809B712DE9F509171A8B6356A099 /* UIRefreshControl+AFNetworking.h */; settings = {ATTRIBUTES = (Public, ); }; }; 7FA48BF8B9F73775654E75CEB5363FF4 /* UIViewController+PanModalPresenter.h in Headers */ = {isa = PBXBuildFile; fileRef = 1FDD439886220AA95FF6B36A5C000873 /* UIViewController+PanModalPresenter.h */; settings = {ATTRIBUTES = (Public, ); }; }; 7FA8C78DB021A7731D30D80C102DE042 /* NSObject+MJKeyValue.m in Sources */ = {isa = PBXBuildFile; fileRef = 36F771A08989CA5134B23D5F5E970ACA /* NSObject+MJKeyValue.m */; }; @@ -395,7 +395,6 @@ 8B47B7F220A2B9E121EFF5A28B477972 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D8490F2CF00DB93F5FEEDE1C788BBE73 /* Foundation.framework */; }; 8B990235A0006E1F9C1E6F68AD81F77C /* JXCategoryView-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 3F727D55D6275E422C78261D496AAC93 /* JXCategoryView-dummy.m */; }; 8C6C7E25C5A24C936F81823978190E96 /* ViewController+MASAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = 03CF13D7504F201F21E62DE0C23B49F7 /* ViewController+MASAdditions.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 8C910EBFEAB32D47BA166C7A2BDA4833 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D8490F2CF00DB93F5FEEDE1C788BBE73 /* Foundation.framework */; }; 8D2CBEBF5F1DA6766A833CCD0BF02B5B /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B039DC77C7D8D33CEAB56314AAFE04CB /* CoreGraphics.framework */; }; 8D8AD606ECD8E1F247965CD43956D412 /* UIImage+Transform.h in Headers */ = {isa = PBXBuildFile; fileRef = 1FD20E21FF7A2BAB6FAAB004A82D3143 /* UIImage+Transform.h */; settings = {ATTRIBUTES = (Public, ); }; }; 8F43694404EAFF6D73EE58928154C0F2 /* mz_strm_buf.h in Headers */ = {isa = PBXBuildFile; fileRef = 263454233B5B0DBB14C5D80582B2B2AD /* mz_strm_buf.h */; settings = {ATTRIBUTES = (Project, ); }; }; @@ -624,6 +623,7 @@ E1BF615DD0422B06C97542F03C879D41 /* AFNetworking.h in Headers */ = {isa = PBXBuildFile; fileRef = 06A64D211ADC6AF2DF1D9E7D4F7F2788 /* AFNetworking.h */; settings = {ATTRIBUTES = (Public, ); }; }; E1DE69F6BB6235A6EDB6C99A184BEDB4 /* UIScrollView+MJExtension.m in Sources */ = {isa = PBXBuildFile; fileRef = 85E0616DFCFEB6E1346B75E425451AFD /* UIScrollView+MJExtension.m */; }; E283D8FF283E09D9CF863A27B55886EF /* mz_crypt_apple.c in Sources */ = {isa = PBXBuildFile; fileRef = 59AF9F3690B04B3F352C8CAC3F871AB8 /* mz_crypt_apple.c */; }; + E2BFC7E0926543D2958A027FF90ADB7D /* Pods-CustomKeyboard-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 3CB13D51E717D347023EEB57263E3072 /* Pods-CustomKeyboard-dummy.m */; }; E2DF1B379D9444D40D78320E90B1DC07 /* JXCategoryIndicatorLineView.h in Headers */ = {isa = PBXBuildFile; fileRef = 67CB215173B14FC72227F43EE74EF96E /* JXCategoryIndicatorLineView.h */; settings = {ATTRIBUTES = (Public, ); }; }; E3FC6BEE41652C0500F57E0CB83B347F /* UIButton+AFNetworking.h in Headers */ = {isa = PBXBuildFile; fileRef = 9187109C444449118A500CD6A1F2D532 /* UIButton+AFNetworking.h */; settings = {ATTRIBUTES = (Public, ); }; }; E42D6EF120A5C17DA2F6FD6473CE7E7A /* JXCategoryTitleVerticalZoomCellModel.m in Sources */ = {isa = PBXBuildFile; fileRef = 4E9252395065AF703DEC1F4DB7906407 /* JXCategoryTitleVerticalZoomCellModel.m */; }; @@ -720,6 +720,13 @@ remoteGlobalIDString = B32AF3F43989CBA171BB1FB3957A4509; remoteInfo = "MJExtension-MJExtension"; }; + 0BA199CC20B25ECBF52240507FDC08C4 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 55AF53E6C77A10ED4985E04D74A8878E; + remoteInfo = Masonry; + }; 0F9E615457E5337681A14D3D3D4458A5 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; @@ -734,12 +741,12 @@ remoteGlobalIDString = 8BEAFAA726C1965864B79B4B441AA513; remoteInfo = JXCategoryView; }; - 27B965B2A5BF3AAB32C259DCFA82E713 /* PBXContainerItemProxy */ = { + 251D3BEB8BCF4207A404D692AE545BC0 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = 82B0A41D3031FF27D78E17B0A9A46FB0; - remoteInfo = MBProgressHUD; + remoteGlobalIDString = 0130B3724283586C0E9D2A112D4F2AA1; + remoteInfo = AFNetworking; }; 2FE163B88A520FE9B2F4EF7346158A53 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; @@ -755,20 +762,6 @@ remoteGlobalIDString = 5A2609DB0612F95A3450D2E02CA850A0; remoteInfo = LSTTimer; }; - 35DB38B21DD3BB8CCFFEBEA22F70E3EC /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; - proxyType = 1; - remoteGlobalIDString = 4D3BA58D0583DF37575CACAB3DDADC85; - remoteInfo = MJExtension; - }; - 4087212A2E57778E1FAE4448329729FC /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; - proxyType = 1; - remoteGlobalIDString = 0130B3724283586C0E9D2A112D4F2AA1; - remoteInfo = AFNetworking; - }; 43E0BC7F6C06EB0590226928F1AA1BA3 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; @@ -825,6 +818,13 @@ remoteGlobalIDString = 4A68CFD979D413A619DF631BB121D98F; remoteInfo = Bugly; }; + 7008466503D9ECD9A228719ABE80A8B8 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 3847153A6E5EEFB86565BA840768F429; + remoteInfo = SDWebImage; + }; 73A9CA6BDE2B4D18F9677452E6992CBE /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; @@ -839,6 +839,20 @@ remoteGlobalIDString = 638FEAAFC575BB76BC6AC055CDDA3506; remoteInfo = LookinServer; }; + 8E4A89375470440DB2A9D7DE942EA358 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = F1BCD9702276377FB5B3BDB6EAF709D7; + remoteInfo = DZNEmptyDataSet; + }; + 8FA5A660DC27E9C3CA22FAEBEAFD4EAE /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 82B0A41D3031FF27D78E17B0A9A46FB0; + remoteInfo = MBProgressHUD; + }; 9E12D5E078E322AEAC001666EEE5AA65 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; @@ -846,6 +860,13 @@ remoteGlobalIDString = 94CFBA7D633ECA58DF85C327B035E6A3; remoteInfo = "SDWebImage-SDWebImage"; }; + A54DB880113009E6DC0A1C72BF95FEBC /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = F60E38364AFF5E1349FF07415B944396; + remoteInfo = SSZipArchive; + }; A671E8D796937C62D30391BE1F16A0AD /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; @@ -888,13 +909,6 @@ remoteGlobalIDString = C4E1020AF425614337737213AA26DBD5; remoteInfo = JXPagingView; }; - C64183E6A8A311BA11445309E5971A39 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; - proxyType = 1; - remoteGlobalIDString = F60E38364AFF5E1349FF07415B944396; - remoteInfo = SSZipArchive; - }; D264D8BA205995C828877A13415E636F /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; @@ -902,19 +916,12 @@ remoteGlobalIDString = 8B7D23DD98E41BAE91418E9E85F191D6; remoteInfo = LSTPopView; }; - E84BA8741985D658E053DCDE9D54DC93 /* PBXContainerItemProxy */ = { + FF3D3DA5C34F21FD0969B09D751C9FE4 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = 55AF53E6C77A10ED4985E04D74A8878E; - remoteInfo = Masonry; - }; - E9AF0D0B9313853D3F5E9187EFFEFD3E /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; - proxyType = 1; - remoteGlobalIDString = F1BCD9702276377FB5B3BDB6EAF709D7; - remoteInfo = DZNEmptyDataSet; + remoteGlobalIDString = 4D3BA58D0583DF37575CACAB3DDADC85; + remoteInfo = MJExtension; }; /* End PBXContainerItemProxy section */ @@ -1734,14 +1741,6 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - 2B2A05DA621D2C41C33F96F10A8D14CA /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - 8C910EBFEAB32D47BA166C7A2BDA4833 /* Foundation.framework in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; 37145BAEB1B97BA7ADD7D6C3E86E99BD /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; @@ -1759,6 +1758,14 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + 3EC76FC6C791E7FE69C7759A8887094C /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 4EBF759D0963EB4E343C5B0A9CF3EA7F /* Foundation.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; 481273BD538BE69936DB3D2C8EB1E61B /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; @@ -3281,6 +3288,14 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + 25CC84E8B8C20837CF92C21B1D12D6A5 /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + 1D7A626B22937B65716BDF135E5566C2 /* Pods-CustomKeyboard-umbrella.h in Headers */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; 33783D69751B087D045FCF1FCA02E724 /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; @@ -3554,14 +3569,6 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - 9410C6DE72A0330546B884B956D00AE3 /* Headers */ = { - isa = PBXHeadersBuildPhase; - buildActionMask = 2147483647; - files = ( - 7F2995EC78B2E2AA4D1A778EF6965729 /* Pods-CustomKeyboard-umbrella.h in Headers */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; 9AD51F59D2F73C167710F5A0609DC491 /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; @@ -4019,22 +4026,23 @@ }; D9B2DB11933DB55A80A118934E6680AB /* Pods-CustomKeyboard */ = { isa = PBXNativeTarget; - buildConfigurationList = 9D98282E352578D31FFA72EC2EA10205 /* Build configuration list for PBXNativeTarget "Pods-CustomKeyboard" */; + buildConfigurationList = C91382D1639D3BC69FAE164863007F33 /* Build configuration list for PBXNativeTarget "Pods-CustomKeyboard" */; buildPhases = ( - 9410C6DE72A0330546B884B956D00AE3 /* Headers */, - 8699DF800B987868E64537798BF35D21 /* Sources */, - 2B2A05DA621D2C41C33F96F10A8D14CA /* Frameworks */, - 58D6818319C1893F5DD838DA2E524465 /* Resources */, + 25CC84E8B8C20837CF92C21B1D12D6A5 /* Headers */, + 544B1A3A7751D86ED8D64727A731F538 /* Sources */, + 3EC76FC6C791E7FE69C7759A8887094C /* Frameworks */, + 2B96AF27C134A995F5218E67CF3B6DFC /* Resources */, ); buildRules = ( ); dependencies = ( - 29EEEFA492E836FF504DC738E40616C1 /* PBXTargetDependency */, - 563A5BA80B0E2469A5B175F42B4CDCB3 /* PBXTargetDependency */, - DBDC4DC1910238D9E4AFB348253087E0 /* PBXTargetDependency */, - D81C399F78E00E0C0F046839ECAECED8 /* PBXTargetDependency */, - A0F93D6E706C7F4A596E07F119D77189 /* PBXTargetDependency */, - 1D4616B2C078FD73573BFBC623E9C978 /* PBXTargetDependency */, + 7793C47E78D668D8DF962F887006EBBA /* PBXTargetDependency */, + D9CDEC212B78FBACD23CCBFBB4AEF183 /* PBXTargetDependency */, + 96BBA4F53A10C9797B36082CF698D670 /* PBXTargetDependency */, + 3461C912C0C986DEA384D3845A39EBDE /* PBXTargetDependency */, + 1CAF7447041685C03E13BF8B2B8AC1B2 /* PBXTargetDependency */, + 2E0AB221F45B2386A80E75669D7FD229 /* PBXTargetDependency */, + BB80D6BB502E21A84C54851E8BB7233D /* PBXTargetDependency */, ); name = "Pods-CustomKeyboard"; productName = Pods_CustomKeyboard; @@ -4177,6 +4185,13 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + 2B96AF27C134A995F5218E67CF3B6DFC /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; 311EF2CB460B544059B769919A899ECA /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; @@ -4209,13 +4224,6 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - 58D6818319C1893F5DD838DA2E524465 /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; 5C89912961D7B3B99680563233DBEA04 /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; @@ -4505,6 +4513,14 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + 544B1A3A7751D86ED8D64727A731F538 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + E2BFC7E0926543D2958A027FF90ADB7D /* Pods-CustomKeyboard-dummy.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; 6027CC4F7393762F72827585E71DFAB2 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; @@ -4520,14 +4536,6 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - 8699DF800B987868E64537798BF35D21 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 22A4B2F6485F38FC998C238B899ED0DE /* Pods-CustomKeyboard-dummy.m in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; 8AF957863B2E92075C7B36542829939B /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; @@ -4806,11 +4814,11 @@ target = 638FEAAFC575BB76BC6AC055CDDA3506 /* LookinServer */; targetProxy = 8B4AF11BA988C8F1F93788F8C486B793 /* PBXContainerItemProxy */; }; - 1D4616B2C078FD73573BFBC623E9C978 /* PBXTargetDependency */ = { + 1CAF7447041685C03E13BF8B2B8AC1B2 /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = SSZipArchive; - target = F60E38364AFF5E1349FF07415B944396 /* SSZipArchive */; - targetProxy = C64183E6A8A311BA11445309E5971A39 /* PBXContainerItemProxy */; + name = Masonry; + target = 55AF53E6C77A10ED4985E04D74A8878E /* Masonry */; + targetProxy = 0BA199CC20B25ECBF52240507FDC08C4 /* PBXContainerItemProxy */; }; 248F793A182F289B47E8B7AC0E143C15 /* PBXTargetDependency */ = { isa = PBXTargetDependency; @@ -4818,24 +4826,30 @@ target = 8B7D23DD98E41BAE91418E9E85F191D6 /* LSTPopView */; targetProxy = D264D8BA205995C828877A13415E636F /* PBXContainerItemProxy */; }; - 29EEEFA492E836FF504DC738E40616C1 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = AFNetworking; - target = 0130B3724283586C0E9D2A112D4F2AA1 /* AFNetworking */; - targetProxy = 4087212A2E57778E1FAE4448329729FC /* PBXContainerItemProxy */; - }; 2A8FD4D63439C4E1939EBDE48A029628 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = AFNetworking; target = 0130B3724283586C0E9D2A112D4F2AA1 /* AFNetworking */; targetProxy = 5E2F9C1908DE8387A6F9BF93EF451351 /* PBXContainerItemProxy */; }; + 2E0AB221F45B2386A80E75669D7FD229 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = SDWebImage; + target = 3847153A6E5EEFB86565BA840768F429 /* SDWebImage */; + targetProxy = 7008466503D9ECD9A228719ABE80A8B8 /* PBXContainerItemProxy */; + }; 318E148AD8C551E2DEAB4E4705F3E9A3 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = LSTTimer; target = 5A2609DB0612F95A3450D2E02CA850A0 /* LSTTimer */; targetProxy = B4B05B8E8A2B8CDA0C66D6BAD76B2853 /* PBXContainerItemProxy */; }; + 3461C912C0C986DEA384D3845A39EBDE /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = MJExtension; + target = 4D3BA58D0583DF37575CACAB3DDADC85 /* MJExtension */; + targetProxy = FF3D3DA5C34F21FD0969B09D751C9FE4 /* PBXContainerItemProxy */; + }; 3C59938CEAB0C654F6E6F4BDA7461510 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = SDWebImage; @@ -4848,12 +4862,6 @@ target = 55AF53E6C77A10ED4985E04D74A8878E /* Masonry */; targetProxy = C4958E3B26588834E71F94361C112780 /* PBXContainerItemProxy */; }; - 563A5BA80B0E2469A5B175F42B4CDCB3 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = DZNEmptyDataSet; - target = F1BCD9702276377FB5B3BDB6EAF709D7 /* DZNEmptyDataSet */; - targetProxy = E9AF0D0B9313853D3F5E9187EFFEFD3E /* PBXContainerItemProxy */; - }; 639EDB1EF0277187CB2CFA270FDAF6FB /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = Bugly; @@ -4878,6 +4886,12 @@ target = F60E38364AFF5E1349FF07415B944396 /* SSZipArchive */; targetProxy = 0F9E615457E5337681A14D3D3D4458A5 /* PBXContainerItemProxy */; }; + 7793C47E78D668D8DF962F887006EBBA /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = AFNetworking; + target = 0130B3724283586C0E9D2A112D4F2AA1 /* AFNetworking */; + targetProxy = 251D3BEB8BCF4207A404D692AE545BC0 /* PBXContainerItemProxy */; + }; 8FDFA4D41ED37BC3CC62156D15AAAD81 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "MJRefresh-MJRefresh.Privacy"; @@ -4896,24 +4910,30 @@ target = E79E29F55A2453370D27112480FCF6A2 /* JXCategoryView-JXCategoryView */; targetProxy = AB4EC7D2E9FDF608986EDAF1E480CFD7 /* PBXContainerItemProxy */; }; + 96BBA4F53A10C9797B36082CF698D670 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = MBProgressHUD; + target = 82B0A41D3031FF27D78E17B0A9A46FB0 /* MBProgressHUD */; + targetProxy = 8FA5A660DC27E9C3CA22FAEBEAFD4EAE /* PBXContainerItemProxy */; + }; 9E31237C8A36AF7A7A0B110E3EB735D6 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = MJExtension; target = 4D3BA58D0583DF37575CACAB3DDADC85 /* MJExtension */; targetProxy = A671E8D796937C62D30391BE1F16A0AD /* PBXContainerItemProxy */; }; - A0F93D6E706C7F4A596E07F119D77189 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = Masonry; - target = 55AF53E6C77A10ED4985E04D74A8878E /* Masonry */; - targetProxy = E84BA8741985D658E053DCDE9D54DC93 /* PBXContainerItemProxy */; - }; B44D94075E090726E517F9003F07D314 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = MJRefresh; target = 6868056D761E163D10FDAF8CF1C4D9B8 /* MJRefresh */; targetProxy = 43E0BC7F6C06EB0590226928F1AA1BA3 /* PBXContainerItemProxy */; }; + BB80D6BB502E21A84C54851E8BB7233D /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = SSZipArchive; + target = F60E38364AFF5E1349FF07415B944396 /* SSZipArchive */; + targetProxy = A54DB880113009E6DC0A1C72BF95FEBC /* PBXContainerItemProxy */; + }; BDAE500408DCC4FE45DED4761241917F /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = LYEmptyView; @@ -4932,17 +4952,11 @@ target = 16704C6B67439DA959DB043702C75A7A /* JXPagingView-JXPagerView */; targetProxy = 682B4482FB905997BF77F5EE588BD3E4 /* PBXContainerItemProxy */; }; - D81C399F78E00E0C0F046839ECAECED8 /* PBXTargetDependency */ = { + D9CDEC212B78FBACD23CCBFBB4AEF183 /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = MJExtension; - target = 4D3BA58D0583DF37575CACAB3DDADC85 /* MJExtension */; - targetProxy = 35DB38B21DD3BB8CCFFEBEA22F70E3EC /* PBXContainerItemProxy */; - }; - DBDC4DC1910238D9E4AFB348253087E0 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = MBProgressHUD; - target = 82B0A41D3031FF27D78E17B0A9A46FB0 /* MBProgressHUD */; - targetProxy = 27B965B2A5BF3AAB32C259DCFA82E713 /* PBXContainerItemProxy */; + name = DZNEmptyDataSet; + target = F1BCD9702276377FB5B3BDB6EAF709D7 /* DZNEmptyDataSet */; + targetProxy = 8E4A89375470440DB2A9D7DE942EA358 /* PBXContainerItemProxy */; }; E4C8B75060752222288EE781ED53D28B /* PBXTargetDependency */ = { isa = PBXTargetDependency; @@ -5217,6 +5231,46 @@ }; name = Debug; }; + 24665D97781934C3B37DE62A9BDDAC61 /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 1D774D8146EBC82B4A77204A273761B8 /* Pods-CustomKeyboard.release.xcconfig */; + buildSettings = { + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO; + CLANG_ENABLE_OBJC_WEAK = NO; + "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; + CURRENT_PROJECT_VERSION = 1; + DEFINES_MODULE = YES; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + ENABLE_MODULE_VERIFIER = NO; + ENABLE_USER_SCRIPT_SANDBOXING = NO; + INFOPLIST_FILE = "Target Support Files/Pods-CustomKeyboard/Pods-CustomKeyboard-Info.plist"; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 15.0; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + MACH_O_TYPE = staticlib; + MODULEMAP_FILE = "Target Support Files/Pods-CustomKeyboard/Pods-CustomKeyboard.modulemap"; + OTHER_LDFLAGS = ""; + OTHER_LIBTOOLFLAGS = ""; + PODS_ROOT = "$(SRCROOT)"; + PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; + PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Release; + }; 26CEDC3022E1F92C78B66EF88DA3E538 /* Debug */ = { isa = XCBuildConfiguration; baseConfigurationReference = 35BFA337F4E1FDE67C773A82CCDFD6DA /* Pods-keyBoard.debug.xcconfig */; @@ -5256,6 +5310,45 @@ }; name = Debug; }; + 275B39FBA2E7104CEE81B3D399E7C7D3 /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 0D6215D1BCCE125B8DF73E38013CBBDC /* Pods-CustomKeyboard.debug.xcconfig */; + buildSettings = { + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO; + CLANG_ENABLE_OBJC_WEAK = NO; + "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; + CURRENT_PROJECT_VERSION = 1; + DEFINES_MODULE = YES; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + ENABLE_MODULE_VERIFIER = NO; + ENABLE_USER_SCRIPT_SANDBOXING = NO; + INFOPLIST_FILE = "Target Support Files/Pods-CustomKeyboard/Pods-CustomKeyboard-Info.plist"; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 15.0; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + MACH_O_TYPE = staticlib; + MODULEMAP_FILE = "Target Support Files/Pods-CustomKeyboard/Pods-CustomKeyboard.modulemap"; + OTHER_LDFLAGS = ""; + OTHER_LIBTOOLFLAGS = ""; + PODS_ROOT = "$(SRCROOT)"; + PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; + PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + TARGETED_DEVICE_FAMILY = "1,2"; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Debug; + }; 319C3324D522C12DEC60436B1B3B2CE7 /* Debug */ = { isa = XCBuildConfiguration; baseConfigurationReference = 01771F71A5835C346537272402AFB9A6 /* LSTTimer.debug.xcconfig */; @@ -5350,45 +5443,6 @@ }; name = Debug; }; - 4B175742078B8D3442EF645D38AE40CC /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 0D6215D1BCCE125B8DF73E38013CBBDC /* Pods-CustomKeyboard.debug.xcconfig */; - buildSettings = { - ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO; - CLANG_ENABLE_OBJC_WEAK = NO; - "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - CURRENT_PROJECT_VERSION = 1; - DEFINES_MODULE = YES; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - ENABLE_MODULE_VERIFIER = NO; - ENABLE_USER_SCRIPT_SANDBOXING = NO; - INFOPLIST_FILE = "Target Support Files/Pods-CustomKeyboard/Pods-CustomKeyboard-Info.plist"; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 15.0; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - "@loader_path/Frameworks", - ); - MACH_O_TYPE = staticlib; - MODULEMAP_FILE = "Target Support Files/Pods-CustomKeyboard/Pods-CustomKeyboard.modulemap"; - OTHER_LDFLAGS = ""; - OTHER_LIBTOOLFLAGS = ""; - PODS_ROOT = "$(SRCROOT)"; - PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; - PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = "1,2"; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; - }; - name = Debug; - }; 4C8CF8906202B413F352B558474547DF /* Debug */ = { isa = XCBuildConfiguration; baseConfigurationReference = BEB9455CE0A06FE1E60E43D8A39479DA /* JXCategoryView.debug.xcconfig */; @@ -6147,46 +6201,6 @@ }; name = Debug; }; - AF99EB3786A8B2C9346426EAB1BB2239 /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 1D774D8146EBC82B4A77204A273761B8 /* Pods-CustomKeyboard.release.xcconfig */; - buildSettings = { - ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO; - CLANG_ENABLE_OBJC_WEAK = NO; - "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - CURRENT_PROJECT_VERSION = 1; - DEFINES_MODULE = YES; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - ENABLE_MODULE_VERIFIER = NO; - ENABLE_USER_SCRIPT_SANDBOXING = NO; - INFOPLIST_FILE = "Target Support Files/Pods-CustomKeyboard/Pods-CustomKeyboard-Info.plist"; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 15.0; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - "@loader_path/Frameworks", - ); - MACH_O_TYPE = staticlib; - MODULEMAP_FILE = "Target Support Files/Pods-CustomKeyboard/Pods-CustomKeyboard.modulemap"; - OTHER_LDFLAGS = ""; - OTHER_LIBTOOLFLAGS = ""; - PODS_ROOT = "$(SRCROOT)"; - PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; - PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = "1,2"; - VALIDATE_PRODUCT = YES; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; - }; - name = Release; - }; B26FBB655ABB114E4C0D589843814D6C /* Release */ = { isa = XCBuildConfiguration; baseConfigurationReference = 73625BF0D8F9A3389059227F5BE246B9 /* Bugly.release.xcconfig */; @@ -6850,15 +6864,6 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - 9D98282E352578D31FFA72EC2EA10205 /* Build configuration list for PBXNativeTarget "Pods-CustomKeyboard" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 4B175742078B8D3442EF645D38AE40CC /* Debug */, - AF99EB3786A8B2C9346426EAB1BB2239 /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; A0F23D46D133F936F0565C0D3363B200 /* Build configuration list for PBXNativeTarget "LSTTimer" */ = { isa = XCConfigurationList; buildConfigurations = ( @@ -6877,6 +6882,15 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; + C91382D1639D3BC69FAE164863007F33 /* Build configuration list for PBXNativeTarget "Pods-CustomKeyboard" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 275B39FBA2E7104CEE81B3D399E7C7D3 /* Debug */, + 24665D97781934C3B37DE62A9BDDAC61 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; D47A0ADD8E3841C9330561C3E1664BB3 /* Build configuration list for PBXNativeTarget "HWPanModal" */ = { isa = XCConfigurationList; buildConfigurations = ( diff --git a/Pods/Target Support Files/Pods-CustomKeyboard/Pods-CustomKeyboard-acknowledgements.markdown b/Pods/Target Support Files/Pods-CustomKeyboard/Pods-CustomKeyboard-acknowledgements.markdown index 6360cc8..5923e16 100644 --- a/Pods/Target Support Files/Pods-CustomKeyboard/Pods-CustomKeyboard-acknowledgements.markdown +++ b/Pods/Target Support Files/Pods-CustomKeyboard/Pods-CustomKeyboard-acknowledgements.markdown @@ -104,6 +104,30 @@ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +## SDWebImage + +Copyright (c) 2009-2020 Olivier Poitrey rs@dailymotion.com + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is furnished +to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. + + + ## SSZipArchive Copyright (c) 2013-2021, ZipArchive, https://github.com/ZipArchive diff --git a/Pods/Target Support Files/Pods-CustomKeyboard/Pods-CustomKeyboard-acknowledgements.plist b/Pods/Target Support Files/Pods-CustomKeyboard/Pods-CustomKeyboard-acknowledgements.plist index 9ff00dc..4a9051f 100644 --- a/Pods/Target Support Files/Pods-CustomKeyboard/Pods-CustomKeyboard-acknowledgements.plist +++ b/Pods/Target Support Files/Pods-CustomKeyboard/Pods-CustomKeyboard-acknowledgements.plist @@ -145,6 +145,36 @@ THE SOFTWARE. Type PSGroupSpecifier + + FooterText + Copyright (c) 2009-2020 Olivier Poitrey rs@dailymotion.com + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is furnished +to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. + + + License + MIT + Title + SDWebImage + Type + PSGroupSpecifier + FooterText Copyright (c) 2013-2021, ZipArchive, https://github.com/ZipArchive diff --git a/Pods/Target Support Files/Pods-CustomKeyboard/Pods-CustomKeyboard.debug.xcconfig b/Pods/Target Support Files/Pods-CustomKeyboard/Pods-CustomKeyboard.debug.xcconfig index f2a3d67..fe02254 100644 --- a/Pods/Target Support Files/Pods-CustomKeyboard/Pods-CustomKeyboard.debug.xcconfig +++ b/Pods/Target Support Files/Pods-CustomKeyboard/Pods-CustomKeyboard.debug.xcconfig @@ -1,10 +1,10 @@ CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO -FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/AFNetworking" "${PODS_CONFIGURATION_BUILD_DIR}/DZNEmptyDataSet" "${PODS_CONFIGURATION_BUILD_DIR}/MBProgressHUD" "${PODS_CONFIGURATION_BUILD_DIR}/MJExtension" "${PODS_CONFIGURATION_BUILD_DIR}/Masonry" "${PODS_CONFIGURATION_BUILD_DIR}/SSZipArchive" +FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/AFNetworking" "${PODS_CONFIGURATION_BUILD_DIR}/DZNEmptyDataSet" "${PODS_CONFIGURATION_BUILD_DIR}/MBProgressHUD" "${PODS_CONFIGURATION_BUILD_DIR}/MJExtension" "${PODS_CONFIGURATION_BUILD_DIR}/Masonry" "${PODS_CONFIGURATION_BUILD_DIR}/SDWebImage" "${PODS_CONFIGURATION_BUILD_DIR}/SSZipArchive" GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 -HEADER_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/AFNetworking/AFNetworking.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/DZNEmptyDataSet/DZNEmptyDataSet.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/MBProgressHUD/MBProgressHUD.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/MJExtension/MJExtension.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/Masonry/Masonry.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/SSZipArchive/SSZipArchive.framework/Headers" +HEADER_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/AFNetworking/AFNetworking.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/DZNEmptyDataSet/DZNEmptyDataSet.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/MBProgressHUD/MBProgressHUD.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/MJExtension/MJExtension.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/Masonry/Masonry.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/SDWebImage/SDWebImage.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/SSZipArchive/SSZipArchive.framework/Headers" LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks' '@executable_path/../../Frameworks' -OTHER_LDFLAGS = $(inherited) -l"iconv" -l"z" -framework "AFNetworking" -framework "CoreGraphics" -framework "DZNEmptyDataSet" -framework "Foundation" -framework "MBProgressHUD" -framework "MJExtension" -framework "Masonry" -framework "QuartzCore" -framework "SSZipArchive" -framework "Security" -framework "UIKit" -OTHER_MODULE_VERIFIER_FLAGS = $(inherited) "-F${PODS_CONFIGURATION_BUILD_DIR}/AFNetworking" "-F${PODS_CONFIGURATION_BUILD_DIR}/DZNEmptyDataSet" "-F${PODS_CONFIGURATION_BUILD_DIR}/MBProgressHUD" "-F${PODS_CONFIGURATION_BUILD_DIR}/MJExtension" "-F${PODS_CONFIGURATION_BUILD_DIR}/Masonry" "-F${PODS_CONFIGURATION_BUILD_DIR}/SSZipArchive" +OTHER_LDFLAGS = $(inherited) -l"iconv" -l"z" -framework "AFNetworking" -framework "CoreGraphics" -framework "DZNEmptyDataSet" -framework "Foundation" -framework "ImageIO" -framework "MBProgressHUD" -framework "MJExtension" -framework "Masonry" -framework "QuartzCore" -framework "SDWebImage" -framework "SSZipArchive" -framework "Security" -framework "UIKit" +OTHER_MODULE_VERIFIER_FLAGS = $(inherited) "-F${PODS_CONFIGURATION_BUILD_DIR}/AFNetworking" "-F${PODS_CONFIGURATION_BUILD_DIR}/DZNEmptyDataSet" "-F${PODS_CONFIGURATION_BUILD_DIR}/MBProgressHUD" "-F${PODS_CONFIGURATION_BUILD_DIR}/MJExtension" "-F${PODS_CONFIGURATION_BUILD_DIR}/Masonry" "-F${PODS_CONFIGURATION_BUILD_DIR}/SDWebImage" "-F${PODS_CONFIGURATION_BUILD_DIR}/SSZipArchive" PODS_BUILD_DIR = ${BUILD_DIR} PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) PODS_PODFILE_DIR_PATH = ${SRCROOT}/. diff --git a/Pods/Target Support Files/Pods-CustomKeyboard/Pods-CustomKeyboard.release.xcconfig b/Pods/Target Support Files/Pods-CustomKeyboard/Pods-CustomKeyboard.release.xcconfig index f2a3d67..fe02254 100644 --- a/Pods/Target Support Files/Pods-CustomKeyboard/Pods-CustomKeyboard.release.xcconfig +++ b/Pods/Target Support Files/Pods-CustomKeyboard/Pods-CustomKeyboard.release.xcconfig @@ -1,10 +1,10 @@ CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO -FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/AFNetworking" "${PODS_CONFIGURATION_BUILD_DIR}/DZNEmptyDataSet" "${PODS_CONFIGURATION_BUILD_DIR}/MBProgressHUD" "${PODS_CONFIGURATION_BUILD_DIR}/MJExtension" "${PODS_CONFIGURATION_BUILD_DIR}/Masonry" "${PODS_CONFIGURATION_BUILD_DIR}/SSZipArchive" +FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/AFNetworking" "${PODS_CONFIGURATION_BUILD_DIR}/DZNEmptyDataSet" "${PODS_CONFIGURATION_BUILD_DIR}/MBProgressHUD" "${PODS_CONFIGURATION_BUILD_DIR}/MJExtension" "${PODS_CONFIGURATION_BUILD_DIR}/Masonry" "${PODS_CONFIGURATION_BUILD_DIR}/SDWebImage" "${PODS_CONFIGURATION_BUILD_DIR}/SSZipArchive" GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 -HEADER_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/AFNetworking/AFNetworking.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/DZNEmptyDataSet/DZNEmptyDataSet.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/MBProgressHUD/MBProgressHUD.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/MJExtension/MJExtension.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/Masonry/Masonry.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/SSZipArchive/SSZipArchive.framework/Headers" +HEADER_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/AFNetworking/AFNetworking.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/DZNEmptyDataSet/DZNEmptyDataSet.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/MBProgressHUD/MBProgressHUD.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/MJExtension/MJExtension.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/Masonry/Masonry.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/SDWebImage/SDWebImage.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/SSZipArchive/SSZipArchive.framework/Headers" LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks' '@executable_path/../../Frameworks' -OTHER_LDFLAGS = $(inherited) -l"iconv" -l"z" -framework "AFNetworking" -framework "CoreGraphics" -framework "DZNEmptyDataSet" -framework "Foundation" -framework "MBProgressHUD" -framework "MJExtension" -framework "Masonry" -framework "QuartzCore" -framework "SSZipArchive" -framework "Security" -framework "UIKit" -OTHER_MODULE_VERIFIER_FLAGS = $(inherited) "-F${PODS_CONFIGURATION_BUILD_DIR}/AFNetworking" "-F${PODS_CONFIGURATION_BUILD_DIR}/DZNEmptyDataSet" "-F${PODS_CONFIGURATION_BUILD_DIR}/MBProgressHUD" "-F${PODS_CONFIGURATION_BUILD_DIR}/MJExtension" "-F${PODS_CONFIGURATION_BUILD_DIR}/Masonry" "-F${PODS_CONFIGURATION_BUILD_DIR}/SSZipArchive" +OTHER_LDFLAGS = $(inherited) -l"iconv" -l"z" -framework "AFNetworking" -framework "CoreGraphics" -framework "DZNEmptyDataSet" -framework "Foundation" -framework "ImageIO" -framework "MBProgressHUD" -framework "MJExtension" -framework "Masonry" -framework "QuartzCore" -framework "SDWebImage" -framework "SSZipArchive" -framework "Security" -framework "UIKit" +OTHER_MODULE_VERIFIER_FLAGS = $(inherited) "-F${PODS_CONFIGURATION_BUILD_DIR}/AFNetworking" "-F${PODS_CONFIGURATION_BUILD_DIR}/DZNEmptyDataSet" "-F${PODS_CONFIGURATION_BUILD_DIR}/MBProgressHUD" "-F${PODS_CONFIGURATION_BUILD_DIR}/MJExtension" "-F${PODS_CONFIGURATION_BUILD_DIR}/Masonry" "-F${PODS_CONFIGURATION_BUILD_DIR}/SDWebImage" "-F${PODS_CONFIGURATION_BUILD_DIR}/SSZipArchive" PODS_BUILD_DIR = ${BUILD_DIR} PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) PODS_PODFILE_DIR_PATH = ${SRCROOT}/. diff --git a/Pods/Target Support Files/SDWebImage/SDWebImage.debug.xcconfig b/Pods/Target Support Files/SDWebImage/SDWebImage.debug.xcconfig index aefe779..16d63c1 100644 --- a/Pods/Target Support Files/SDWebImage/SDWebImage.debug.xcconfig +++ b/Pods/Target Support Files/SDWebImage/SDWebImage.debug.xcconfig @@ -1,3 +1,4 @@ +APPLICATION_EXTENSION_API_ONLY = YES CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/SDWebImage DERIVE_MACCATALYST_PRODUCT_BUNDLE_IDENTIFIER = NO diff --git a/Pods/Target Support Files/SDWebImage/SDWebImage.release.xcconfig b/Pods/Target Support Files/SDWebImage/SDWebImage.release.xcconfig index aefe779..16d63c1 100644 --- a/Pods/Target Support Files/SDWebImage/SDWebImage.release.xcconfig +++ b/Pods/Target Support Files/SDWebImage/SDWebImage.release.xcconfig @@ -1,3 +1,4 @@ +APPLICATION_EXTENSION_API_ONLY = YES CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/SDWebImage DERIVE_MACCATALYST_PRODUCT_BUNDLE_IDENTIFIER = NO diff --git a/keyBoard.xcodeproj/project.pbxproj b/keyBoard.xcodeproj/project.pbxproj index 20e3648..675727c 100644 --- a/keyBoard.xcodeproj/project.pbxproj +++ b/keyBoard.xcodeproj/project.pbxproj @@ -158,6 +158,7 @@ 048FFD472F2B45D4005D62AE /* AIPersonInfoVC.m in Sources */ = {isa = PBXBuildFile; fileRef = 048FFD462F2B45D4005D62AE /* AIPersonInfoVC.m */; }; 048FFD4A2F2B4AE4005D62AE /* KBAICompanionDetailModel.m in Sources */ = {isa = PBXBuildFile; fileRef = 048FFD492F2B4AE4005D62AE /* KBAICompanionDetailModel.m */; }; 048FFD502F2B52E7005D62AE /* AIReportVC.m in Sources */ = {isa = PBXBuildFile; fileRef = 048FFD4F2F2B52E7005D62AE /* AIReportVC.m */; }; + 048FFD512F2B68F7005D62AE /* KBPersonaModel.m in Sources */ = {isa = PBXBuildFile; fileRef = 048FFD0D2F27432D005D62AE /* KBPersonaModel.m */; }; 0498BD622EDFFC12006CC1D5 /* KBMyVM.m in Sources */ = {isa = PBXBuildFile; fileRef = 0498BD612EDFFC12006CC1D5 /* KBMyVM.m */; }; 0498BD652EE0116D006CC1D5 /* KBEmailLoginVC.m in Sources */ = {isa = PBXBuildFile; fileRef = 0498BD642EE0116D006CC1D5 /* KBEmailLoginVC.m */; }; 0498BD682EE01180006CC1D5 /* KBEmailRegistVC.m in Sources */ = {isa = PBXBuildFile; fileRef = 0498BD672EE01180006CC1D5 /* KBEmailRegistVC.m */; }; @@ -2263,14 +2264,10 @@ inputFileListPaths = ( "${PODS_ROOT}/Target Support Files/Pods-keyBoard/Pods-keyBoard-frameworks-${CONFIGURATION}-input-files.xcfilelist", ); - inputPaths = ( - ); name = "[CP] Embed Pods Frameworks"; outputFileListPaths = ( "${PODS_ROOT}/Target Support Files/Pods-keyBoard/Pods-keyBoard-frameworks-${CONFIGURATION}-output-files.xcfilelist", ); - outputPaths = ( - ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-keyBoard/Pods-keyBoard-frameworks.sh\"\n"; @@ -2314,6 +2311,7 @@ A1B2C9272FC9000100000001 /* KBChatMessageCell.m in Sources */, A1B2C9282FC9000100000001 /* KBChatPanelView.m in Sources */, A1B2C3EB2F20000000000001 /* KBSuggestionBarView.m in Sources */, + 048FFD512F2B68F7005D62AE /* KBPersonaModel.m in Sources */, 04FC95792EB09BC8007BD342 /* KBKeyBoardMainView.m in Sources */, 04FEDAB32EEDB05000123456 /* KBEmojiPanelView.m in Sources */, 04050ECB2F10FB8F008051EB /* UIImage+KBColor.m in Sources */, diff --git a/keyBoard/Class/AiTalk/VC/KBAIHomeVC.m b/keyBoard/Class/AiTalk/VC/KBAIHomeVC.m index 8d80e2a..3a7ab09 100644 --- a/keyBoard/Class/AiTalk/VC/KBAIHomeVC.m +++ b/keyBoard/Class/AiTalk/VC/KBAIHomeVC.m @@ -19,6 +19,7 @@ #import "LSTPopView.h" #import "KBAIMessageVC.h" #import +#import @interface KBAIHomeVC () @@ -387,10 +388,96 @@ if (currentPage < self.personas.count) { NSLog(@"当前在第 %ld 个人设:%@", (long)currentPage, self.personas[currentPage].name); + // 保存当前选中的 persona 到 AppGroup,供键盘扩展使用 + [self saveSelectedPersonaToAppGroup:self.personas[currentPage]]; } [self updateChatViewBottomInset]; } +#pragma mark - AppGroup Persona 共享 + +/// 保存选中的 persona 到 AppGroup,供键盘扩展读取 +- (void)saveSelectedPersonaToAppGroup:(KBPersonaModel *)persona { + if (!persona) { + return; + } + + NSUserDefaults *ud = [[NSUserDefaults alloc] initWithSuiteName:AppGroup]; + if (!ud) { + NSLog(@"[KBAIHomeVC] 无法访问 AppGroup"); + return; + } + + // 保存 persona 的关键信息 + NSDictionary *personaDict = @{ + @"personaId": @(persona.personaId), + @"name": persona.name ?: @"", + @"avatarUrl": persona.avatarUrl ?: @"", + @"coverImageUrl": persona.coverImageUrl ?: @"", + @"shortDesc": persona.shortDesc ?: @"" + }; + + [ud setObject:personaDict forKey:@"AppGroup_SelectedPersona"]; + [ud synchronize]; + + NSLog(@"[KBAIHomeVC] 已保存选中的 persona 到 AppGroup: %@, coverImageUrl: %@", persona.name, persona.coverImageUrl); + + // 异步下载并缩小图片,保存到 AppGroup 共享目录 + [self downloadAndSavePersonaCoverImage:persona.coverImageUrl]; +} + +/// 下载并缩小 persona 封面图,保存到 AppGroup 共享目录 +- (void)downloadAndSavePersonaCoverImage:(NSString *)imageUrl { + if (imageUrl.length == 0) { + return; + } + + // 获取 AppGroup 共享目录 + NSURL *containerURL = [[NSFileManager defaultManager] containerURLForSecurityApplicationGroupIdentifier:AppGroup]; + if (!containerURL) { + NSLog(@"[KBAIHomeVC] 无法获取 AppGroup 容器目录"); + return; + } + + NSString *imagePath = [[containerURL path] stringByAppendingPathComponent:@"persona_cover.jpg"]; + + // 使用 SDWebImage 下载图片 + [[SDWebImageManager sharedManager] loadImageWithURL:[NSURL URLWithString:imageUrl] + options:SDWebImageHighPriority + progress:nil + completed:^(UIImage *image, NSData *data, NSError *error, SDImageCacheType cacheType, BOOL finished, NSURL *imageURL) { + if (error || !image) { + NSLog(@"[KBAIHomeVC] 下载 persona 封面图失败: %@", error.localizedDescription); + return; + } + + // 缩小图片到适合键盘扩展的尺寸(宽度 390,高度按比例) + CGFloat targetWidth = 390.0; + CGFloat scale = targetWidth / image.size.width; + CGSize targetSize = CGSizeMake(targetWidth, image.size.height * scale); + + UIGraphicsBeginImageContextWithOptions(targetSize, YES, 1.0); + [image drawInRect:CGRectMake(0, 0, targetSize.width, targetSize.height)]; + UIImage *scaledImage = UIGraphicsGetImageFromCurrentImageContext(); + UIGraphicsEndImageContext(); + + // 压缩为 JPEG,质量 0.6 + NSData *jpegData = UIImageJPEGRepresentation(scaledImage, 0.6); + if (!jpegData) { + NSLog(@"[KBAIHomeVC] 压缩图片失败"); + return; + } + + // 保存到 AppGroup 共享目录 + BOOL success = [jpegData writeToFile:imagePath atomically:YES]; + if (success) { + NSLog(@"[KBAIHomeVC] persona 封面图已保存到: %@, 大小: %lu KB", imagePath, (unsigned long)jpegData.length / 1024); + } else { + NSLog(@"[KBAIHomeVC] 保存 persona 封面图失败"); + } + }]; +} + - (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView { if (self.isWaitingForAIResponse) { NSLog(@"[KBAIHomeVC] 正在等待 AI 回复,禁止滚动");