2016-05-12 11 views
0

Meine iOS-App stürzt ab, wenn mein Video hochgeladen wird und die App in den Hintergrund tritt, obwohl sie nicht die Methode didEnterbackground aufgerufen hat. Hat jemand eine Idee, was es verursacht und wie kann ich das hochladen, auch wenn meine App im Hintergrund ist?Kann ich den Video-Upload-Vorgang fortsetzen, wenn meine App im Hintergrund ist?

+0

bitte posten Absturz Details – Shubhank

+1

Sie 'NSURLSessionUploadTask' nutzen könnten große Datei hochladen (wie Video-Dateien), selbst wenn die Anwendung im Hintergrund ist. – Larme

+0

App wird nicht abstürzen, wenn ich verbunden bin. Also kann ich es nicht herausfinden. Es läuft perfekt auf dem Simulator oder einem angeschlossenen Gerät. –

Antwort

1

Haben Sie Hintergrundsitzung versucht? Wie folgt:

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

Sie sollten NSURLSessionUploadTask verwenden, um eine asynchrone Upload-Anfrage zu machen.

Ihre Anfrage kann synchron sein und deshalb produziert es Fehler, denke ich.

Mit AFNetworking Sie können etwas tun wie,

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]; 

Sie this answer um weitere Informationen beziehen.

Hope this helfen :)

Verwandte Themen