I am rather new to Objective-C development so please be patient!
I am trying to take data from a user & send that information to an external database. I have managed to work out how to push the data rather easily, but the issue is; due to the nature of my application, there is a high probability that the user will have no mobile connectivity while they're using it. How can I continuously check that the user has mobile connectivity, and then send the data when it's connected? My code for the action is below:
(Just to clarify, the action takes 10 readings of signal over 5 seconds, appends them to an array, calculates the average and the updates the location. In turn, the locationManager sends the data to a cloud service including the average signal reading.
    - (IBAction)buttonPressed:(id)sender {
            // Make Manager Delegate & Set Accuracy
            manager.delegate = self;
            manager.desiredAccuracy = kCLLocationAccuracyBest;
            // Call Timer
            myTimer = [NSTimer scheduledTimerWithTimeInterval:0.5
                                                       target:self
                                                     selector:@selector(arrayBuild)
                                                     userInfo:nil
                                                      repeats:YES];
            // Initialise Array
            resultsArray = [[NSMutableArray alloc]init];
    }
    #pragma mark CLLocationManagerDelegate Methods
    - (void)locationManager:(CLLocationManager *)manager didFailWithError:(NSError *)error {
            NSLog(@"Error: %@", error);
            NSLog(@"Failed to get location!");
    }
    -(void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation {
            NSLog(@"Location: %@",newLocation);
            if (curentLocation != nil) {
                // Code below uses a third party utility to submit data
                PFObject *Object = [PFObject objectWithClassName:@"Issue"];
                Object[@"Latitude"] = [NSString stringWithFormat:@"%.8f",curentLocation.coordinate.latitude];
                Object[@"Longitude"] = [NSString stringWithFormat:@"%.8f",curentLocation.coordinate.longitude];
                Object[@"Signal"] = [NSString stringWithFormat:@"%@",_avgNumber];
                [Object saveInBackground];
                // Update Text Fields
                self.latitude.text = [NSString stringWithFormat:@"%.8f",curentLocation.coordinate.latitude];
                self.longitude.text = [NSString stringWithFormat:@"%.8f",curentLocation.coordinate.longitude];
                self.signal.text = [NSString stringWithFormat:@"%@",_avgNumber];
            }
        // Stop the Location Update
        [manager stopUpdatingLocation];
    }
- (void)arrayBuild {
        loopCount++;
        if (loopCount >= 11) {
            // Find Average
            NSNumber *avg = [resultsArray valueForKeyPath:@"@avg.self"];
            _avgNumber = avg;
            // Change Text of Label to Average & Log
            self.signal.text = [NSString stringWithFormat:@"%@",_avgNumber];
            NSLog(@"%@",_avgNumber);
            // Update Location
            [manager startUpdatingLocation];
            // Invalidate Timer
            [myTimer invalidate];
            myTimer = nil;
        }else{
            // Declare Signal Strength
            float signalstrength = CTGetSignalStrength();
            // Individual Result & Convert to Integer
            NSString *result = [NSString stringWithFormat:@"%f", signalstrength];
            NSInteger resultInt = [result integerValue];
            // Add Object
            [resultsArray addObject:[NSNumber numberWithFloat:resultInt]];
            // Change Text of Label Each Second
            self.signal.text = [NSString stringWithFormat:@"%d",loopCount];
            NSLog(@"%f",signalstrength);
        }
    }
 
     
     
    