Files
real-e-party-iOS/YuMi/Config/ClientConfig.m
edwinQQQ a35a711be6 chore: Initial clean commit
- Removed YuMi/Library/ (138 MB, not tracked)
- Removed YuMi/Resources/ (23 MB, not tracked)
- Removed old version assets (566 files, not tracked)
- Excluded Pods/, xcuserdata/ and other build artifacts
- Clean repository optimized for company server deployment
2025-10-09 16:19:14 +08:00

275 lines
9.6 KiB
Objective-C
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

//
// ClientConfig.m
// YUMI
//
// Created by YUMI on 2021/12/11.
//
#import "ClientConfig.h"
#import "Api+Main.h"
/// tool
#import "DESEncrypt.h"
#import "YUMIConstant.h"
#import <MJExtension/MJExtension.h>
#import "XPRoomFaceTool.h"
#import "NSString+Utils.h"
#import "YYUtility.h"
#import "XPWeakTimer.h"
#import "Api+Main.h"
#import "ChatFaceVo.h"
#import "PublicRoomManager.h"
@interface ClientConfig ()
///重试的次数 10次 如果你还是失败的话 那就算了 没办法了
@property (nonatomic,assign) int retryCount;
@property (nonatomic, strong) NSMutableArray *normalTabImageSource;
@property (nonatomic, strong) NSMutableArray *selectedTabImageSource;
@property (nonatomic, strong) NetImageView *normalTabImageLoader;
@property (nonatomic, strong) NetImageView *selectedTabImageLoader;
@property (nonatomic, strong) NetImageView *tabbarBGImageLoader;
@property (nonatomic, strong) NetImageView *navigationAreaBGImageLoader;
@property (nonatomic, assign) BOOL isLoading;
@end
@implementation ClientConfig
+ (instancetype)shareConfig {
static dispatch_once_t onceToken;
static ClientConfig * config;
dispatch_once(&onceToken, ^{
config = [[ClientConfig alloc] init];
config.isTF = [ClientConfig isTestFlight];
config.reloadNavigationAreaImageKey = @"今天光线很好";
config.reloadViewBackgroundColorKey = @"年轻人买不起美国买房平均年龄飙升至56岁";
});
return config;
}
+(BOOL)isTestFlight{
NSURL *receiptURL = [[NSBundle mainBundle] appStoreReceiptURL];
NSString *receiptURLString = [receiptURL path];
BOOL isTestFlight = ([receiptURLString containsString:@"sandboxReceipt"] || [receiptURLString containsString:@"_MASReceipt/receipt"]);
return isTestFlight;
}
- (void)clientInit {
@kWeakify(self);
[Api clientInitConfig:^(BaseModel * _Nullable data, NSInteger code, NSString * _Nullable msg) {
@kStrongify(self);
if (code == 200) {
self.retryCount = 0;
ClientDataModel * model = [ClientDataModel modelWithDictionary:data.data];
self.iOSPhoneBind = model.iosPhoneBind;
//糖果树配置
self.openCandyTree = model.openBoxSwitch;
self.openCandyTreeLimitLevel = model.openBoxSwitchLevelNo;
//表情包
NSString *json = model.faceJson.json;
NSString *deJson = [DESEncrypt decryptUseDES:json key:KeyWithType(KeyType_FacePwdEncode)];
NSDictionary *faceInitData = [deJson toJSONObject];
model.faceInitData = faceInitData;
if (faceInitData) {
[XPRoomFaceTool shareFaceTool].version = [NSString stringWithFormat:@"%@",faceInitData[@"version"]];
[XPRoomFaceTool shareFaceTool].zipMd5 = [[NSString stringWithFormat:@"%@",faceInitData[@"zipMd5"]] uppercaseString];
[XPRoomFaceTool shareFaceTool].zipUrl = [NSString stringWithFormat:@"%@",faceInitData[@"zipUrl"]];
///表情的数据保存本地
[[XPRoomFaceTool shareFaceTool] saveFaceInfoList:faceInitData];
///开始下载
[[XPRoomFaceTool shareFaceTool] downFaceData];
}
NSString *trtcAppId = @(model.trtcAppId).stringValue;
NSString *curTtcKey = [[NSUserDefaults standardUserDefaults]valueForKey:@"kTrtcAppId"];
if(curTtcKey == nil){
if(trtcAppId != nil){
[[NSUserDefaults standardUserDefaults]setValue:trtcAppId forKey:@"kTrtcAppId"];
[[NSUserDefaults standardUserDefaults]synchronize];
}
}else{
if(![trtcAppId isEqualToString:curTtcKey]){
if(trtcAppId != nil){
[[NSUserDefaults standardUserDefaults]setValue:trtcAppId forKey:@"kTrtcAppId"];
[[NSUserDefaults standardUserDefaults]synchronize];
}
}
}
//是否展示公屏
NSString *serverVer = model.appStoreAuditNoticeVersion;
NSString *shortVer = [YYUtility appVersion];
model.hideNoticeVersion = [NSString versionCompareOldStr:serverVer andNewStr:shortVer];
self.configInfo = model;
[[NSNotificationCenter defaultCenter] postNotificationName:@"reloadAfterLoadConfig" object:nil];
[self requestFaceTabNewList];
} else {
if (self.retryCount < 10) {
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.5 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
self.retryCount+=1;
[self clientInit];
});
}
}
}];
}
- (void)requestFaceTabNewList {
[Api faceTabNewList:^(BaseModel * _Nullable data, NSInteger code, NSString * _Nullable msg) {
if (code == 200) {
[[XPRoomFaceTool shareFaceTool] cacheChatFaces:data.data];
}
}];
}
- (void)clientConfig:(void(^)(void))finish {
@kWeakify(self);
[Api clientConfig:^(BaseModel * _Nullable data, NSInteger code, NSString * _Nullable msg) {
@kStrongify(self);
if (code == 200) {
self.uiSetting = [AppUISetting modelWithJSON:data.data[@"appUiSetting"]];
}
// 无论如何都开始构建 tab image path 数组并进入首页
[self prepareCustomUI];
if (finish) {
finish();
}
}];
}
- (void)prepareCustomUI {
NSArray *defaultArray = @[@"", @"", @"", @"", @""];
self.normalTabImageSource = defaultArray.mutableCopy;
self.selectedTabImageSource = defaultArray.mutableCopy;
if (self.uiSetting) {
NSArray *unselectIcons = @[
self.uiSetting.homeUnSelectIcon ?: @"",
self.uiSetting.gameUnSelectIcon ?: @"",
self.uiSetting.dynamicUnSelectIcon ?: @"",
self.uiSetting.msgUnSelectIcon ?: @"",
self.uiSetting.mineUnSelectIcon ?: @""
];
NSArray *selectIcons = @[
self.uiSetting.homeSelectIcon ?: @"",
self.uiSetting.gameSelectIcon ?: @"",
self.uiSetting.dynamicSelectIcon ?: @"",
self.uiSetting.msgSelectIcon ?: @"",
self.uiSetting.mineSelectIcon ?: @""
];
self.normalTabImageSource = unselectIcons.mutableCopy;
self.selectedTabImageSource = selectIcons.mutableCopy;
[self loadNavigationAreaBG];
[self loadTabbarBG];
[self loadBGColor];
} else {
if (self.updateTabbarBG) {
self.updateTabbarBG(kImage(@"tab_bar_bg"));
}
}
}
- (UIImage *)navigationAreaBG {
if (!_navigationAreaBG) {
return kImage(@"home_top_bg");
} else {
return _navigationAreaBG;
}
}
- (void)loadNavigationAreaBG {
if (!_navigationAreaBGImageLoader) {
_navigationAreaBGImageLoader = [[NetImageView alloc] init];
}
@kWeakify(self);
[self.navigationAreaBGImageLoader loadImageWithUrl:self.uiSetting.headIcon
completion:^(UIImage * _Nullable image, NSURL * _Nonnull url) {
@kStrongify(self);
self.navigationAreaBG = image;
[[NSNotificationCenter defaultCenter] postNotificationName:self.reloadNavigationAreaImageKey object:[image resizeTo:CGSizeMake(1125, 420)]];
} fail:^(NSError * _Nonnull error) {}];
}
- (void)loadTabbarBG {
if (!_tabbarBGImageLoader) {
_tabbarBGImageLoader = [[NetImageView alloc] init];
}
@kWeakify(self);
[self.tabbarBGImageLoader loadImageWithUrl:self.uiSetting.navbar
completion:^(UIImage * _Nullable image, NSURL * _Nonnull url) {
@kStrongify(self);
self.tabbarBGImage = image;
if (self.updateTabbarBG) {
self.updateTabbarBG(image);
}
} fail:^(NSError * _Nonnull error) {
@kStrongify(self);
if (self.updateTabbarBG) {
self.updateTabbarBG(kImage(@"tab_bar_bg"));
}
}];
}
- (void)loadBGColor {
[[NSNotificationCenter defaultCenter] postNotificationName:self.reloadNavigationAreaImageKey
object:nil];
}
- (UIColor *)bgColor {
if (self.uiSetting && ![NSString isEmpty:self.uiSetting.backgroundColor]) {
return [DJDKMIMOMColor colorWithHexString:self.uiSetting.backgroundColor];
}
return [DJDKMIMOMColor colorWithHexString:@"#FCF4DF"];
}
- (NSString *)tabName:(NSInteger)tabIndex {
return @[YMLocalizedString(@"TabbarViewController2"),
YMLocalizedString(@"TabbarViewController6"),
YMLocalizedString(@"TabbarViewController3"),
YMLocalizedString(@"TabbarViewController4"),
YMLocalizedString(@"TabbarViewController5")][tabIndex];
}
- (NSString *)loadDefaultNormalTabImageName:(NSInteger)tabIndex {
return @[@"tab_gameHome_normal",
@"tab_gameHome_game_normal",
@"tab_monents_normal",
@"tab_message_normal",
@"tab_mine_normal"][tabIndex];
}
- (NSString *)loadDefaultSelectedTabImageName:(NSInteger)tabIndex {
return @[@"tab_gameHome_selected",
@"tab_gameHome_game_selected",
@"tab_monents_select",
@"tab_message_selected",
@"tab_mine_selected"][tabIndex];
}
- (NSString *)loadConfigNormalTabImagePath:(NSInteger)tabIndex {
return [self.normalTabImageSource xpSafeObjectAtIndex:tabIndex];
}
- (NSString *)loadConfigSelectedTabImagePath:(NSInteger)tabIndex {
return [self.selectedTabImageSource xpSafeObjectAtIndex:tabIndex];
}
- (BOOL)shouldDisplayCaptcha {
return [self.configInfo captchaSwitch];
}
@end