当我的应用处于后台时,我可以保持视频上传过程吗?

时间:2016-05-12 08:29:44

标签: ios xcode

我的iOS应用在我的视频上传正在进行时崩溃,即使没有调用didEnterbackground方法,应用也会进入后台。 有没有人知道导致它的原因以及即使我的应用程序处于后台,我该如何管理上传。

2 个答案:

答案 0 :(得分:1)

你尝试过后台会话吗?像这样:

let configuration = NSURLSessionConfiguration.backgroundSessionConfigurationWithIdentifier("com.you.uoload")
let session = NSURLSession(configuration: configuration, delegate: nil, delegateQueue: NSOperationQueue.mainQueue())

答案 1 :(得分:1)

您应该使用NSURLSessionUploadTask进行异步上传请求。

您的请求可能是同步的,这也就是我认为它产生错误的原因。

使用AFNetworking,您可以执行类似的操作,

 NSMutableURLRequest *request = [[AFHTTPRequestSerializer serializer] multipartFormRequestWithMethod:@"POST" URLString:@"http://example.com/upload" parameters:nil constructingBodyWithBlock:^(id<AFMultipartFormData> formData) {
    [formData appendPartWithFileURL:[NSURL fileURLWithPath:@"file://path/to/image.jpg"] name:@"file" fileName:@"filename.jpg" mimeType:@"image/jpeg" error:nil];
} error:nil];

AFURLSessionManager *manager = [[AFURLSessionManager alloc] initWithSessionConfiguration:[NSURLSessionConfiguration defaultSessionConfiguration]];

NSURLSessionUploadTask *uploadTask;
uploadTask = [manager
          uploadTaskWithStreamedRequest:request
          progress:^(NSProgress * _Nonnull uploadProgress) {
              // This is not called back on the main queue.
              // You are responsible for dispatching to the main queue for UI updates
              dispatch_async(dispatch_get_main_queue(), ^{
                  //Update the progress view
                  [progressView setProgress:uploadProgress.fractionCompleted];
              });
          }
          completionHandler:^(NSURLResponse * _Nonnull response, id  _Nullable responseObject, NSError * _Nullable error) {
              if (error) {
                  NSLog(@"Error: %@", error);
              } else {
                  NSLog(@"%@ %@", response, responseObject);
              }
          }];

  [uploadTask resume];

您可以参考this answer了解更多详情。

希望这会有所帮助:)