
主要变更: 1. 移除不必要的模块导入,简化 AppDelegate 中的代码结构。 2. 引入新的 EPConfigManager 和 EPNIMManager,统一配置管理和 NIMSDK 初始化逻辑。 3. 更新相关方法以使用 block 回调,提升代码的可读性和维护性。 4. 新增 EPClientAPIBridge 和相关配置文件,增强项目的模块化。 此更新旨在提升代码的可维护性,减少冗余实现,确保配置管理的一致性。
63 lines
2.1 KiB
Objective-C
63 lines
2.1 KiB
Objective-C
//
|
|
// EPConfigStorage.m
|
|
// YuMi
|
|
//
|
|
// Lightweight persistence for client/init data
|
|
//
|
|
|
|
#import "EPConfigStorage.h"
|
|
|
|
@implementation EPConfigStorage
|
|
|
|
#pragma mark - Public
|
|
|
|
+ (BOOL)saveInit:(NSDictionary *)dict {
|
|
if (![dict isKindOfClass:[NSDictionary class]]) { return NO; }
|
|
NSMutableDictionary *wrapped = [dict mutableCopy];
|
|
wrapped[@"_version"] = @1;
|
|
wrapped[@"_timestamp"] = @((long long)([[NSDate date] timeIntervalSince1970]));
|
|
NSData *data = [NSJSONSerialization dataWithJSONObject:wrapped options:0 error:nil];
|
|
if (!data) { return NO; }
|
|
NSString *path = [self initPath];
|
|
NSError *error = nil;
|
|
NSFileManager *fm = [NSFileManager defaultManager];
|
|
NSString *dir = [path stringByDeletingLastPathComponent];
|
|
if (![fm fileExistsAtPath:dir]) {
|
|
[fm createDirectoryAtPath:dir withIntermediateDirectories:YES attributes:nil error:&error];
|
|
if (error) { return NO; }
|
|
}
|
|
return [data writeToFile:path atomically:YES];
|
|
}
|
|
|
|
+ (NSDictionary * _Nullable)loadInit {
|
|
NSString *path = [self initPath];
|
|
NSData *data = [NSData dataWithContentsOfFile:path];
|
|
if (!data) { return nil; }
|
|
id obj = [NSJSONSerialization JSONObjectWithData:data options:0 error:nil];
|
|
if (![obj isKindOfClass:[NSDictionary class]]) { return nil; }
|
|
return (NSDictionary *)obj;
|
|
}
|
|
|
|
+ (BOOL)clearInit {
|
|
NSString *path = [self initPath];
|
|
NSFileManager *fm = [NSFileManager defaultManager];
|
|
if (![fm fileExistsAtPath:path]) { return YES; }
|
|
NSError *error = nil;
|
|
[fm removeItemAtPath:path error:&error];
|
|
return (error == nil);
|
|
}
|
|
|
|
#pragma mark - Helpers
|
|
|
|
+ (NSString *)initPath {
|
|
NSArray<NSURL *> *urls = [[NSFileManager defaultManager] URLsForDirectory:NSApplicationSupportDirectory inDomains:NSUserDomainMask];
|
|
NSURL *dirURL = urls.firstObject;
|
|
if (!dirURL) { dirURL = [NSURL fileURLWithPath:[NSSearchPathForDirectoriesInDomains(NSApplicationSupportDirectory, NSUserDomainMask, YES) firstObject]]; }
|
|
NSURL *fileURL = [dirURL URLByAppendingPathComponent:@"ep_config_init.json"];
|
|
return fileURL.path;
|
|
}
|
|
|
|
@end
|
|
|
|
|