3 Stimmen

IOS Store-und-Forward-Rahmenwerk für Offline-HTTP-POST-Anfragen

Gibt es einen Weg (vermutlich eine Bibliothek?), um HTTP POST-Anfragen zu speichern, wenn der Benutzer offline ist, und die POST-Anfragen dann zu übertragen, wenn der Benutzer wieder online ist?

(Ich muss die Antwort des Servers nicht lesen, außer insofern, als ich die Anfragen erneut in die Warteschlange stellen möchte, wenn die POST-Anfrage fehlschlägt.)

1voto

SwiftArchitect Punkte 45044

Ja, es gibt eine solche Bibliothek:

http://blog.mugunthkumar.com/products/ios-framework-introducing-mknetworkkit/

Es ist widerstandsfähig gegen Abbrüche und Neustarts Ihrer App und wird weiterhin versuchen, Ihre Anfrage zu senden, bis ein persistenter Fehler auftritt (wie z. B. ein Serverausfall, kein Netzwerk)

0voto

Caleb Punkte 121906

Gibt es einen Weg (vermutlich eine Bibliothek?), um HTTP-POST-Anfragen zu speichern, wenn der Benutzer offline ist, und dann die POST-Anfragen zu übertragen, wenn der Benutzer wieder online ist?

Anstatt die Anfragen selbst zu speichern, denke ich, dass Ihre beste Option darin besteht, die Informationen zu speichern, die für jede Anfrage benötigt werden. Wenn Sie die Daten für jede Anfrage in einem archivierbaren Objekt verpacken, können Sie diese Objekte einer Warteschlange hinzufügen, um sie zu versenden. Auf diese Weise können Sie die gesamte Warteschlange archivieren (Sie können ein veränderbares Array für die Warteschlange verwenden) und bei erneutem Start wieder einlesen. Verwenden Sie die Warteschlange als Eingabe für eine separate Operation, die nichts anderes tut, als Objekte aus der Warteschlange zu nehmen und die entsprechenden Anfragen zu senden, wenn das Gerät online ist.

0voto

Dan Fabulich Punkte 34037

In iOS 7 kann es NSURLSession tun. Es kann sogar die Anforderung im Hintergrund ausführen, wenn die App gestoppt worden ist.

0voto

Patrick O'Malley Punkte 101

Ziemlich spät zur Party hier, aber ich habe ein Pod für unsere internen Apps geschrieben, das im Grunde genau das macht - https://cocoapods.org/pods/OfflineRequestManager. Die tatsächliche Netzwerkanfrage wird immer noch von dem übernommen, der dem OfflineRequest-Protokoll entspricht, aber das Pod bietet einen einfachen Weg, um die Anfragen in die Warteschlange zu stellen und sicherzustellen, dass sie weiterhin versuchen, bis sie erfolgreich sind, einschließlich des Speicherns auf die Festplatte.

Der einfachste Anwendungsfall würde ungefähr so aussehen, obwohl die meisten tatsächlichen Fälle (Speichern auf die Festplatte, spezifische Anforderungsdaten usw.) ein paar mehr Hürden zu überwinden haben:

import OfflineRequestManager

class SimpleRequest: OfflineRequest {
    func perform(completion: @escaping (Error?) -> Void) {
        doMyNetworkRequest(withCompletion: { response, error in
            handleResponse(response)
            completion(error)
        })
    }
}
///////
OfflineRequestManager.defaultManager(queueRequest: SimpleRequest())

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X