Les téléchargements à l'aide de backgroundSessionConfiguration et NSURLSessionUploadTask cause app crash
Je suis en train de la nouvelle fantaisie iOS 7 fond le téléchargement en utilisant NSURLSessionUploadTask et il semble fonctionner quand je les ai defaultSessionConfiguration, mais une fois que j'ai essayer backgroundSessionConfiguration il se bloque à la ligne où j'appelle uploadTaskWithRequest:
Voici l'exemple de code ci-dessous. Curieusement, alors qu'il ya une myriade de downloadTaskWithRequest exemples en ligne, je ne trouve pas un seul qui combine de fond et de téléchargement d'ensemble.
//Create a session w/background settings
NSURLSessionConfiguration *config = [NSURLSessionConfiguration backgroundSessionConfiguration:@"identifierString.foo"];
NSURLSession *upLoadSession = [NSURLSession sessionWithConfiguration:config delegate:self delegateQueue:nil];
//Create a file to upload
UIImage *image = [UIImage imageNamed:@"[email protected]"];
NSData *imageData = UIImagePNGRepresentation(image);
NSFileManager *fileManager = [NSFileManager defaultManager];
NSArray *URLs = [fileManager URLsForDirectory:NSDocumentDirectory inDomains:NSUserDomainMask];
NSString *documentsDirectory = [[URLs objectAtIndex:0] absoluteString];
NSString *filePath = [documentsDirectory stringByAppendingString:@"testfile.png"];
[imageData writeToFile:filePath atomically:YES];
NSMutableURLRequest *request = [[NSMutableURLRequest alloc] initWithURL:[NSURL URLWithString:@"https://file.upload/destination"]];
[request setHTTPMethod:@"PUT"];
NSURLSessionUploadTask *uploadTask = [upLoadSession uploadTaskWithRequest:request fromFile:[NSURL URLWithString:filePath] completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) {
//code
}];
[uploadTask resume];
Ce code plante à la ligne avec uploadTaskWithRequest: ... juste avant qu'il arrive à la reprise de la ligne à la fin.
Curieusement, cela semble fonctionner OK lorsque je utiliser n'importe quelle config de type autre que backgroundSessionConfiguration. Besoin d'aide!
Merci d'avance.
OriginalL'auteur Dinkman123 | 2014-02-13
Vous devez vous connecter pour publier un commentaire.
Ok, donc c'était un peu juste pour moi d'être stupide et de ne pas approfondie ici:
1) j'avais mis une exception point d'arrêt pour obtenir les traces de pile qui a été m'empêche de voir les réels erreur d'exception impression -- oups.
2) ne Peut pas utiliser la version de uploadTaskWithRequest qui a un rappel de fin d'un backgroundSessionConfiguration (pas surprenant, mais pas encore bien documenté).
3) Écrivez vos PNG données dans /var/... et de les fournir à uploadTaskWithRequest avec file:///var/... (c'est juste maladroit, parce que vous n'avez pas souvent besoin de convertir entre les deux pour une seule séquence de commandes)
Heureux de mettre en place un NSUrlSessionUploadTask exemple de code ici, puisqu'il semble être à zéro sur l'ensemble de la interwebs. LMK si quelqu'un veut que.
+1, Merci pour votre pointeurs, je suis coincé dans la même tâche,posté ma question here mais n'a pas obtenu une réponse satisfaisante, pouvez-vous s'il vous plaît mettez votre exemple de code?
Eu vous. Voir la réponse que je viens de poster.
Exactement les mêmes problèmes que j'ai rencontré. J'ai écrit un post de blog parce qu'il est tellement en manque d'infos sur cette fonctionnalité. medium.com/@KyleRStewart/zombie-uploads-with-ios-dd3b1f6b66
pouvez-vous répondre à cette stackoverflow.com/questions/25311736/...
OriginalL'auteur Dinkman123
Comme demandé, de fond en téléchargeant exemple. Assurez-vous de mettre en œuvre NSURLSessionDelegate et NSURLSessionTaskDelegate en tant que de besoin.
Vous utilisez NSURL fileURLWithPath pour ajouter le fichier:// pour vous au lieu de codage en dur elle avec un stringWithFormat. Donc, il devrait ressembler à ceci à la place: uploadTask = [session uploadTaskWithRequest:demande fromFile:[NSURL fileURLWithPath:dataSrcImagePath];
OriginalL'auteur Dinkman123