Splash screen est chargement des données

AdraeshAdraesh Membre
mars 2014 modifié dans Vos applications #1

Bonjour à  tous,


 


J'ai une application qui va demander lors de sa toute première ouverture un chargement d'a peu près 180Mo d'image d'un serveur externe vers le dossier des documents de l'Ipad. Nous récupérons de plus d'autres informations de ce même serveur que nous stockons dans des tableaux (NSMutableArray). Et pour finir une petite base SQLLite de 10Mo.


 


Je souhaite évidemment tout initialiser au démarrage de l'application. Pour ce faire, si lors du premier lancement de l'application aucune connexion internet n'est détectée, on ne peut rien faire. Par contre si une connexion est détectée je voyais une sorte de splash screen avec une barre de chargement.


 


Ces données par la suite, une fois présentes sur l'Ipad seront évidemment mise à  jour de temps en temps. Donc retéléchargement et remplacement de certaines images, remplacement de la base SQLLite.


 


Mon problème aujourd'hui c'est que je ne vois pas du tout comment m'y prendre.


 


Si quelqu'un aurait une idée, ou même une petite piste ?


 


Merci d'avance.


Réponses

  • Alf1996Alf1996 Membre
    mars 2014 modifié #2

    Il te faut utiliser une UIProgressView et tu fais ton chargement en asynchrone. Les spécialistes confirmeront mais je pense que tu peux faire çà  avec GCD (Grand Central Dispatch). Le rafraichissement de ta barre de progression devra se faire dans le main thread puisqu'il s'agit de l'UI. Fais une recherche sur GCD, il y a des tas de posts à  ce sujets, dont de très longues explications d'Ali, agrémentée d'exemples !!


  • zoczoc Membre


    un chargement d'a peu près 180Mo d'image d'un serveur externe vers le dossier des documents de l'Ipad. 




     


    Attention, si ma mémoire est bonne, cette pratique te conduira à  un rejet de l'application. En effet les fichiers qui proviennent de sources externes, et qui sont donc disponibles sur un serveur, ne doivent pas être stockés dans le dossier des documents, mais dans le dossier "cache". Et tu dois t'attendre à  ce que ce cache soit vidé par le système sans que tu l'aies demandé.

  • AliGatorAliGator Membre, Modérateur
    Surtout pas dans le dossier "Documents" de la sandbox, je valide ce que dit zoc.
    Par contre, si tu mets ça dans le dossier Cache, c'est pour du cache, potentiellement vidé de temps en temps.
    Vu l'usage que tu veux en faire, la bonne place pour stocker ça c'est Application Support (NSApplicationSupportDirectory).
    Pour tous les détails de l'utilisation de la sandbox et de savoir quel est le bon dossier dans lequel mettre tes données et à  quoi est réservé chaque dossier, voir la doc Apple et le Programming Guide associé sur le sujet.

    Après pour ce qui est de l'écran de chargement le temps de récupérer tes données, c'est un écran comme un autre, quel est ton souci ?
  • samirsamir Membre
    mars 2014 modifié #5


    Par contre, si tu mets ça dans le dossier Cache, c'est pour du cache, potentiellement vidé de temps en temps.




    En plus de ça le système ne garanti pas la migration des données qui sont dans le cache en cas d'une mise à  jour de l'application, donc y a un risque que les données soit perdues. Y a une seule exception ou tu n'as pas le choix de mettre les images dans le dossier Caches est si tu supporte encore la version iOS 5.0 et que tu ne veux pas synchroniser les images via iCloud.


     


     




    Attention, si ma mémoire est bonne, cette pratique te conduira à  un rejet de l'application.




    Je ne trouve pas cette interdiction dans la documentation, ce n'est pas le meilleure endroit pour stocker les données téléchargées mais ça induit pas un rejet si tu le fait.


     


    Par contre l'application sera rejeté si les données sont stockées dans le dossier documents ou bien autre (Libray/Application Support) et que leur synchronisation via iCloud prend beaucoup de temps et d'espace.


     


    Donc le meilleur endroit, comme @Aligator l'a bien mentionné dans son message, est dans Application support et fait attention au backup des données via iCloud, parce que toutes les données qui sont dans Documents ou Application support seront synchronisées automatiquement.


     


    Doc :


    https://developer.apple.com/library/mac/documentation/FileManagement/Conceptual/FileSystemProgrammingGuide/FileSystemProgrammingGuide.pdf


     


    https://developer.apple.com/library/ios/qa/qa1719/_index.html#//apple_ref/doc/uid/DTS40011342


  • Merci à  tous pour vos réponses. Concernant mon chargement au départ de l'application, nous avons abandonné cette idée, nous faisons autrement.


     


    Par contre une chose très interessante que je ne savais pas et que sur laquelle je vais m'empresser d'aller me renseigner, c'est sur l'usage de la sandbox. Ou placer les fichiers, dans quels dossiers etc ...


     


    Un grand merci à  vous.


  • Hello à  tous !


     


    Je me permets de faire remonter le sujet, car en effet, comme expliqué ci-dessus j'ai bien modifié toutes mes copies et placé ces fichiers dans NSApplicationDirectory. Par contre vous parlez du backup iCloud, et effectivement, je ne souhaite qu'en aucun cas tous mes fichiers copiés soient "backupés" par iOs.


     


    J'ai essayé de chercher comment je peux spécifier que je ne souhaite pas que mes fichiers soient "backupés" sans succès. Je pense que ça se fait lors de la copie du fichier, mais je n'en suis pas sur.


     


    Si quelqu'un aurait une petite précision là  dessus ?


     


    Un grand merci d'avance.


  • AliGatorAliGator Membre, Modérateur

    J'ai essayé de chercher comment je peux spécifier que je ne souhaite pas que mes fichiers soient "backupés" sans succès.

    c'est pourtant pas si dur ;-)
  • Encore merci Ali :)


     


    Oui mais tout autant que moi tu sais que le plus dur c'est de savoir quoi taper ;). Personnellement je taper copy files NSApplicationDirectory + No iCloud Backup un truc dans le genre et rien de probant.


Connectez-vous ou Inscrivez-vous pour répondre.