Ho implementato NSURLSession
per scaricare file di dimensioni piuttosto grandi dai nostri server. Ora che lavoro in primo piano o in background e torno all'app, le transazioni stanno funzionando e stanno finendo.Come riprendere il processo di download di NSURLSession dopo l'interruzione forzata dell'app e il riavvio dell'app:
Ma se I forzare l'uscita l'app utilizzando la schermata multitasking e riaprire nuovamente l'app. il processo di download non è sempre finito anche se, come ho capito dalla documentazione, dovrebbe, ecco ciò che la documentazione dello stato:
Se un'applicazione iOS è terminata dal sistema e rilanciato, l'applicazione può utilizzare lo stesso identificativo per creare un nuovo oggetto di configurazione e una sessione e recuperare lo stato dei trasferimenti in corso al momento della chiusura. Questo comportamento si applica solo per la normale chiusura dell'app da parte del sistema. Se l'utente termina l'app dalla schermata multitasking, il sistema annulla tutti i trasferimenti in background della sessione. Inoltre, il sistema non riavvia automaticamente le app che sono state abbandonate forzatamente dall'utente. L'utente deve riavviare esplicitamente l'app prima che i trasferimenti possano iniziare nuovamente.
Significato se rilanciare l'applicazione della transazione prima che la forzare lo spegnimento dovrebbe iniziare di nuovo, o sono? C'è un'operazione aggiuntiva che devo impegnarmi per funzionare?
UPDATE: Mi sono imbattuto in questo progetto: https://github.com/Heikowi/HWIFileDownload#force-quit
che indica:
Forzata
Dopo l'applicazione è stata uccisa da parte dell'utente, download NON continua in background. Su iOS 7 (e successivi) i dati di ripresa vengono restituiti.
Significato c'è un modo per ricevere i dati di ripresa anche se l'applicazione è stata uccisa dall'utente in background. Solo il progetto è scritto in Objective-C e non riesco a capire cosa stanno facendo per ottenere questo. Qualsiasi aiuto sarebbe apprezzato. Grazie in anticipo.
In realtà non è troppo tardi, grazie per la tua risposta. Potresti per favore elaborare come dovrei usare questi dati ricevuti per riprendere il download. Come hai detto tu, lo ricevo sul metodo didCompleteWithError. Devo avviare immediatamente un'altra attività utilizzando il downloadTaskWithResumeData dal metodo didCompleteWithError o ho bisogno di salvare l'oggetto resumeData NSData in UserDefaults e utilizzarlo al prossimo avvio dell'applicazione? –
Il didCompleteWithError verrà chiamato non appena si riavvia l'app non quando si forza la chiusura. Quindi puoi semplicemente assegnare i dati a una proprietà e controllare se questi dati esistono quando vuoi avviare il download. –
dal processo di debug vedo che raggiungo questo metodo prima che l'applicazione venga effettivamente uccisa e non quando è stata avviata. –