RASingleton.m 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158
  1. //
  2. // RASingleton.m
  3. // Apex And Drivers
  4. //
  5. // Created by Jack on 2018/6/6.
  6. // Copyright © 2018年 USAI. All rights reserved.
  7. //
  8. #import "RASingleton.h"
  9. static RASingleton *singleton;
  10. @implementation RASingleton {
  11. NSString *_secretKey;
  12. }
  13. + (instancetype)sharedInstance {
  14. static dispatch_once_t tocken;
  15. dispatch_once(&tocken, ^{
  16. singleton = [[RASingleton alloc] init];
  17. singleton->_secretKey = @"usai";
  18. });
  19. return singleton;
  20. }
  21. #pragma mark - User
  22. - (NSString *)secretKey {
  23. return _secretKey;
  24. }
  25. - (NSString *)encryptUser {
  26. if (!self.user) {
  27. return nil;
  28. }
  29. return [self encryptString:self.user];
  30. }
  31. - (NSString *)encryptPassword {
  32. if (!self.password) {
  33. return nil;
  34. }
  35. return [self encryptString:self.password];
  36. }
  37. - (void)saveUserInfo {
  38. if (self.user && self.password) {
  39. NSUserDefaults *defaults =[NSUserDefaults standardUserDefaults];
  40. [defaults removeObjectForKey:@"user"];
  41. [defaults removeObjectForKey:@"password"];
  42. [defaults setValue:self.encryptUser forKey:@"user"];
  43. [defaults setValue:self.encryptPassword forKey:@"password"];
  44. [defaults setBool:TRUE forKey:@"autologin"];
  45. [defaults synchronize];
  46. }
  47. }
  48. - (NSString *)savedUser {
  49. NSString * user = [self decryptString:[[NSUserDefaults standardUserDefaults] stringForKey:@"user"]];
  50. return user;
  51. }
  52. - (NSString *)savedPassword {
  53. NSString * password = [self decryptString:[[NSUserDefaults standardUserDefaults] stringForKey:@"password"]];
  54. return password;
  55. }
  56. - (void)loginUser:(NSString *)user password:(NSString *)password {
  57. _user = user;
  58. _password = password;
  59. [self saveUserInfo];
  60. [self bindUserWithNotificationToken];
  61. }
  62. - (BOOL)autoLogin {
  63. _user = [self savedUser];
  64. _password = [self savedPassword];
  65. return _user.length && _password.length;
  66. }
  67. - (void)setNotificationToken:(NSString *)notificationToken {
  68. _notificationToken = notificationToken;
  69. [self bindUserWithNotificationToken];
  70. }
  71. - (void)bindUserWithNotificationToken {
  72. if (_user.length && _password.length && _notificationToken.length) {
  73. [RADataProvider bindNitificationToken:self.notificationToken];
  74. }
  75. }
  76. - (void)logout {
  77. _user = nil;
  78. _password = nil;
  79. NSUserDefaults *defaults =[NSUserDefaults standardUserDefaults];
  80. [defaults removeObjectForKey:@"user"];
  81. [defaults removeObjectForKey:@"password"];
  82. [defaults synchronize];
  83. }
  84. #pragma mark - Location
  85. - (void)setRequiredLocation:(BOOL)requiredLocation {
  86. _requiredLocation = requiredLocation;
  87. NSUserDefaults *defaults =[NSUserDefaults standardUserDefaults];
  88. [defaults setBool:_requiredLocation forKey:@"requiredLocation"];
  89. [defaults synchronize];
  90. [self sendRequiredLocationNotification];
  91. }
  92. - (void)loadSavedReuqiredLocation { // 启动的时候
  93. NSUserDefaults *defaults =[NSUserDefaults standardUserDefaults];
  94. _requiredLocation = [defaults objectForKey:@"requiredLocation"];
  95. [self sendRequiredLocationNotification];
  96. }
  97. - (void)sendRequiredLocationNotification {
  98. if (_requiredLocation) {
  99. [[NSNotificationCenter defaultCenter] postNotificationName:RANotificationStartLocation object:nil];
  100. } else {
  101. [[NSNotificationCenter defaultCenter] postNotificationName:RANotificationStopLocation object:nil];
  102. }
  103. }
  104. #pragma mark - Utils
  105. - (NSString *)encryptString:(NSString *)str {
  106. if (str == nil) {
  107. return nil;
  108. }
  109. return [AESCrypt encrypt:str password:self.secretKey];
  110. }
  111. - (NSString *)decryptString:(NSString *)str {
  112. if (str == nil) {
  113. return nil;
  114. }
  115. return [AESCrypt decrypt:str password:self.secretKey];
  116. }
  117. @end