2010-09-13 4 views
3

J'ai du mal à garder le wifi de se déconnecter après 30 minutes dans une application iPhone qui doit fonctionner lorsqu'il est verrouillé par l'utilisateur.Garder le wifi/3g vivant pour verrouillé iphone

L'application ne dort normalement pas, mais si l'utilisateur le souhaite, elle peut verrouiller l'affichage. J'ajoute une nouvelle fonctionnalité à l'application qui envoie des données sur le réseau à intervalles d'une seconde. Avant cela, il n'y avait aucune exigence de réseau pour l'application, et il a fonctionné comme souhaité (musique, processus basés sur le minuteur) tout en étant verrouillé par l'utilisateur.

La réponse semblait être ici:
Wifi connection doesn't stay alive when asleep, with iOS4

Mais en ajoutant booléen UIRequiresPersistentWifi à info.plist ne garde pas le moment de wifi (je teste sur Touch, iOS4.02) après 30 minutes, même lorsque l'application est occupé à envoyer des données sur la connexion. Peut-être que cela ne s'applique que si l'affichage dort lui-même, plutôt que les verrous de l'utilisateur? En relation, je pense qu'il n'y a aucun moyen de "remuer" l'affichage à tout intervalle? L'utilisateur appuyant sur le bouton d'accueil est suffisant pour ramener le wifi; le déverrouillage n'est pas nécessaire.

En outre, j'ai lu sur les interwebs qu'il a été déclaré dans une WWDC que UIRequiresPersistentWifi s'applique également à la conservation de la 3G. Quelqu'un peut-il vérifier?

grâce

+1

Il s'avère que, bien que les documents indiquent que UIRequiresPersistentWiFi maintiendra la connexion active pour une application, selon les forums de développement Apple, il n'est pas possible lorsque l'écran est verrouillé. Blech. – ransomweaver

+0

Ma solution est, puisque la fonctionnalité requise est funtionally iPhone exclusive, d'implémenter un interrupteur pour permettre au capteur de proximité d'assombrir l'affichage. Cela devrait sauver le jus si l'appareil est mis de côté pendant de longues périodes avec l'application en cours d'exécution. – ransomweaver

Répondre

1

Votre application peut se suspendre par le système d'exploitation après une période d'inactivité assez longue. Sous iOS 4.x, il existe certains types d'applications qui ne sont pas suspendues lorsque l'écran est verrouillé (lecteur de musique, VOIP, etc.) Les applications qui s'inscrivent en tant qu'application de type VOIP peuvent être autorisées à conserver un réseau persistant connexion sur une période plus longue. Toutefois, Apple peut exiger qu'une application fournisse des fonctionnalités VOIP afin de pouvoir s'enregistrer pour ce type dans toute application soumise pour examen.

+0

Ajout d'un tableau nommé UIBackgroundModes à info.plist, avec un membre "voip" n'a pas gardé le wifi en cours. Cependant je pense que ça ne devrait pas avoir de toute façon. Pour clarifier, mon application n'est pas en arrière-plan lorsque le délai d'attente de 30 minutes se produit. C'est l'application active, avec l'affichage verrouillé par l'utilisateur. – ransomweaver

+0

De plus, l'application fonctionne normalement lorsqu'elle est verrouillée, à l'exception du réseau qui disparaît.Il stocke également les données à l'aide des données de base, et les données pour la période après la mise en veille du réseau Wi-Fi sont correctement enregistrées. Les aspects audio de l'application s'exécutent correctement. – ransomweaver

0

Y a-t-il une activité dont vous avez besoin pour effectuer une activité réseau? A partir de iOS5, nous avons noté que même si nous envoyons des paquets réseau (battements de cœur), iOS 5 le bloque également après le verrouillage du périphérique.

Il est à noter que les services nécessitant la VoIP continuent à recevoir des appels, et les notifications arrivent lorsque votre téléphone est en mode veille ou verrouillé. Cela signifie que le WiFi n'est pas totalement fermé. Je ne sais pas comment cela se passe. Vous pouvez également utiliser le support de données de votre fournisseur de réseau comme alternative au WiFi en cas de panne du WiFi. Avec UIRequiresPersistentWiFi, vous informez simplement iOS5 que vous aurez besoin de WiFi pour exécuter votre application, rien d'autre ne signifie que votre écran reste allumé ou éteint. Pour garder votre téléphone de autolock, vous pouvez cependant utiliser le drapeau disableTimer = YES, au lieu de votre charge de la batterie.

+0

Vous dites "Il est à noter que les services qui nécessitent VoIP continuer à recevoir des appels." Je ne suis pas d'accord avec cette affirmation. J'ai testé l'application Skype actuelle et ce n'était pas le cas: l'appel n'est pas reçu lorsque je verrouille l'écran. Puis-je vous demander quelle est la demande de VoIP que vous avez essayée? – Albrecht

+0

Désolé pour la réponse tardive, j'ai essayé Skype seulement. Appelé le skype fonctionnant sur iPad verrouillé (installateur frais téléchargé) et il a montré le téléphone qui sonne. – VijayKumar

Questions connexes