widget et application

Bonjour,


 


Je voudrai savoir si c'est possible de partager des données entre l'application et le widget.


Je m'explique. L'application demande un login/mdp sur la page d'accueil. L'application utilise une base de données ou je stock les informations du compte client comme l'email, le nom et le prénom etc.


Je veux aujourd'hui faire un widget qui permet d'afficher les informations de cette base de données.


Est-ce qu'il existe un moyen de partager les données entre l'application et le widget? par quelle moyen?


Réponses

  • Bonjour,


     


    Avec des NSUserDefault partagé via un App Group. (la plupart des tuto App+Widget te présente l'ensemble)


  • raflebossrafleboss Membre
    décembre 2014 modifié #3

    Ok merci.


    En fait j'ai utilisé comme tu as dit App Group et je créé le fichier sqlite dans ce groupe qui est accessible depuis mon application et mon widget.



    docsPath = [[NSFileManager defaultManager] containerURLForSecurityApplicationGroupIdentifier:@group.myproject];

    path = [docsPath URLByAppendingPathComponent:@myproject.sqlite];
    FMDatabase *database = [[FMDatabase alloc] initWithPath:[path absoluteString]];
  • AliGatorAliGator Membre, Modérateur
    décembre 2014 modifié #4
    Si ton fichier est potentiellement utilisé par plusieurs process à  la fois (en particulier ici ton app et ton Widget), cela peut être une bonne pratique d'utiliser un NSFileCoordinator pour éviter les risques lors d'accès concurrents par ces 2 process différents en même temps.

    C'est une classe que l'on n'a pas trop l'habitude d'utiliser sous iOS car jusqu'à  il y a peu (quand on n'avait pas les AppGroups), chaque appli ayant sa Sandbox, chaque fichier ne pouvait forcément être accédé que par un seul process à  la fois, mais maintenant, c'est moins vrai...

    Bon reste à  savoir si c'est possible facilement pour toi, vu que FMDatabase masque le principal et que c'est lui qui doit gérer l'accès au fichier...
    Idéalement, il faut vérifier du coup s'il le gère correctement, sinon vérifier s'il n'y a pas une mise à  jour disponible qui rajoute cela (`pod outdated` va te dire ça tout de suite, si tu utilises CocoaPods), et si c'est tjs pas en place, créer une issue sur son GitHub pour l'informer du problème.
Connectez-vous ou Inscrivez-vous pour répondre.