Commit b990201011557c9dced3871142dd1580b15ec70c
1 parent
9ce31e4373
Exists in
master
change request api createLog
Showing 2 changed files with 82 additions and 14 deletions Side-by-side Diff
LifeLog/LifeLog/HomeViewController.m
| ... | ... | @@ -15,6 +15,8 @@ |
| 15 | 15 | #import <MBProgressHUD/MBProgressHUD.h> |
| 16 | 16 | #import "ServerAPI.h" |
| 17 | 17 | |
| 18 | +static NSInteger maxRequest = 20; | |
| 19 | + | |
| 18 | 20 | @interface HomeViewController () |
| 19 | 21 | { |
| 20 | 22 | MBProgressHUD *progressHud; |
| 21 | 23 | |
| ... | ... | @@ -229,15 +231,12 @@ |
| 229 | 231 | |
| 230 | 232 | [weakSelf.motionActivityManager queryActivityStartingFromDate:startDate toDate:endDate toQueue:_operationQueue withHandler:^(NSArray<CMMotionActivity *> * _Nullable activities, NSError * _Nullable error) { |
| 231 | 233 | if (error || activities.count <= 0) { |
| 232 | - weakSelf.totalRequest = 0; | |
| 233 | - weakSelf.countComplete = 0; | |
| 234 | 234 | dispatch_async(dispatch_get_main_queue(), ^{ |
| 235 | 235 | [weakSelf updateStepUI]; |
| 236 | 236 | }); |
| 237 | 237 | return ; |
| 238 | 238 | } |
| 239 | 239 | // set EndDate |
| 240 | - weakSelf.totalRequest = (int)activities.count; | |
| 241 | 240 | NSMutableArray *arrayActivities = [[NSMutableArray alloc] init]; |
| 242 | 241 | for (int i = 0; i < activities.count; i++) { |
| 243 | 242 | CMMotionActivity *activity = [activities objectAtIndex:i]; |
| ... | ... | @@ -253,9 +252,10 @@ |
| 253 | 252 | [arrayActivities addObject:activityExtra]; |
| 254 | 253 | } |
| 255 | 254 | // PhongNV |
| 256 | - // weakSelf.currentIndex = 0; | |
| 257 | - // [weakSelf saveStepFromActivityExtras:arrayActivities]; | |
| 258 | - | |
| 255 | + weakSelf.currentIndex = 0; | |
| 256 | + [weakSelf save20objectOfActivityExtras:arrayActivities]; | |
| 257 | + //[weakSelf saveStepFromActivityExtras:arrayActivities]; | |
| 258 | + /* | |
| 259 | 259 | for (CMMotionActivityExtra *activityExtra in arrayActivities) { |
| 260 | 260 | [weakSelf.pedometer queryPedometerDataFromDate:activityExtra.activity.startDate toDate:activityExtra.endDate withHandler:^(CMPedometerData * _Nullable pedometerData, NSError * _Nullable error) { |
| 261 | 261 | NSInteger numberStep = [pedometerData.numberOfSteps integerValue]; |
| ... | ... | @@ -277,7 +277,6 @@ |
| 277 | 277 | else { |
| 278 | 278 | // unknown |
| 279 | 279 | } |
| 280 | - weakSelf.countComplete += 1; | |
| 281 | 280 | |
| 282 | 281 | // save step to server |
| 283 | 282 | if (numberStep > 0) { |
| 284 | 283 | |
| ... | ... | @@ -296,12 +295,84 @@ |
| 296 | 295 | }); |
| 297 | 296 | }]; |
| 298 | 297 | } |
| 299 | - | |
| 298 | + */ | |
| 300 | 299 | }]; |
| 301 | 300 | }); |
| 302 | 301 | } |
| 303 | 302 | } |
| 304 | 303 | |
| 304 | +- (void)complete20Request:(NSArray *)activities { | |
| 305 | + if (self.totalRequest == self.countComplete) { | |
| 306 | + self.totalRequest = 0; | |
| 307 | + self.countComplete = 0; | |
| 308 | + self.currentIndex++; | |
| 309 | + [self save20objectOfActivityExtras:activities]; | |
| 310 | + } | |
| 311 | +} | |
| 312 | +- (void)save20objectOfActivityExtras:(NSArray *)activities | |
| 313 | +{ | |
| 314 | + int result = floor(activities.count / maxRequest); | |
| 315 | + if (activities.count <= 0 || self.currentIndex > result) { | |
| 316 | + self.totalRequest = 0; | |
| 317 | + self.countComplete = 0; | |
| 318 | + self.currentIndex = 0; | |
| 319 | + dispatch_async(dispatch_get_main_queue(), ^{ | |
| 320 | + [self updateStepUI]; | |
| 321 | + }); | |
| 322 | + return; | |
| 323 | + } | |
| 324 | + | |
| 325 | + HomeViewController __weak *weakSelf = self; | |
| 326 | + for (NSInteger index = self.currentIndex*maxRequest; index < self.currentIndex*maxRequest + maxRequest; index++) { | |
| 327 | + if ((self.currentIndex*maxRequest + maxRequest) >= activities.count) { | |
| 328 | + self.totalRequest = (int)(activities.count - self.currentIndex*maxRequest); | |
| 329 | + } | |
| 330 | + else { | |
| 331 | + self.totalRequest = (int)maxRequest; | |
| 332 | + } | |
| 333 | + if (index < activities.count) { | |
| 334 | + CMMotionActivityExtra *activityExtra = [activities objectAtIndex:index]; | |
| 335 | + [self.pedometer queryPedometerDataFromDate:activityExtra.activity.startDate toDate:activityExtra.endDate withHandler:^(CMPedometerData * _Nullable pedometerData, NSError * _Nullable error) { | |
| 336 | + if (weakSelf == nil) { | |
| 337 | + return ; | |
| 338 | + } | |
| 339 | + NSInteger numberStep = [pedometerData.numberOfSteps integerValue]; | |
| 340 | + int mode = 1; | |
| 341 | + if (activityExtra.activity.cycling) { | |
| 342 | + mode = 3; | |
| 343 | + } | |
| 344 | + else if (activityExtra.activity.walking) { | |
| 345 | + mode = 1; | |
| 346 | + } | |
| 347 | + else if (activityExtra.activity.running) { | |
| 348 | + mode = 2; | |
| 349 | + } | |
| 350 | + else { | |
| 351 | + // unknown | |
| 352 | + } | |
| 353 | + // save step to server | |
| 354 | + if (numberStep > 0) { | |
| 355 | + NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; | |
| 356 | + [dateFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"]; | |
| 357 | + NSString *dateBegin = [dateFormatter stringFromDate:activityExtra.activity.startDate]; | |
| 358 | + NSString *dateEnd = [dateFormatter stringFromDate:activityExtra.endDate]; | |
| 359 | + [[ServerAPI server] requestCreateLog:mode withStep:(int)numberStep startDate:dateBegin endDate:dateEnd CompletionHandler:^(NSError *error) { | |
| 360 | + if (error) { | |
| 361 | + NSLog(@"Error: %@", error); | |
| 362 | + } | |
| 363 | + weakSelf.countComplete++; | |
| 364 | + [weakSelf complete20Request:activities]; | |
| 365 | + }]; | |
| 366 | + } | |
| 367 | + else { | |
| 368 | + weakSelf.countComplete++; | |
| 369 | + [weakSelf complete20Request:activities]; | |
| 370 | + } | |
| 371 | + }]; | |
| 372 | + } | |
| 373 | + } | |
| 374 | +} | |
| 375 | + | |
| 305 | 376 | - (void)saveStepFromActivityExtras:(NSArray *)activities |
| 306 | 377 | { |
| 307 | 378 | if (self.currentIndex >= activities.count) { |
| ... | ... | @@ -331,7 +402,6 @@ |
| 331 | 402 | else { |
| 332 | 403 | // unknown |
| 333 | 404 | } |
| 334 | - self.countComplete += 1; | |
| 335 | 405 | // save step to server |
| 336 | 406 | if (numberStep > 0) { |
| 337 | 407 | NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; |
| ... | ... | @@ -355,11 +425,7 @@ |
| 355 | 425 | |
| 356 | 426 | - (void)updateStepUI |
| 357 | 427 | { |
| 358 | - if (self.totalRequest == self.countComplete) { | |
| 359 | - [self requestTopByDate:self.dateCurrent]; | |
| 360 | - self.countComplete = 0; | |
| 361 | - self.totalRequest = 0; | |
| 362 | - } | |
| 428 | + [self requestTopByDate:self.dateCurrent]; | |
| 363 | 429 | } |
| 364 | 430 | |
| 365 | 431 | - (void)saveDataStep7LastDay |
LifeLog/LifeLog/ServerAPI.m
| ... | ... | @@ -1037,7 +1037,9 @@ |
| 1037 | 1037 | |
| 1038 | 1038 | //NSURLSession *session = [NSURLSession sharedSession]; |
| 1039 | 1039 | NSURLSessionConfiguration *defaultConfiguration = [NSURLSessionConfiguration defaultSessionConfiguration]; |
| 1040 | + [defaultConfiguration setHTTPMaximumConnectionsPerHost:20]; | |
| 1040 | 1041 | NSOperationQueue *operationQueue = [NSOperationQueue mainQueue]; |
| 1042 | + operationQueue.maxConcurrentOperationCount = 20; | |
| 1041 | 1043 | NSURLSession *session = [NSURLSession sessionWithConfiguration:defaultConfiguration delegate:nil delegateQueue:operationQueue]; |
| 1042 | 1044 | NSURLSessionDataTask *task = [session dataTaskWithRequest:request |
| 1043 | 1045 | completionHandler: |