123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287 |
- //
- // EMDemoOptions.m
- // ChatDemo-UI3.0
- //
- // Created by XieYajie on 2018/12/17.
- // Copyright © 2018 XieYajie. All rights reserved.
- //
- #import "EMDemoOptions.h"
- #import <Hyphenate/EMOptions+PrivateDeploy.h>
- static EMDemoOptions *sharedOptions = nil;
- @implementation EMDemoOptions
- - (instancetype)init
- {
- self = [super init];
- if (self) {
- [self _initServerOptions];
-
- self.isDeleteMessagesWhenExitGroup = NO;
- self.isAutoAcceptGroupInvitation = NO;
- self.isAutoTransferMessageAttachments = YES;
- self.isAutoDownloadThumbnail = YES;
- self.isSortMessageByServerTime = NO;
- self.isPriorityGetMsgFromServer = NO;
-
- self.isAutoLogin = NO;
- self.loggedInUsername = @"";
- self.loggedInPassword = @"";
-
- self.isChatTyping = NO;
- self.isAutoDeliveryAck = NO;
-
- self.isOfflineHangup = NO;
-
- self.isShowCallInfo = NO;
- self.isUseBackCamera = NO;
-
- self.willRecord = NO;
- self.willMergeStrem = NO;
- }
-
- return self;
- }
- - (instancetype)initWithCoder:(NSCoder *)aDecoder
- {
- if (self = [super init]) {
- NSString *appkey = [aDecoder decodeObjectForKey:kOptions_Appkey];
- if ([appkey length] == 0) {
- appkey = DEF_APPKEY;
- }
- self.appkey = appkey;
- self.apnsCertName = [aDecoder decodeObjectForKey:kOptions_ApnsCertname];
- self.usingHttpsOnly = [aDecoder decodeBoolForKey:kOptions_HttpsOnly];
-
- self.specifyServer = [aDecoder decodeBoolForKey:kOptions_SpecifyServer];
- self.chatPort = [aDecoder decodeIntForKey:kOptions_IMPort];
- self.chatServer = [aDecoder decodeObjectForKey:kOptions_IMServer];
- self.restServer = [aDecoder decodeObjectForKey:kOptions_RestServer];
-
- self.isDeleteMessagesWhenExitGroup = [aDecoder decodeBoolForKey:kOptions_DeleteChatExitGroup];
- self.isAutoAcceptGroupInvitation = [aDecoder decodeBoolForKey:kOptions_AutoAcceptGroupInvitation];
- self.isAutoTransferMessageAttachments = [aDecoder decodeBoolForKey:kOptions_AutoTransMsgFile];
- self.isAutoDownloadThumbnail = [aDecoder decodeBoolForKey:kOptions_AutoDownloadThumb];
- self.isSortMessageByServerTime = [aDecoder decodeBoolForKey:kOptions_SortMessageByServerTime];
- self.isPriorityGetMsgFromServer = [aDecoder decodeBoolForKey:kOptions_PriorityGetMsgFromServer];
-
- self.isAutoLogin = [aDecoder decodeBoolForKey:kOptions_AutoLogin];
- self.loggedInUsername = [aDecoder decodeObjectForKey:kOptions_LoggedinUsername];
- self.loggedInPassword = [aDecoder decodeObjectForKey:kOptions_LoggedinPassword];
-
- self.isChatTyping = [aDecoder decodeBoolForKey:kOptions_ChatTyping];
- self.isAutoDeliveryAck = [aDecoder decodeBoolForKey:kOptions_AutoDeliveryAck];
-
- self.isOfflineHangup = [aDecoder decodeBoolForKey:kOptions_OfflineHangup];
-
- self.isShowCallInfo = [aDecoder decodeBoolForKey:kOptions_ShowCallInfo];
- self.isUseBackCamera = [aDecoder decodeBoolForKey:kOptions_UseBackCamera];
- self.willRecord = [aDecoder decodeBoolForKey:kOptions_WillRecord];
- self.willMergeStrem = [aDecoder decodeBoolForKey:kOptions_WillMergeStrem];
- }
- return self;
- }
- - (void)encodeWithCoder:(NSCoder *)aCoder
- {
- [aCoder encodeObject:self.appkey forKey:kOptions_Appkey];
- [aCoder encodeObject:self.apnsCertName forKey:kOptions_ApnsCertname];
- [aCoder encodeBool:self.usingHttpsOnly forKey:kOptions_HttpsOnly];
-
- [aCoder encodeBool:self.specifyServer forKey:kOptions_SpecifyServer];
- [aCoder encodeInt:self.chatPort forKey:kOptions_IMPort];
- [aCoder encodeObject:self.chatServer forKey:kOptions_IMServer];
- [aCoder encodeObject:self.restServer forKey:kOptions_RestServer];
-
- [aCoder encodeBool:self.isDeleteMessagesWhenExitGroup forKey:kOptions_DeleteChatExitGroup];
- [aCoder encodeBool:self.isAutoAcceptGroupInvitation forKey:kOptions_AutoAcceptGroupInvitation];
- [aCoder encodeBool:self.isAutoTransferMessageAttachments forKey:kOptions_AutoTransMsgFile];
- [aCoder encodeBool:self.isAutoDownloadThumbnail forKey:kOptions_AutoDownloadThumb];
- [aCoder encodeBool:self.isSortMessageByServerTime forKey:kOptions_SortMessageByServerTime];
- [aCoder encodeBool:self.isPriorityGetMsgFromServer forKey:kOptions_PriorityGetMsgFromServer];
-
- [aCoder encodeBool:self.isAutoLogin forKey:kOptions_AutoLogin];
- [aCoder encodeObject:self.loggedInUsername forKey:kOptions_LoggedinUsername];
- [aCoder encodeObject:self.loggedInPassword forKey:kOptions_LoggedinPassword];
-
- [aCoder encodeBool:self.isChatTyping forKey:kOptions_ChatTyping];
- [aCoder encodeBool:self.isAutoDeliveryAck forKey:kOptions_AutoDeliveryAck];
-
- [aCoder encodeBool:self.isOfflineHangup forKey:kOptions_OfflineHangup];
-
- [aCoder encodeBool:self.isShowCallInfo forKey:kOptions_ShowCallInfo];
- [aCoder encodeBool:self.isUseBackCamera forKey:kOptions_UseBackCamera];
-
- [aCoder encodeBool:self.willRecord forKey:kOptions_WillRecord];
- [aCoder encodeBool:self.willMergeStrem forKey:kOptions_WillMergeStrem];
- }
- - (id)copyWithZone:(nullable NSZone *)zone
- {
- EMDemoOptions *retModel = [[[self class] alloc] init];
- retModel.appkey = self.appkey;
- retModel.apnsCertName = self.apnsCertName;
- retModel.usingHttpsOnly = self.usingHttpsOnly;
- retModel.specifyServer = self.specifyServer;
- retModel.chatPort = self.chatPort;
- retModel.chatServer = self.chatServer;
- retModel.restServer = self.restServer;
- retModel.isDeleteMessagesWhenExitGroup = self.isDeleteMessagesWhenExitGroup;
- retModel.isAutoAcceptGroupInvitation = self.isAutoAcceptGroupInvitation;
- retModel.isAutoTransferMessageAttachments = self.isAutoTransferMessageAttachments;
- retModel.isAutoDownloadThumbnail = self.isAutoDownloadThumbnail;
- retModel.isSortMessageByServerTime = self.isSortMessageByServerTime;
- retModel.isPriorityGetMsgFromServer = self.isPriorityGetMsgFromServer;
- retModel.isAutoLogin = self.isAutoLogin;
- retModel.loggedInUsername = self.loggedInUsername;
- retModel.loggedInPassword = self.loggedInPassword;
- retModel.isChatTyping = self.isChatTyping;
- retModel.isAutoDeliveryAck = self.isAutoDeliveryAck;
- retModel.isOfflineHangup = self.isOfflineHangup;
- retModel.isShowCallInfo = self.isShowCallInfo;
- retModel.isUseBackCamera = self.isUseBackCamera;
- retModel.willRecord = self.willRecord;
- retModel.willMergeStrem = self.willMergeStrem;
- return retModel;
- }
- - (void)setLoggedInUsername:(NSString *)loggedInUsername
- {
- if (![_loggedInUsername isEqualToString:loggedInUsername]) {
- _loggedInUsername = loggedInUsername;
- _loggedInPassword = @"";
- }
- }
- #pragma mark - Private
- - (void)_initServerOptions
- {
- self.appkey = DEF_APPKEY;
- #if DEBUG
- self.apnsCertName = @"chatdemoui_dev";
- #else
- self.apnsCertName = @"chatdemoui";
- #endif
- self.usingHttpsOnly = NO;
- self.specifyServer = NO;
- self.chatServer = @"msync-im1.sandbox.easemob.com";
- self.chatPort = 6717;
- self.restServer = @"a1.sdb.easemob.com";
- }
- #pragma mark - Public
- - (void)archive
- {
- NSString *fileName = @"emdemo_options.data";
- NSString *file = [NSSearchPathForDirectoriesInDomains(NSLibraryDirectory, NSUserDomainMask, YES).firstObject stringByAppendingPathComponent:fileName];
- [NSKeyedArchiver archiveRootObject:self toFile:file];
- }
- - (EMOptions *)toOptions
- {
- EMOptions *retOpt = [EMOptions optionsWithAppkey:self.appkey];
- retOpt.apnsCertName = self.apnsCertName;
- retOpt.usingHttpsOnly = self.usingHttpsOnly;
- retOpt.enableConsoleLog = NO;
- if (self.specifyServer) {
- retOpt.enableDnsConfig = NO;
- retOpt.chatPort = self.chatPort;
- retOpt.chatServer = self.chatServer;
- retOpt.restServer = self.restServer;
- }
-
- retOpt.isAutoLogin = self.isAutoLogin;
-
- retOpt.isDeleteMessagesWhenExitGroup = self.isDeleteMessagesWhenExitGroup;
- retOpt.isAutoAcceptGroupInvitation = self.isAutoAcceptGroupInvitation;
- retOpt.isAutoTransferMessageAttachments = self.isAutoTransferMessageAttachments;
- retOpt.isAutoDownloadThumbnail = self.isAutoDownloadThumbnail;
- retOpt.sortMessageByServerTime = self.isSortMessageByServerTime;
-
- retOpt.enableDeliveryAck = self.isAutoDeliveryAck;
- retOpt.enableConsoleLog = YES;
- return retOpt;
- }
- #pragma mark - Class Methods
- + (instancetype)sharedOptions
- {
- static dispatch_once_t onceToken;
- dispatch_once(&onceToken, ^{
- sharedOptions = [EMDemoOptions getOptionsFromLocal];
- });
-
- return sharedOptions;
- }
- + (EMDemoOptions *)getOptionsFromLocal
- {
- EMDemoOptions *retModel = nil;
- NSString *fileName = @"emdemo_options.data";
- NSString *file = [NSSearchPathForDirectoriesInDomains(NSLibraryDirectory, NSUserDomainMask, YES).firstObject stringByAppendingPathComponent:fileName];
- retModel = [NSKeyedUnarchiver unarchiveObjectWithFile:file];
- if (!retModel) {
- retModel = [[EMDemoOptions alloc] init];
- [retModel archive];
- }
-
- return retModel;
- }
- + (void)reInitAndSaveServerOptions
- {
- EMDemoOptions *demoOptions = [EMDemoOptions sharedOptions];
- [demoOptions _initServerOptions];
-
- [demoOptions archive];
- }
- + (void)updateAndSaveServerOptions:(NSDictionary *)aDic
- {
- NSString *appkey = [aDic objectForKey:kOptions_Appkey];
- NSString *apns = [aDic objectForKey:kOptions_ApnsCertname];
- BOOL httpsOnly = [[aDic objectForKey:kOptions_HttpsOnly] boolValue];
- if ([appkey length] == 0) {
- appkey = DEF_APPKEY;
- }
- if ([apns length] == 0) {
- #if DEBUG
- apns = @"chatdemoui_dev";
- #else
- apns = @"chatdemoui";
- #endif
- }
-
- EMDemoOptions *demoOptions = [EMDemoOptions sharedOptions];
- demoOptions.appkey = appkey;
- demoOptions.apnsCertName = apns;
- demoOptions.usingHttpsOnly = httpsOnly;
-
- int specifyServer = [[aDic objectForKey:kOptions_SpecifyServer] intValue];
- demoOptions.specifyServer = NO;
- if (specifyServer != 0) {
- demoOptions.specifyServer = YES;
-
- NSString *imServer = [aDic objectForKey:kOptions_IMServer];
- NSString *imPort = [aDic objectForKey:kOptions_IMPort];
- NSString *restServer = [aDic objectForKey:kOptions_RestServer];
- if ([imServer length] > 0 && [restServer length] > 0 && [imPort length] > 0) {
- demoOptions.chatPort = [imPort intValue];
- demoOptions.chatServer = imServer;
- demoOptions.restServer = restServer;
- }
- }
-
- [demoOptions archive];
- }
- @end
|