Détection de connexion Internet SDK iPhone

Je travaille sur une application iPhone qui effectue quelques appels aux services Web. J’ai posté cette application sur la boutique Apple, mais celle-ci a été rejetée (et à juste titre) car l’utilisateur ne affichait aucun message d’erreur si aucune connexion Internet n’était disponible. Puisque évidemment l’application ne fonctionnerait pas sans elle.

Je voulais juste savoir comment y parvenir au mieux? Je devine que quelque chose doit aller dans la méthode viewDidLoad qui lancera une boîte d’alerte disant quelque chose comme “Vous avez besoin d’une connexion Internet pour utiliser cette application”.

Toute idée serait appréciée.

Si votre application doit avoir un access réseau, le plus simple est d’append les parameters suivants à votre info.plist en tant que valeurs booléennes.

  • SBUsesNetwork – Assurez-vous que le périphérique dispose d’une connexion active (Edit: not applicable, cela semble être une API privée trouvée à un moment donné. Elle ne figure pas dans la documentation du développeur Apple).
  • UIRequiresPersistentWiFi – Assure que l’appareil est connecté via le WiFi

Si votre choix n’est pas correct, l’utilisateur recevra un message approprié au démarrage de votre application. Mieux encore, ce message provient du système d’exploitation et est donc localisé.

Si votre application ne peut pas télécharger de données depuis un site Web en cours d’exécution (perte de signal, site en panne), vous devez néanmoins en avertir l’utilisateur et ne pas vous contenter de tourner indéfiniment.

Apple Developer Connection a un exemple d’application ( Reachability ) qui utilise l’infrastructure de configuration du système pour déterminer l’état du réseau. Il vous indiquera si vous avez une connexion WiFi, EDGE / 3G ou aucune connexion Internet.

Vous utiliseriez des parties de ce code dans votre application pour déterminer l’état du réseau, puis fournir des informations d’interface si aucune connexion n’est disponible, telle qu’une UIAlertView .

Mot de mise en garde: méfiez-vous de SBUsesNetwork. J’aimerais personnellement savoir d’où vient SBUsesNetwork, car il n’est mentionné nulle part dans les documents d’Apple que je peux trouver. Lorsque j’ajoute la clé au plist de mon application (en tant que booléen) et que la valeur est true, cela ne semble pas affecter le comportement de mon application – je ne reçois aucun avertissement concernant le mode avion, lancement précédent qui a été documenté.

UIRequiresPersistentWifi est défini sur true pour mon application, ce qui semble correspondre aux tâches que SBUsesNetwork déclare (plus d’autres choses!).

(J’utilise iOS4.2.1 sur un iPhone 4, XCode 3.2.5 64 bit).