probleme installation de mon appli appstore
paddev
Membre
Bonjour,
Voici mon problème:
car je télécharge mon application sur l'app store, l'installation se déroule bien mais quand l'appli se lance pour la 1ère fois elle plante au démarrage et du coup elle ne télécharge pas toutes les infos (récupéré via un flux rss).
si je la relance elle s'ouvre mais du coup il manque des infos .
Quand je teste via xcode , ça fonctionne.
je pensais que cela pouvait venir du temps qu'elle met à rapatrier les infos via le flux rss.
ILl y a t'il un temps à ne pas dépasser?
merci
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
Watch Dog serait-il passé par là ?
Oui ton application a un temps limité pour se charger (et être dispo pour l'utilisateur). 5 secondes je crois. Au délà ton appli est virée.
Ce mécanisme est désactivé quand tu lance ton appli. via XCode.
Règle n°1 : Toujours tester son appli sur un device et sans la lancer via XCode, c'est à dire en condition réelle d'utilisation.
Pour vérifier le temps de chargement de ton appli quand tu utilises XCode, tu peux coder ceci :
Dans ton fichier main :
Dans ton application delegate (didFinishLaunchingWithOptions):
Quand tu lanceras ton appli via XCode, cela t'affichera le temps de chargement de ton appli.
Solution pour corriger le problème : faire de l'asynchrone.
Ca ne devrait pas être considéré comme un problème : ton appli, au moment où elle se lance peut n'avoir aucune info à afficher, ou des infos incomplètes (probleme réseau par exemple qui t'empêche de récupérer tes données).
je ne savis pas, j'air malin maintenant... je vais vite faire une mise a jour!
en fait lors du 2éme lancement, toujours pareil elle s'ouvre mais il manque des infos, il vérifie le flux rss mais n'effectue pas les changements... car il compare la date de modification du flux qui n'as pas changé du coup il me manque encore des infos.
j'ai plus qu'a retourné au boulot mais ca craint que j'ai deja beaucoup de téléchargement..
Oui ça craint pour un premier lancement d'appli (mauvaises notes assurées). N'hésite pas à utiliser les dispatch_async pour l'asynchrone, c'est facile à insérer dans du code existant sans que cela nécessite vraiment de réécrire une grosse partie de ton code.
Sinon pour les accès réseau tu as le fameux AFNetworking...
Là c'est autre chose : tu valides peut-être trop tôt l'inscription de tes données dans ton modèle. Le problème que tu indiques là tu le retrouveras toujours (cas d'une coupure réseau).
Faut toujours faire des chargements asynchrones pour ne pas bloquer l'interface. Et penser à la gestion d'erreurs, surtout sur un mobile où tu as des risques que ton réseau ne soit pas "stable" (le fameux passage sous un tunnel ^^)
- Si tu télécharges tes flux de façon synchrone ça va bloquer ton appli le temps que le téléchargement soit fait. Si l'utilisateur est sur un réseau Edge, lent, et qu'il ne capte pas bien... ça peut prendre des plombes. Déjà bloquer l'interface utilisateur pendant ce temps va donner une impression de gel de ton application donc c'est pas rassurant pour l'utilisateur, mais en plus si tu fais ça au lancement et que ton appli prend trop de temps à être lancée, iOS va la killer direct pensant qu'elle est bloquée.
Alors que si tu télécharges de façon asynchrone, quitte à afficher à l'écran un SVProgressHUD "Chargement des données, veuillez patienter..." par exemple, au moins l'appli sera répondante et pas bloquée et ça rassure l'utilisateur. En plus tu pourrais alors imaginer mettre une barre de progression pendant le chargement pour indiquer le temps qu'il reste.
- Si tu ne gères pas les cas d'erreur, comme chargement partiel seulement, ou erreur réseau ou quoi, dans les conditions réelles d'utilisation où le réseau de l'utilisateur va risquer de couper de temps en temps ou être très lent et partir en timeout, tu vas avoir des données partielles ou manquantes. Il faut toujours penser à gérer ce genre de cas (c'est un des points qui fait une grosse différence entre le développement sur mobile et le dev classique, sur un ordi on a souvent l'ADSL en permanence, sur un mobile la connectivité peut varier et couper ou être très lente à tout moment) et prévoir que ton application puisse correctement fonctionner malgré tout dans ce genre de cas.
Donc détecter ça et noter que les données sont partielles qqpart pour pouvoir les recharger dès que le réseau est revenu (Reachability est ton ami) ou au prochain lancement ou au prochain tap sur un bouton "Rafraà®chir" que tu auras prévu dans ton interface ou via un PullToRefresh...