GlobalVariables.m 9.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314
  1. //
  2. // GlobalVariables.m
  3. // BuguLive
  4. //
  5. // Created by xfg on 16/2/15.
  6. // Copyright © 2016年 xfg. All rights reserved.
  7. //
  8. #import "GlobalVariables.h"
  9. #import "NSString+guoMS.h"
  10. #import "BogoNetworkKit.h"
  11. @implementation GlobalVariables
  12. @synthesize token = _token;
  13. @synthesize userModel = _userModel;
  14. @synthesize is_guartian = _is_guartian;
  15. + (GlobalVariables *)sharedInstance
  16. {
  17. static GlobalVariables *myInstance = nil;
  18. static dispatch_once_t predicate;
  19. dispatch_once(&predicate, ^{
  20. myInstance = [[self alloc] init];
  21. NSMutableDictionary *tmpDict = [[NSMutableDictionary alloc] init];
  22. myInstance.config = tmpDict;
  23. NSMutableArray *tmpArray = [[NSMutableArray alloc] init];
  24. myInstance.newestLivingMArray = tmpArray;
  25. NSMutableArray *tmpArray2 = [[NSMutableArray alloc] init];
  26. myInstance.listMsgMArray = tmpArray2;
  27. // 两种情况启用新打包时的域名:1、如果本地保存的日期版本号为空;2、本地保存的日期版本号小于当前打包时填写的日期版本号(意思是更新版本)
  28. NSString *tmpVersionTime = [[NSUserDefaults standardUserDefaults] objectForKey:kAppVersionTimeKey];
  29. if ([BGUtils isBlankString:tmpVersionTime] || [tmpVersionTime longLongValue] < [VersionTime longLongValue])
  30. {
  31. if (AppDoMainUrlArray)
  32. {
  33. if ([AppDoMainUrlArray count])
  34. {
  35. NSString *tmpMainUrl = [AppDoMainUrlArray firstObject];
  36. tmpMainUrl = [tmpMainUrl stringByAppendingString:AppDoMainUrlSuffix];
  37. myInstance.currentDoMianUrlStr = tmpMainUrl;
  38. myInstance.doMainUrlArray = AppDoMainUrlArray;
  39. }
  40. else
  41. {
  42. [FanweMessage alert:ASLocalizedString(@"域名列表不为空,但是没有数据!")];
  43. }
  44. }
  45. else
  46. {
  47. [FanweMessage alert:ASLocalizedString(@"域名列表为空!")];
  48. }
  49. }
  50. else
  51. {
  52. // 获取保存在本地的域名列表
  53. NSArray *tmpMainUrlArray = [[NSUserDefaults standardUserDefaults] objectForKey:kAppDoMainUrlListKey];
  54. if (tmpMainUrlArray)
  55. {
  56. if ([tmpMainUrlArray count])
  57. {
  58. myInstance.doMainUrlArray = tmpMainUrlArray;
  59. }
  60. else
  61. {
  62. myInstance.doMainUrlArray = AppDoMainUrlArray;
  63. }
  64. }
  65. else
  66. {
  67. myInstance.doMainUrlArray = AppDoMainUrlArray;
  68. }
  69. // 获取保存在本地的域名
  70. NSString *tmpMainUrl = [[NSUserDefaults standardUserDefaults] objectForKey:kAppCurrentMainUrlKey];
  71. // 如果保存在本地的域名为空,则启用域名列表中的首个域名
  72. if ([BGUtils isBlankString:tmpMainUrl])
  73. {
  74. if (myInstance.doMainUrlArray)
  75. {
  76. if ([myInstance.doMainUrlArray count])
  77. {
  78. tmpMainUrl = [myInstance.doMainUrlArray firstObject];
  79. tmpMainUrl = [tmpMainUrl stringByAppendingString:AppDoMainUrlSuffix];
  80. }
  81. else
  82. {
  83. [FanweMessage alert:ASLocalizedString(@"域名列表不为空,但是没有数据!")];
  84. }
  85. }
  86. else
  87. {
  88. [FanweMessage alert:ASLocalizedString(@"域名列表为空!")];
  89. }
  90. }
  91. myInstance.currentDoMianUrlStr = tmpMainUrl;
  92. }
  93. if ([IsNeedStorageDoMainUrl isEqualToString:@"YES"])
  94. {
  95. [[NSUserDefaults standardUserDefaults] setObject:myInstance.currentDoMianUrlStr forKey:kAppCurrentMainUrlKey];
  96. [[NSUserDefaults standardUserDefaults] setObject:VersionTime forKey:kAppVersionTimeKey];
  97. }
  98. // 获取保存在本地的AESKey
  99. NSString *tmpAESKeyUrl = [[NSUserDefaults standardUserDefaults] objectForKey:kFWAESKey];
  100. // 如果保存在本地的AESKey为空,则用打包时填写的AppAESKey
  101. if ([BGUtils isBlankString:tmpAESKeyUrl])
  102. {
  103. tmpAESKeyUrl = AppAESKey;
  104. }
  105. myInstance.aesKeyStr = tmpAESKeyUrl;
  106. AppModel *appModel = [[AppModel alloc]init];
  107. myInstance.appModel = appModel;
  108. });
  109. return myInstance;
  110. }
  111. #pragma mark 保存服务端下发的域名列表
  112. - (void)storageAppMainUrls:(NSArray *)mainUrlArray
  113. {
  114. self.doMainUrlArray = mainUrlArray;
  115. [[NSUserDefaults standardUserDefaults] setObject:mainUrlArray forKey:kAppDoMainUrlListKey];
  116. [[NSUserDefaults standardUserDefaults] synchronize];
  117. }
  118. #pragma mark 保存当前可用的域名,一下次启动app时使用
  119. - (void)storageAppCurrentMainUrl:(NSString *)currentMainUrl
  120. {
  121. currentMainUrl = [self getStandardMainUrl:currentMainUrl];
  122. self.currentDoMianUrlStr = currentMainUrl;
  123. if ([IsNeedStorageDoMainUrl isEqualToString:@"YES"])
  124. {
  125. [[NSUserDefaults standardUserDefaults] setObject:currentMainUrl forKey:kAppCurrentMainUrlKey];
  126. [[NSUserDefaults standardUserDefaults] setObject:VersionTime forKey:kAppVersionTimeKey];
  127. [[NSUserDefaults standardUserDefaults] synchronize];
  128. }
  129. }
  130. #pragma mark 获取系统准确的接口地址(主要为了防止客户后台备用域名填写的有问题)
  131. - (NSString *)getStandardMainUrl:(NSString *)urlStr
  132. {
  133. if (![BGUtils isBlankString:urlStr])
  134. {
  135. // 如果有多个 AppDoMainUrlSuffix 时,先全部删除
  136. if ([urlStr countOccurencesOfString:AppDoMainUrlSuffix] > 1)
  137. {
  138. urlStr = [urlStr stringByReplacingOccurrencesOfString:AppDoMainUrlSuffix withString:@""];
  139. }
  140. // 根域名如果不包含 AppDoMainUrlSuffix 则加上
  141. if ([urlStr rangeOfString:AppDoMainUrlSuffix].location == NSNotFound)
  142. {
  143. urlStr = [urlStr stringByAppendingString:AppDoMainUrlSuffix];
  144. }
  145. return urlStr;
  146. }
  147. return @"";
  148. }
  149. #pragma mark 保存当前可用的aeskey,一下次启动app时使用
  150. - (void)storageAppAESKey:(NSString *)aesKeyStr
  151. {
  152. self.aesKeyStr = aesKeyStr;
  153. [[NSUserDefaults standardUserDefaults] setObject:aesKeyStr forKey:kFWAESKey];
  154. [[NSUserDefaults standardUserDefaults] synchronize];
  155. }
  156. - (void)setToken:(NSString *)token{
  157. [self writeStr:token forKey:@"token"];
  158. _token = token;
  159. [BogoNetwork shareInstance].token = token;
  160. }
  161. -(NSString *)token{
  162. if (!_token) {
  163. _token = [self readStrFromUser:@"token"];
  164. }
  165. return _token;
  166. }
  167. - (void)setIs_guartian:(NSString *)is_guartian{
  168. [self writeStr:is_guartian forKey:@"is_guartian"];
  169. _is_guartian = is_guartian;
  170. }
  171. -(NSString *)is_guartian{
  172. if (!_is_guartian) {
  173. _is_guartian = [self readStrFromUser:@"is_guartian"];
  174. }
  175. return _is_guartian;
  176. }
  177. -(void)storageLoginString:(NSString *)string{
  178. [[NSUserDefaults standardUserDefaults] setObject:string forKey:string];
  179. [[NSUserDefaults standardUserDefaults] synchronize];
  180. }
  181. -(UIImage *)getKatongImageWidthID:(NSString *)uid
  182. {
  183. if(StrValid(uid))
  184. {
  185. NSString *iid = [uid substringFromIndex:uid.length-1];
  186. return [UIImage imageNamed:NSStringFormat(@"kt%@.jpg",iid)];
  187. }
  188. else
  189. {
  190. return [UIImage imageNamed:@"kt0.jpg"];
  191. }
  192. }
  193. - (void)writeStr:(NSString *)strValue forKey:(NSString *)strKey{
  194. if ([self isStr:strKey ] ) {
  195. NSUserDefaults * user = [NSUserDefaults standardUserDefaults];
  196. [user setObject:strValue forKey:strKey];
  197. [user synchronize];
  198. }
  199. }
  200. - (NSString *)readStrFromUser:(NSString *)strKey{
  201. if ([self isStr:strKey]) {
  202. NSUserDefaults * user = [NSUserDefaults standardUserDefaults];
  203. NSString * strValue = [user objectForKey:strKey];
  204. if (strValue != nil && [strValue isKindOfClass:[NSString class]]&& strValue.length>0) {
  205. return strValue;
  206. }
  207. }
  208. return @"";
  209. }
  210. #pragma mark 验证字符串
  211. - (BOOL)isStr:(NSString *)str{
  212. if (str != nil && [str isKindOfClass:[NSString class]] ) {
  213. return YES;
  214. }
  215. return NO;
  216. }
  217. - (BOOL)isDic:(NSDictionary *)dic{
  218. if (dic != nil && [dic isKindOfClass:[NSDictionary class]]) {
  219. return YES;
  220. }
  221. return NO;
  222. }
  223. - (UIViewController *)getCurrentVC {
  224. UIViewController *result = nil;
  225. UIWindow *window = [[UIApplication sharedApplication] keyWindow];
  226. if (window.windowLevel != UIWindowLevelNormal) {
  227. NSArray *windows = [[UIApplication sharedApplication] windows];
  228. for (UIWindow *temp in windows) {
  229. if (temp.windowLevel == UIWindowLevelNormal) {
  230. window = temp;
  231. break;
  232. }
  233. }
  234. }
  235. //取当前展示的控制器
  236. result = window.rootViewController;
  237. while (result.presentedViewController) {
  238. result = result.presentedViewController;
  239. }
  240. //如果为UITabBarController:取选中控制器
  241. if ([result isKindOfClass:[UITabBarController class]]) {
  242. result = [(UITabBarController *)result selectedViewController];
  243. }
  244. //如果为UINavigationController:取可视控制器
  245. if ([result isKindOfClass:[UINavigationController class]]) {
  246. result = [(UINavigationController *)result visibleViewController];
  247. }
  248. return result;
  249. }
  250. -(BOOL)openAgora
  251. {
  252. return NO;
  253. }
  254. - (BOOL)openFirebaseSMS
  255. {
  256. return NO;
  257. }
  258. - (NSData *)new_deviceToken {
  259. return _new_deviceToken;
  260. }
  261. @end