Requête vers API et pas de réseau :(
Bonsoir à tous,
j'ai une petite app qui envoie des requêtes HTTP POST vers une API REST, tout fonctionne très bien... quand j'ai du réseau !!
Lorsque l'utilisateur se trouve sans wifi/4G, existe-t-il une méthode en swift 4 pour gérer automatiquement une sorte de file d'attente prise en charge par swift qui se relancera les requêtes périodiquement pour vider les requêtes en attentes qui n'ont pas pu être transmises ?
Sinon, comment gérer ? Où stocker les données dans l'app ? sous quel format ?
A quel moment relancer les req restées en échecs... ?
Comment faites-vous pour gérer cela ?
Merci pour vos lumières. 8--)
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
Reachability est souvent utilisé pour détecter si on du réseau ou non.
As-tu vraiment besoin de garder ces requêtes en attentes? Peu d'apps le font, car ce sont souvent des requêtes à faible espérance de vie, comme le fait de récupérer les derniers tweets (l'app le fera à un autre moment, c'est pas grave en soit).
Tu peux enqueue des requêtes, mais si tu comptes les rendre persistentes même si l'app est killée, il va falloir faire de la Serialization (NSCoding ?).
Et si tu demandes à supprimer un élément K, mais hors-ligne. Et qu'un autre appareil une heure plus tard demande à le sauvegarder absolument, lui est connecté. Tu vas supprimer l'élément K au final ?
Si c'est dans le cadre de synchro de donneÌes ça vaut le coup.
Dans le cas contraire un simple message qui dit à l'utilisateur qu'il n'a pas de reÌseau suffira. Imagine l'impact qu'aurait un deÌlais de plusieurs heures/jours sur l'envoi d'une requête.
Bonjour, merci pour vos réponses.
Je comprend que l'orientation habituellement prise est donc de considérer que l'app est obligatoirement connectée, sinon, elle ne fonctionne pas.
Dans mon cas, je développe une appli pour une professeur qui "enchaà®ne" ses élèves s'il n'a pas de réseau à l'instant t et qu'il ne peut pas passer à l'élève suivant c'est pas super pour une appli professionnelle.
A présent, je n'ai pas de risque de cas de suppression "mutualisée" de données.
Je vais continuer à réfléchir sur la philosophie de la question avant de me jeter dans du code.
Ensuite, je pourrais toujours sérialiser du Json tout prêt à être ré-émis.
Merci encore.
Swift c'est un langage de programmation. Ce genre de service n'est pas de la responsabilité d'un langage de programmation, mais d'un système d'exploitation. C'est donc au niveau des frameworks fournis par Apple qu'il faut chercher. Le langage ne pourra rien pour toi.
Bonjour ZOC, merci pour ta réponse, quand je dis Swift, je pense aussi aux librairies. Comme les fonctions de serialisation fournies par Codable, etc...
J'ai pensé qu'il aurait pu exister un système de gestion des queues d'attente.