From b990201011557c9dced3871142dd1580b15ec70c Mon Sep 17 00:00:00 2001 From: phongnv Date: Wed, 11 Oct 2017 00:49:12 +0700 Subject: [PATCH] change request api createLog --- LifeLog/LifeLog/HomeViewController.m | 94 ++++++++++++++++++++++++++++++------ LifeLog/LifeLog/ServerAPI.m | 2 + 2 files changed, 82 insertions(+), 14 deletions(-) diff --git a/LifeLog/LifeLog/HomeViewController.m b/LifeLog/LifeLog/HomeViewController.m index 36caae6..63dc656 100644 --- a/LifeLog/LifeLog/HomeViewController.m +++ b/LifeLog/LifeLog/HomeViewController.m @@ -15,6 +15,8 @@ #import #import "ServerAPI.h" +static NSInteger maxRequest = 20; + @interface HomeViewController () { MBProgressHUD *progressHud; @@ -229,15 +231,12 @@ [weakSelf.motionActivityManager queryActivityStartingFromDate:startDate toDate:endDate toQueue:_operationQueue withHandler:^(NSArray * _Nullable activities, NSError * _Nullable error) { if (error || activities.count <= 0) { - weakSelf.totalRequest = 0; - weakSelf.countComplete = 0; dispatch_async(dispatch_get_main_queue(), ^{ [weakSelf updateStepUI]; }); return ; } // set EndDate - weakSelf.totalRequest = (int)activities.count; NSMutableArray *arrayActivities = [[NSMutableArray alloc] init]; for (int i = 0; i < activities.count; i++) { CMMotionActivity *activity = [activities objectAtIndex:i]; @@ -253,9 +252,10 @@ [arrayActivities addObject:activityExtra]; } // PhongNV - // weakSelf.currentIndex = 0; - // [weakSelf saveStepFromActivityExtras:arrayActivities]; - + weakSelf.currentIndex = 0; + [weakSelf save20objectOfActivityExtras:arrayActivities]; + //[weakSelf saveStepFromActivityExtras:arrayActivities]; + /* for (CMMotionActivityExtra *activityExtra in arrayActivities) { [weakSelf.pedometer queryPedometerDataFromDate:activityExtra.activity.startDate toDate:activityExtra.endDate withHandler:^(CMPedometerData * _Nullable pedometerData, NSError * _Nullable error) { NSInteger numberStep = [pedometerData.numberOfSteps integerValue]; @@ -277,7 +277,6 @@ else { // unknown } - weakSelf.countComplete += 1; // save step to server if (numberStep > 0) { @@ -296,12 +295,84 @@ }); }]; } - + */ }]; }); } } +- (void)complete20Request:(NSArray *)activities { + if (self.totalRequest == self.countComplete) { + self.totalRequest = 0; + self.countComplete = 0; + self.currentIndex++; + [self save20objectOfActivityExtras:activities]; + } +} +- (void)save20objectOfActivityExtras:(NSArray *)activities +{ + int result = floor(activities.count / maxRequest); + if (activities.count <= 0 || self.currentIndex > result) { + self.totalRequest = 0; + self.countComplete = 0; + self.currentIndex = 0; + dispatch_async(dispatch_get_main_queue(), ^{ + [self updateStepUI]; + }); + return; + } + + HomeViewController __weak *weakSelf = self; + for (NSInteger index = self.currentIndex*maxRequest; index < self.currentIndex*maxRequest + maxRequest; index++) { + if ((self.currentIndex*maxRequest + maxRequest) >= activities.count) { + self.totalRequest = (int)(activities.count - self.currentIndex*maxRequest); + } + else { + self.totalRequest = (int)maxRequest; + } + if (index < activities.count) { + CMMotionActivityExtra *activityExtra = [activities objectAtIndex:index]; + [self.pedometer queryPedometerDataFromDate:activityExtra.activity.startDate toDate:activityExtra.endDate withHandler:^(CMPedometerData * _Nullable pedometerData, NSError * _Nullable error) { + if (weakSelf == nil) { + return ; + } + NSInteger numberStep = [pedometerData.numberOfSteps integerValue]; + int mode = 1; + if (activityExtra.activity.cycling) { + mode = 3; + } + else if (activityExtra.activity.walking) { + mode = 1; + } + else if (activityExtra.activity.running) { + mode = 2; + } + else { + // unknown + } + // save step to server + if (numberStep > 0) { + NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; + [dateFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"]; + NSString *dateBegin = [dateFormatter stringFromDate:activityExtra.activity.startDate]; + NSString *dateEnd = [dateFormatter stringFromDate:activityExtra.endDate]; + [[ServerAPI server] requestCreateLog:mode withStep:(int)numberStep startDate:dateBegin endDate:dateEnd CompletionHandler:^(NSError *error) { + if (error) { + NSLog(@"Error: %@", error); + } + weakSelf.countComplete++; + [weakSelf complete20Request:activities]; + }]; + } + else { + weakSelf.countComplete++; + [weakSelf complete20Request:activities]; + } + }]; + } + } +} + - (void)saveStepFromActivityExtras:(NSArray *)activities { if (self.currentIndex >= activities.count) { @@ -331,7 +402,6 @@ else { // unknown } - self.countComplete += 1; // save step to server if (numberStep > 0) { NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; @@ -355,11 +425,7 @@ - (void)updateStepUI { - if (self.totalRequest == self.countComplete) { - [self requestTopByDate:self.dateCurrent]; - self.countComplete = 0; - self.totalRequest = 0; - } + [self requestTopByDate:self.dateCurrent]; } - (void)saveDataStep7LastDay diff --git a/LifeLog/LifeLog/ServerAPI.m b/LifeLog/LifeLog/ServerAPI.m index 496295c..1aaa8ff 100644 --- a/LifeLog/LifeLog/ServerAPI.m +++ b/LifeLog/LifeLog/ServerAPI.m @@ -1037,7 +1037,9 @@ NSURLSessionDataTask * searchTask; //NSURLSession *session = [NSURLSession sharedSession]; NSURLSessionConfiguration *defaultConfiguration = [NSURLSessionConfiguration defaultSessionConfiguration]; + [defaultConfiguration setHTTPMaximumConnectionsPerHost:20]; NSOperationQueue *operationQueue = [NSOperationQueue mainQueue]; + operationQueue.maxConcurrentOperationCount = 20; NSURLSession *session = [NSURLSession sessionWithConfiguration:defaultConfiguration delegate:nil delegateQueue:operationQueue]; NSURLSessionDataTask *task = [session dataTaskWithRequest:request completionHandler: -- 1.8.5.3