8
votes

iPhone - Connexion au serveur en arrière-plan

Je crée une application qui se connecte au serveur et envoie du texte. Si le réseau (WiFi ou 3G) est là, il enverra immédiatement le texte au serveur. Mais s'il n'y a pas de réseau, il continue d'interrogation pour la connexion de serveur toutes les 5 minutes. Tout cette partie fonctionne bien.

mais lors de l'utilisation de l'appareil iPhone 4, je souhaite que l'application vérifie la connexion au serveur même lorsque l'application passe en arrière-plan. Ainsi, lorsque l'application passe à l'arrière-plan et lorsque le réseau revient, il doit être en mesure d'envoyer le texte au serveur.

Comment puis-je y arriver? J'ai vu des applications où ils disent que l'application téléchargera des photos sur le serveur, même en arrière-plan. Comment vont-ils le faire?


0 commentaires

4 Réponses :


1
votes

Créer un nouveau projet en Xcode et vous verrez qu'il existe des nouvelles méthodes automatiques générées dans le fichier de délégué de l'application. comme ApplicationDentierBackground, ApplicationWillenterforeground, etc.

Lire la description que vous devez appeler votre thread pour télécharger des données sur le serveur ici.


2 commentaires

Lorsque l'application passe en arrière-plan, comment le fil peut-il être toujours en marche?


Avez-vous lu le lien indiqué dans l'article ci-dessus par DIWUP. Il a une section pour "Mise en œuvre des tâches de fond à long terme" que je ne l'ai jamais utilisée, la documentation d'Apple devrait suffire à commencer.



15
votes

Je vous suggère de lire cet article de Apple attentivement, en particulier de la complétant une tâche de longueur finie en arrière-plan section.

http://developer.apple .com / bibliothèque / iOS / # documentation / iPhone / conceptuel / iPhoneOprogrammationGuide / Backgroundexecution / Backgroundexecution.html

Quelque chose à clarifier:

  • Une fois que votre application est en arrière-plan et est gelée par le système d'exploitation, il n'y aurait aucun moyen de votre application par elle-même se réveiller et ré-connecter à Internet.
  • Cependant, selon l'article ci-dessus de Apple, vous pouvez appeler cette méthode BENDBACK FORTSASKWithExpirationHandler à partir du délégué de votre application à demander une demande supplémentaire lorsqu'il est mis en arrière-plan, au sens de votre application, bien que votre application ne puisse pas Réveillez-vous par lui-même quand en arrière-plan, il peut, quand dans l'arrière-plan et non gelé, essayez de demander du temps supplémentaire pour terminer sa longue tâche.

    J'espère que cela aide.


0 commentaires

2
votes

Il y a une astuce que je pense que Flayvr utilise.

Si vous téléchargez et utilisez l'application, vous verrez avoir besoin de vous permettre de activer votre emplacement. Et pourquoi est-ce que? Parce qu'ils veulent comme si vous faites quelque chose en arrière-plan, même lorsque l'application est terminée (ils créent un album de vos photos nouvellement capturées) et comment font-ils cela?

Ils utilisent le changement de localisation significatif, où que quelqu'un déplace une distance significative (quelque chose comme 500 m), chaque application enregistrée pour un changement de localisation significatif sera réveil pour une durée limitée pour effectuer une tâche rapide et sera terminée dans quelques secondes.

Votre application peut donc s'inscrire à cet événement également et lorsque l'événement d'une modification d'emplacement significatif tiré, vous pourrez envoyer le texte au serveur (rapidement).

espère que cela aide.


0 commentaires

2
votes

Jusqu'à présent, vous pouvez le faire sur iOS7 avec arrière-plan de fond . Jetez un coup d'œil à ce article .

Cependant, vous n'avez que 30 ans pour obtenir la tâche terminée. Selon l'article ci-dessus, il y a aussi une autre solution appelée Service de transfert de fond .

Si plus de temps est requis, alors le service de transfert d'arrière-plan API peut être utilisé


0 commentaires