2010-04-07 7 views
1

Je voudrais dire au serveur d'invalider une session en cours lorsque l'utilisateur quitte l'application iPhone.Invalider la session avant que l'application iPhone ne se ferme

Dans le délégué de l'application, j'envoie une requête au serveur dans la méthode (void)applicationWillTerminate:(UIApplication *)application. Je n'attends pas une réponse du serveur, je veux juste envoyer la demande et quitter.

Cependant, je ne peux pas voir un paquet quittant l'application. Le même code dans un autre endroit fonctionne bien.

La session a quand même une durée limitée et le serveur l'invalidera au bout d'un moment, mais je préférerais le faire correctement en quittant l'application.

Est-il normal que NSURLConnection ne puisse pas être établie à partir de la méthode applicationWillTerminate?

Merci.

Répondre

0

Si vous envoyez une requête asynchrone, il est très probable que l'application se ferme avant que la demande ne soit effectuée. Essayez d'utiliser une requête synchrone comme test, bien que je ne vous recommande pas de le faire en production, car les requêtes synchrones peuvent prendre un temps indéterminé. Si l'application se ferme de force, elle s'affichera en tant que "time-out on quit" dans la section "Rapports de crash" d'iTunes Connect.

+0

[NSURLConnection sendSynchronousRequest: myRequest returnResponse: erreur NULL: NULL] a bien fonctionné. Mais je ne sais pas si je devrais le laisser, selon votre avertissement. Peut-être que le serveur devrait gérer la fin de la session après tout. – user244129

+0

Si le serveur peut gracieusement gérer le cas où un utilisateur quitte l'application et le relance dans un très court laps de temps, le serveur doit définitivement prendre soin d'elle. Dans ce cas, il serait idéal que le serveur réaffecte la session au client (vous pouvez utiliser l'UDID du client pour cela) ou simplement créer une nouvelle session au démarrage et laisser l'ancien se fondre dans l'éther. – Jasarien

Questions connexes