diff --git a/ipbc-Client/ipbc-Client.xcodeproj/project.xcworkspace/xcuserdata/gerrit.xcuserdatad/UserInterfaceState.xcuserstate b/ipbc-Client/ipbc-Client.xcodeproj/project.xcworkspace/xcuserdata/gerrit.xcuserdatad/UserInterfaceState.xcuserstate index afe339d..ebb949d 100644 Binary files a/ipbc-Client/ipbc-Client.xcodeproj/project.xcworkspace/xcuserdata/gerrit.xcuserdatad/UserInterfaceState.xcuserstate and b/ipbc-Client/ipbc-Client.xcodeproj/project.xcworkspace/xcuserdata/gerrit.xcuserdatad/UserInterfaceState.xcuserstate differ diff --git a/ipbc-Client/ipbc-Client/WebserviceClient.h b/ipbc-Client/ipbc-Client/WebserviceClient.h index b54d2aa..e7d0736 100644 --- a/ipbc-Client/ipbc-Client/WebserviceClient.h +++ b/ipbc-Client/ipbc-Client/WebserviceClient.h @@ -13,6 +13,7 @@ NSTimer *updateTimer; NSString *usersIPv4; BOOL isNetworkAvailable; + BOOL isRequestRunning; } -(BOOL)updateDomain; diff --git a/ipbc-Client/ipbc-Client/WebserviceClient.m b/ipbc-Client/ipbc-Client/WebserviceClient.m index 3cc6aa1..54531f9 100644 --- a/ipbc-Client/ipbc-Client/WebserviceClient.m +++ b/ipbc-Client/ipbc-Client/WebserviceClient.m @@ -19,13 +19,24 @@ userInfo: nil repeats: YES]; + isRequestRunning = NO; + isNetworkAvailable = NO; [self checkNetworkAvailability]; } - (void)tick:(NSTimer *)theTimer { - if(isNetworkAvailable) { + if(isNetworkAvailable && !isRequestRunning) { [self updateDomain]; + } else { + // else for logging only + + if(!isNetworkAvailable) { + NSLog(@"no ip update, 'cause network unavailable"); + } + if(isRequestRunning) { + NSLog(@"no ip update, 'cause of active request"); + } } } @@ -82,16 +93,14 @@ } else { NSLog(@"compare stored %@ with %@", storedIPv4, fetchedIPv4); BOOL changed = [storedIPv4 isEqualToString:fetchedIPv4]; - - if(changed) { - [[NSUserDefaults standardUserDefaults] setObject:fetchedIPv4 forKey:@"value.ip.ipv4"]; - } - return changed; } } -(BOOL)doWebServiceUpdate { + NSLog(@"update ip to %@", usersIPv4); + isRequestRunning = YES; + NSString *settingTempName = [[NSUserDefaults standardUserDefaults] stringForKey:@"setting.name"]; NSString *settingTempToken = [[NSUserDefaults standardUserDefaults] stringForKey:@"setting.token"]; @@ -108,25 +117,21 @@ NSData *postData = [NSJSONSerialization dataWithJSONObject:tmp options:0 error:&error]; [request setHTTPBody:postData]; - NSLog(@"update ip to %@", usersIPv4); - //NSURLConnection *connection = [NSURLConnection connectionWithRequest:request delegate:self]; - NSData *data = [NSURLConnection sendSynchronousRequest:request returningResponse:nil error:nil]; + /*NSData *resultData = [NSURLConnection sendSynchronousRequest:request returningResponse:nil error:nil]; + NSString *strData = [[NSString alloc]initWithData:resultData encoding:NSUTF8StringEncoding]; + NSLog(@"resultData: %@", strData);*/ + + [NSURLConnection sendAsynchronousRequest:request queue:[NSOperationQueue mainQueue] completionHandler:^(NSURLResponse *response, NSData *resultData, NSError *error) { + NSString *strData = [[NSString alloc]initWithData:resultData encoding:NSUTF8StringEncoding]; + NSLog(@"resultData: %@", strData); + + // locally save posted ip + [[NSUserDefaults standardUserDefaults] setObject:usersIPv4 forKey:@"value.ip.ipv4"]; + + isRequestRunning = NO; + }]; - NSString *strData = [[NSString alloc]initWithData:data encoding:NSUTF8StringEncoding]; - NSLog(@"data: %@", strData); return YES; - - /*NSString *post = [NSString stringWithFormat:@"name=%@&token=%@", settingTempName, settingTempToken]; - NSData *postData = [post dataUsingEncoding:NSASCIIStringEncoding allowLossyConversion:YES]; - - NSString *postLength = [NSString stringWithFormat:@"%lu", (unsigned long)[postData length]]; - - NSMutableURLRequest *request = [[NSMutableURLRequest alloc] init]; - [request setURL:[NSURL URLWithString:WS_RESOURCE]]; - [request setHTTPMethod:@"POST"]; - [request setValue:postLength forHTTPHeaderField:@"Content-Length"]; - [request setValue:@"application/x-www-form-urlencoded" forHTTPHeaderField:@"Content-Type"]; - [request setHTTPBody:postData];*/ } -(NSString *)fetchIPv4 {