| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220 |
- //
- // RASingleton.m
- // Apex And Drivers
- //
- // Created by Jack on 2018/6/6.
- // Copyright © 2018年 USAI. All rights reserved.
- //
- #import "RASingleton.h"
- static RASingleton *singleton;
- @interface RASingleton ()
- @property (nonatomic,strong) NSMutableString *log;
- @end
- @implementation RASingleton {
- NSString *_secretKey;
- }
- @synthesize backgroundReportType = _backgroundReportType;
- + (instancetype)sharedInstance {
-
- static dispatch_once_t tocken;
- dispatch_once(&tocken, ^{
- singleton = [[RASingleton alloc] init];
- singleton->_secretKey = @"usai";
- });
- return singleton;
- }
- #pragma mark - User
- - (NSString *)secretKey {
- return _secretKey;
- }
- - (NSString *)encryptUser {
-
- if (!self.user) {
- return nil;
- }
- return [self encryptString:self.user];
- }
- - (NSString *)encryptPassword {
-
- if (!self.password) {
- return nil;
- }
- return [self encryptString:self.password];
- }
- - (void)saveUserInfo {
- if (self.user && self.password) {
-
- NSUserDefaults *defaults =[NSUserDefaults standardUserDefaults];
- [defaults removeObjectForKey:@"user"];
- [defaults removeObjectForKey:@"password"];
-
- [defaults setValue:self.encryptUser forKey:@"user"];
- [defaults setValue:self.encryptPassword forKey:@"password"];
- [defaults setBool:TRUE forKey:@"autologin"];
- [defaults synchronize];
- }
- }
- - (NSString *)savedUser {
- NSString * user = [self decryptString:[[NSUserDefaults standardUserDefaults] stringForKey:@"user"]];
- return user;
- }
- - (NSString *)savedPassword {
- NSString * password = [self decryptString:[[NSUserDefaults standardUserDefaults] stringForKey:@"password"]];
- return password;
- }
- - (void)loginUser:(NSString *)user password:(NSString *)password {
- _user = user;
- _password = password;
-
- [self saveUserInfo];
-
- [self bindUserWithNotificationToken];
- }
- - (BOOL)autoLogin {
- _user = [self savedUser];
- _password = [self savedPassword];
-
- return _user.length && _password.length;
- }
- - (void)setNotificationToken:(NSString *)notificationToken {
- _notificationToken = notificationToken;
-
- [self bindUserWithNotificationToken];
- }
- - (void)bindUserWithNotificationToken {
-
- if (_user.length && _password.length && _notificationToken.length) {
- dispatch_async(dispatch_get_global_queue(0, 0), ^{
- [RADataProvider bindNitificationToken:self.notificationToken];
- });
- }
- }
- - (void)logout {
- _user = nil;
- _password = nil;
-
- NSUserDefaults *defaults =[NSUserDefaults standardUserDefaults];
- [defaults removeObjectForKey:@"user"];
- [defaults removeObjectForKey:@"password"];
- [defaults synchronize];
- }
- #pragma mark - Location
- - (void)setRequiredLocation:(BOOL)requiredLocation {
- _requiredLocation = requiredLocation;
-
- NSUserDefaults *defaults =[NSUserDefaults standardUserDefaults];
- [defaults setBool:_requiredLocation forKey:@"requiredLocation"];
- [defaults synchronize];
-
- [self sendRequiredLocationNotification];
- }
- - (void)loadSavedReuqiredLocation { // 启动的时候
-
- NSUserDefaults *defaults =[NSUserDefaults standardUserDefaults];
- _requiredLocation = [defaults objectForKey:@"requiredLocation"];
-
- [self sendRequiredLocationNotification];
- }
- - (void)sendRequiredLocationNotification {
-
- if (_requiredLocation) {
- [[NSNotificationCenter defaultCenter] postNotificationName:RANotificationStartLocation object:nil];
- } else {
- [[NSNotificationCenter defaultCenter] postNotificationName:RANotificationStopLocation object:nil];
- }
-
- }
- #pragma mark - Utils
- - (NSString *)encryptString:(NSString *)str {
- if (str == nil) {
- return nil;
- }
- return [AESCrypt encrypt:str password:self.secretKey];
- }
- - (NSString *)decryptString:(NSString *)str {
- if (str == nil) {
- return nil;
- }
- return [AESCrypt decrypt:str password:self.secretKey];
- }
- #pragma mark - NetworkQueue
- - (NSOperationQueue *)networkQueue {
- if (!_networkQueue) {
- _networkQueue = [[NSOperationQueue alloc] init];
- _networkQueue.maxConcurrentOperationCount = 5;
- _networkQueue.qualityOfService = NSQualityOfServiceUtility;
- }
- return _networkQueue;
- }
- #pragma mark - Backgroud Report Location Permission
- - (void)setBackgroundReportType:(RABackgroundReportType)backgroundReportType {
- _backgroundReportType = backgroundReportType;
-
- NSUserDefaults *defaults =[NSUserDefaults standardUserDefaults];
- [defaults setInteger:_backgroundReportType forKey:@"backgroundReportLocationPermissionType"];
- [defaults synchronize];
- }
- - (RABackgroundReportType)backgroundReportType {
- if (_backgroundReportType == 0) {
- NSUserDefaults *defaults =[NSUserDefaults standardUserDefaults];
- _backgroundReportType = (RABackgroundReportType)[defaults integerForKey:@"backgroundReportLocationPermissionType"];
- }
- return _backgroundReportType;
- }
- #pragma mark - Log
- - (NSMutableString *)log {
- if (!_log) {
- _log = [NSMutableString string];
- }
- return _log;
- }
- - (void)writeLog:(NSString *)log {
- if (log.length) {
- [self.log appendFormat:@"\n%@",log];
- }
- }
- - (void)saveLogs {
- if (self.log.length > 0) {
- NSString *cacheDir = [NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES) lastObject];
- NSString *logPath = [cacheDir stringByAppendingPathComponent:@"log"];
-
- [self.log writeToFile:logPath atomically:NO encoding:NSUTF8StringEncoding error:nil];
- }
- }
- @end
|