Browse Source

1.修改iOS Apex Drivers上传管理器配置。

Pen Li 7 years ago
parent
commit
e2ba091aef
2 changed files with 92 additions and 5 deletions
  1. 22 1
      common/upload/RAUploadManager.h
  2. 70 4
      common/upload/RAUploadManager.m

+ 22 - 1
common/upload/RAUploadManager.h

@@ -18,6 +18,9 @@
 //
 //@end
 
+FOUNDATION_EXTERN NSString *const UPLOAD_FINISH_NOTIFICATION;
+FOUNDATION_EXTERN NSString *const UPLOAD_COUNT_CHANGE_NOTIFICATION;
+
 typedef NS_ENUM(NSInteger, QueueStatus) {
     QueueStatusDefault = 0,
     QueueStatusAdd = 1,
@@ -28,6 +31,22 @@ typedef NS_ENUM(NSInteger, QueueStatus) {
 
 extern NSString *const kUploadSetting;
 
+#pragma mark - Configure
+
+@interface RAUPloadManagerConfigure : NSObject
+
+@property (nonatomic,assign) BOOL autoRemoveFinish;
+@property (nonatomic,assign) BOOL autoRemoveError;
+@property (nonatomic,assign) BOOL autoUpload;
+@property (nonatomic,assign) BOOL onlyWIFI;
+@property (nonatomic,assign) NSUInteger retryCount;
+@property (nonatomic,assign) NSTimeInterval retryTimeIntetval;
+
+@end
+
+
+#pragma mark - Upload Manager
+
 @interface RAUploadManager : NSObject
 @property (assign) int maxThread;
 @property (assign) int activeThread;
@@ -40,7 +59,7 @@ extern NSString *const kUploadSetting;
 -(void) addTask:(NSMutableDictionary*) task;
 -(void) addTasks:(NSMutableArray*) tasks;
 @property (nonatomic,assign) BOOL onlyWiFi;
-//@property (assign) bool removeFinish;
+@property (assign) bool removeFinish;
 //@property (assign) bool removeError;
 @property (assign) bool autoStart;
 @property (assign) QueueStatus queue_status;
@@ -50,6 +69,8 @@ extern NSString *const kUploadSetting;
 
 @property (strong,nonatomic) NSOperationQueue* operation_queue;
 
++ (void)configureUploadManager:(void(^)(RAUPloadManagerConfigure *configure))configure;
+
 -(void) startTask:(NSMutableDictionary*) task;
 -(void) removeTask:(NSMutableDictionary*) task;
 -(void) removeTasks:(NSMutableArray*) tasks;

+ 70 - 4
common/upload/RAUploadManager.m

@@ -11,6 +11,8 @@
 #import "RAUtils.h"
 
 NSString *const kUploadSetting = @"UploadSettingKey";
+NSString *const UPLOAD_FINISH_NOTIFICATION = @"upload_finish_notification";
+NSString *const UPLOAD_COUNT_CHANGE_NOTIFICATION = @"upload_count_change_notification";
 
 @interface RAUploadManager ()
 
@@ -19,8 +21,69 @@ NSString *const kUploadSetting = @"UploadSettingKey";
 
 @end
 
+@implementation RAUPloadManagerConfigure
+
+- (instancetype)init {
+    if (self = [super init]) {
+        
+        NSDictionary *param = [[NSUserDefaults standardUserDefaults] objectForKey:kUploadSetting];
+        if (param) {
+            BOOL autoUpload = [[param objectForKey:@"auto_upload"] boolValue];
+            BOOL autoRmFinish = [[param objectForKey:@"auto_rm_finish"] boolValue];
+            BOOL autoRmErr = [[param objectForKey:@"auto_rm_error"] boolValue];
+            BOOL onlyWiFi = [[param objectForKey:@"only_wifi"] boolValue];
+            int retryCount = [[param objectForKey:@"retry_count"] intValue];
+            NSNumber *timeInterval = [param objectForKey:@"retry_time_interval"];
+            if (timeInterval != nil) {
+                self.retryTimeIntetval = [timeInterval intValue];
+            } else {
+                self.retryTimeIntetval = 300;
+            }
+            self.autoUpload = autoUpload;
+            self.autoRemoveFinish = autoRmFinish;
+            self.autoRemoveError = autoRmErr;
+            self.retryCount = retryCount;
+            self.onlyWIFI = onlyWiFi;
+        } else {
+            self.autoUpload = YES;
+            self.autoRemoveFinish = NO;
+            self.autoRemoveError = NO;
+            self.retryCount = 5;
+            self.onlyWIFI = NO;
+            self.retryTimeIntetval = 300;
+        }
+    }
+    return self;
+}
+
+- (void)save {
+    
+    NSDictionary *param = @{
+                            @"auto_upload" : @(self.autoUpload),
+                            @"auto_rm_finish"   : @(self.autoRemoveFinish),
+                            @"auto_rm_error"    : @(self.autoRemoveError),
+                            @"retry_count" : @(self.retryCount),
+                            @"only_wifi" : @(self.onlyWIFI),
+                            @"retry_time_interval" : @(self.retryTimeIntetval)
+                            };
+    
+    [[NSUserDefaults standardUserDefaults] setObject:param forKey:kUploadSetting];
+    [[NSUserDefaults standardUserDefaults] synchronize];
+}
+
+@end
+
 @implementation RAUploadManager
 
++ (void)configureUploadManager:(void(^)(RAUPloadManagerConfigure *configure))configure {
+    
+    
+    if (configure) {
+        RAUPloadManagerConfigure *cfg = [[RAUPloadManagerConfigure alloc] init];
+        configure(cfg);
+        [cfg save];
+    }
+}
 
 /*!
  * Called by Reachability whenever status changes.
@@ -74,13 +137,13 @@ NSString *const kUploadSetting = @"UploadSettingKey";
                 self.retryTimeInterval = 300;
             }
             self.autoStart = autoUpload;
-//            self.removeFinish = autoRmFinish;
+            self.removeFinish = autoRmFinish;
 //            self.removeError = autoRmErr;
             self.maxRetry = retryCount;
             self.onlyWiFi = onlyWiFi;
         } else {
             self.autoStart = YES;
-//            self.removeFinish = YES;
+            self.removeFinish = NO;
 //            self.removeError = NO;
             self.maxRetry = 5;
             self.onlyWiFi = NO;
@@ -176,6 +239,8 @@ NSString *const kUploadSetting = @"UploadSettingKey";
             self.queue_status = QueueStatusAdd;
             return;
         }
+        
+        [[NSNotificationCenter defaultCenter] postNotificationName:UPLOAD_COUNT_CHANGE_NOTIFICATION object:nil];
     }
     
 }
@@ -448,8 +513,9 @@ NSString *const kUploadSetting = @"UploadSettingKey";
         switch ([block_task[@"status"] intValue]) {
             case TaskStatusFinish:
             {
-//                if(weakSelf.removeFinish)
-//                   [self removeTask:block_task];
+                if(weakSelf.removeFinish)
+                   [self removeTask:block_task];
+                [[NSNotificationCenter defaultCenter] postNotificationName:UPLOAD_FINISH_NOTIFICATION object:nil userInfo:block_task];
             }
                 break;
             case TaskStatusError: