2017-07-20 4 views
2

In den Kommentaren der this Antwort war ich eine Diskussion über Background, die schließlich zu:Was ist der richtige Anwendungsfall für NSURLSessions-Hintergrundsitzungen?

Verwenden Background für alles, was zum Download nicht verwandt/upload. Verwenden Sie für den Upload/Download NSURLSessions backgroundSessions. Dann machte ich noch einen Kommentar zu fragen, warum nicht in den Hintergrund Sessions für alle Arten von Anfragen verwenden und mir wurde gesagt:

Für regelmäßige REST Anrufe, Hintergrund-Sitzungen sind viel weniger bequem, und in der Regel nicht das, was man sich wünschen kann. Sie sind kein Allzweckwerkzeug für jede Anfrage; Sie dienen zum Durchführen von Uploads und Downloads.

Warum sind Hintergrundsitzungen für REST-Anrufe weniger praktisch? Manchmal haben Sie möglicherweise ein langsames Internet mit einem riesigen Datenblock. Wäre es nicht praktisch, sicherzustellen, dass alle Datenübermittlungen durchgeführt werden?

Antwort

0

Ich bin mir nicht sicher, aber wenn Sie etwas wie eine Banktransaktion tun, würden Sie nicht eine backgroundSession verwenden möchten. Weil Sie möchten, dass der Benutzer über die Entscheidung informiert wird, bevor er sie verlässt. Benutzer sollten niemals davon ausgehen, dass sie App und App verlassen könnten. Auch sollten sie nicht den Eindruck haben, dass sie (von einem downloadTaskWithUrl) fortsetzen können.

Was aus irgendeinem Grund passiert, wenn der Benutzer eine Transaktion $ 2000 macht und trifft auf die Schaltfläche erwartet die Transaktion durchgehen, aber es nicht. Wenn der Benutzer das nächste Mal zum Bildschirm zurückkehrt, könnte er entweder aus Sicherheitsgründen ausgeloggt sein und niemals darüber informiert werden oder bleiben, aber er sieht eine Warnung, dass die Transaktion fehlgeschlagen ist. Und jetzt sind sie wie "Oh nein meine Tochter brauchte dringend 2000 Dollar. Sie muss immer noch auf das Geld warten!".

Sie möchten nicht zulassen, dass Benutzer schlechte Erwartungen haben *. Eher möchten Sie Benutzer, um volle Verantwortung selbst zu übernehmen und nicht Startbildschirm und warten auf den Erfolg/Misserfolg. Sobald der Benutzer also auf Übermittlungsübertragung klickt, wartet er darauf, dass er entweder erfolgreich wird und weitergeht oder Fehler sieht und wartet und untersucht den Grund, warum seine Transaktion nicht zustande gekommen ist.

Normalerweise vermitteln Sie die Möglichkeit eines Fehlers durch einen Spinner/Animation und das tatsächliche Ergebnis (Scheitern oder Erfolg) durch eine Warnung.


* Bad Erwartung ist: Jedes Mal, wenn ich die die Übertragung Submit-Button treffen wird es durchlaufen und es gibt 0 Chance des Scheiterns und keine Notwendigkeit für Sie, es zu warten und sehen, durchlaufen.

Verwandte Themen