Firebase bagagli sostiene here nella documentazione iOS cheFirebase bagagli caricamento non riesce in avverse condizioni di rete IOS
effettua upload e download a prescindere dalla qualità della rete. Caricamenti e download sono solidi, il che significa che si riavviano dove si sono fermati
quindi ci si aspetterebbe che maneggi una perdita di connessione durante il caricamento, ma non sembra.
Con il seguente codice Swift in iOS, sono in grado di eseguire un caricamento corretto quando c'è una connessione, ma se il dispositivo non ha una connessione o se è mai disconnesso dalla rete va al condizione di fallimento.
let storage = FIRStorage.storage().referenceForURL("VALID_URL_REMOVED")
let imagesRef = storage.child("images/test.jpg")
let data = UIImageJPEGRepresentation(observationImage!, 0.7);
let uploadTask = imagesRef.putData(data!, metadata: nil)
uploadTask.observeStatus(.Progress) { snapshot in
// Upload reported progress
if let progress = snapshot.progress {
let percentComplete = 100.0 * Double(progress.completedUnitCount)/Double(progress.totalUnitCount)
print("percent \(percentComplete)")
}
}
uploadTask.observeStatus(.Success) { snapshot in
// Upload completed successfully
print("success")
}
uploadTask.observeStatus(.Failure) { snapshot in
print("error")
print(snapshot.error?.localizedDescription)
}
L'output di debug per questo codice è il seguente.
/*
percent 0.0
percent 0.0044084949781492
2016-06-30 11:49:16.480 Removed[5020:] <FIRAnalytics/DEBUG> Network status has changed. Code, status: 1, Disconnected
percent 0.0044084949781492
error
Optional("An unknown error occurred, please check the server response.")
*/
archiviazione non in linea del database in Tempo Reale di Firebase è inoltre istituito con il seguente codice, ma io sono sicuro di se questo è relativo.
FIRDatabase.database().persistenceEnabled = true
Ho anche provato impostare manualmente il timeout come indicato nelle risposte alle this domanda utilizzando le seguenti linee, con nessun cambiamento.
let config = FIRStorage()
config.maxUploadRetryTime = 1000000
C'è un modo per farlo gestire queste disconnessioni senza implementare la funzionalità da zero? Mi sto perdendo qualcosa?
Sono probabilmente frainteso, ma non mi sembra che aggiungere osservatori per la pausa e riprendere risolva il problema del mancato caricamento. D'altra parte, potrebbe essere solo che uno deve sospendere e riprendere manualmente quando lo stato della rete cambia. – ThatGuyJames