2013-04-03 10 views
6

Mi chiedevo se fosse possibile continuare il caricamento di un file in background. ad esempio quando l'utente mette l'iPad in stato di stop, l'upload continua ...Continua il processo di caricamento in background IOS

Ho fatto questa domanda anche nei forum di Dropbox poiché sto caricando su dropbox utilizzando l'API di base. Questa è stata la risposta:

"Utilizzando l'API di base, il caricamento è interamente sotto il controllo della tua app. Puoi richiedere che il sistema operativo mantenga viva la tua app in background, che consentirà per un massimo di 10 minuti prima sospendere la tua app. Puoi vedere ulteriori informazioni qui: https://developer.apple.com/library/ios/#documentation/iphone/conceptual/iphoneosprogrammingguide/ManagingYourApplicationsFlow/ManagingYourApplicationsFlow.html Se si utilizza la nuova API di sincronizzazione, tutto verrà eseguito automaticamente dall'API. "

Sto postando qui perché non ho capito cosa intendessero con 'richiesta che il sistema operativo mantenga viva la tua app in background'. Questo significa che devo richiedere all'ios un codice specifico, e non ha nulla a che fare con dropbox, o è una particolare funzione dropbox?

+0

Latta ti colleghi alla tua domanda nel forum di Dropbox? –

risposta

23

è necessario chiedere al sistema operativo di mantenere l'applicazione in esecuzione, non ha nulla a che fare con Dropbox ... Quando si avvia il caricamento, fare questo:

UIBackgroundTaskIdentifier bgTask = [[UIApplication sharedApplication] beginBackgroundTaskWithExpirationHandler:^{ 
    [[UIApplication sharedApplication] endBackgroundTask:bgTask]; 
}]; 

... e memorizzare il bgTask da qualche parte. Poi, quando il caricamento viene completato o non riesce, fare questo:

[[UIApplication sharedApplication] endBackgroundTask:bgTask]; 

Che dirà il sistema operativo per mantenere la vostra applicazione in esecuzione, perché c'è un processo in background in esecuzione ...

+3

È importante ricordare che: "Ogni attività contrassegnata avrà circa 10 minuti (totale) per completare le sue azioni, molto tempo per gli usi più comuni. Dopo il completamento del tempo, l'applicazione viene sospesa e trattata come qualsiasi altra applicazione sospesa. " (Citato da questo link: http://www.codeproject.com/Articles/124159/Hour-21-Building-Background-Aware-Applications) –

+0

Grazie, risposta molto accurata, ma ho un dubbio: come posso determinare se l'upload è completo se non sono nell'app stessa? Le altre funzioni della mia app non verranno bloccate? Posso inserire la chiamata endBackgroundTask in un normale metodo void? – Alessandro

+0

Sì, se hai chiamato la prima funzione mentre la tua app era in primo piano, quando entra nello sfondo continuerà a funzionare normalmente finché non chiami la seconda funzione per far sapere al sistema che hai finito ... – jjv360

0

Il nuovo SDK di Dropbox offre la funzionalità di caricamento in background/download di file. Prova a utilizzare il nuovo SDK. Buona programmazione.

+0

Stai parlando dell'SDK di Dropbox iOS? Perché non riesco a trovare il supporto per caricare/scaricare file in background nell'ultima versione 1.3.5. – Dev

+0

Quindi prova usando beginBackgroundTaskWithExpirationHandler per il caricamento/il download. Questo potrebbe aiutarti. –

-2

Immagino che questo ha funzionato per me.

  1. disabilitato blocco automatico
  2. disabilitato screentimeout
  3. collegato al potere
  4. Abilita servizi di localizzazione su iPhone per il set e lo sfondo opzione di esecuzione
  5. sinistra dell'app set aperto
  6. più di 2000 foto & caricamento video con successo
Problemi correlati