title: Amazon s3 transfer utility not working in background
body: <p>i have to upload a large file like more then 4gb onto amazon s3. amazon sdk giving two options for uploading and downloading from s3. one is awss3transfermanager and other is awss3transferutility. i actually want to use awss3transferutility because i want the app to continue uploading in background.  awss3transferutility has two functions  uploadFile and other uploadFileUsingMultiPart . uploadFile function actually works in background but uploading starts from 0 on network changes or drop. For that reason i am curretly using uploadFileUsingMultiPart function so the uploading won't get restart from 0 on networks fail. but this  uploadFileUsingMultiPart function won't continue uploading in background. In their latest release they introduce this uploadFileUsingMultiPart function inside awstransferutility. so i was expecting that uploading will continue in background with network fail but it won't continue in background. i just wanted to ask is it sdk related bug or i am doing something wrong </p>
  
  <p>this is the code i am curretly </p>
  
  <p>//in app delegate</p>
  
  <pre><code>- (void)application:(UIApplication *)application handleEventsForBackgroundURLSession:(NSString *)identifier completionHandler:(void (^)(void))completionHandler {
      [AWSS3TransferUtility interceptApplication:application
             handleEventsForBackgroundURLSession:identifier
                               completionHandler:completionHandler];
  }
  </code></pre>
  
  <p>// in ViewController </p>
  
  <pre><code>- (void)viewDidLoad {
      [super viewDidLoad];
      // Do any additional setup after loading the view, typically from a nib.
      [[NSNotificationCenter defaultCenter] addObserver:self
                                               selector:@selector(reachabilityChanged:)
                                                   name:kReachabilityChangedNotification
                                                 object:nil];
  
      __weak typeof(self) weakSelf = self;
      expression = [AWSS3TransferUtilityMultiPartUploadExpression new];
      expression.progressBlock = ^(AWSS3TransferUtilityMultiPartUploadTask *  task, NSProgress *  progress) {
         typeof(self) newWeakSelf = weakSelf;
  
         dispatch_async(dispatch_get_main_queue(), ^{
             // Do something e.g. Alert a user for transfer completion.
  
             NSLog(@"progress value %f",progress.fractionCompleted);
             // On failed uploads, `error` contains the error object.
             newWeakSelf-&gt;progressView.progress = progress.fractionCompleted;
         });
     };
  
     completionHandler = ^(AWSS3TransferUtilityMultiPartUploadTask *task, NSError *error) {
         dispatch_async(dispatch_get_main_queue(), ^{
             NSLog(@"uploading completed ");
         });
     };
  
  
     AWSCognitoCredentialsProvider *credentialsProvider = [[AWSCognitoCredentialsProvider alloc] initWithRegionType:AWSRegionUSEast1 identityPoolId:@"us-west-1:7a24b199-e4b2-4657-9627-sdfs4ssdff"];
     AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUSEast1 credentialsProvider:credentialsProvider];
     // AWSServiceManager.defaultServiceManager.defaultServiceConfiguration = configuration;
  
     AWSS3TransferUtilityConfiguration *tfConfig = [AWSS3TransferUtilityConfiguration new];
     tfConfig.retryLimit = 5;
     tfConfig.multiPartConcurrencyLimit = [NSNumber numberWithInteger:3];
     [AWSS3TransferUtility registerS3TransferUtilityWithConfiguration:configuration transferUtilityConfiguration:tfConfig forKey:@"transfer-utility-with-advanced-options"];
  
     transferUtility = [AWSS3TransferUtility S3TransferUtilityForKey:@"transfer-utility-with-advanced-options"];
  }
  
  -(void)startUploading {
      NSString *filePath =   [[NSBundle mainBundle] pathForResource:@"test" ofType:@"mp4"];
      NSURL *fileURL =  [NSURL fileURLWithPath:filePath];
      NSString *fileContentTypeStr = @"video/mp4";
  
      //  NSData *data = [NSData dataWithContentsOfURL:fileURL];
      //  AWSTask *task = [transferUtility uploadDataUsingMultiPart:data bucket:@"sibme-development" key:@"temp/testfilenew/testfile1.mp4" contentType:fileContentTypeStr expression:expression completionHandler:completionHandler ];
  
      AWSTask *task = [transferUtility uploadFileUsingMultiPart:fileURL bucket:@"development" key:@"temp/testfilenew/testfile.mp4" contentType:fileContentTypeStr expression:expression completionHandler:completionHandler];
  
      [task continueWithBlock:^id _Nullable(AWSTask * _Nonnull t) {
          if (t.result) {
            self-&gt;uplaodTask = t.result;
          }
          return nil;
      }];
  }
  </code></pre>