SyncServices " à  la recherche d'un bon tuto

yoannyoann Membre
17:04 modifié dans API AppKit #1
Bonjour tout le monde,

Après quelques jours de vacances je suis entrain de me remettre au boulot sur les sync services et je sais pas si je fait un blocage mais je n'arrive pas à  m'en sortir avec la doc Apple... Est-ce que quelqu'un aurait un bon tuto pour s'y mettre autre que le programming guide ?

Réponses

  • tabliertablier Membre
    17:04 modifié #2
    je n'ai pas ce que tu demandes!
    Ne pas s'en sortir avec la doc d'Apple, ça n'est pas nouveau et c'est même très courant! Cette doc est faites pour des esprits Anglo-Saxon, pas pour nous!
  • yoannyoann Membre
    17:04 modifié #3
    dans 1251198872:

    je n'ai pas ce que tu demandes!
    Ne pas s'en sortir avec la doc d'Apple, ça n'est pas nouveau et c'est même très courant! Cette doc est faites pour des esprits Anglo-Saxon, pas pour nous!


    Certes mais bon toutes les autres doc ne m'ont posé aucun problème majeur ! La les sync services, j'arrive même à  voir comment démarrer...
  • wiskywisky Membre
    17:04 modifié #4
    Donne le lien de la doc apple peut être que quelqu'un arrivera à  la décrypter. Je ne sais même pas ce que c'est.
    D'un autre côté pour le boulot, je suis sur un projet de copie/sauvegarde en tâche de fond pour les PC.
  • yoannyoann Membre
    17:04 modifié #5
    Pour la doc ça se passe par la : http://developer.apple.com/documentation/Cocoa/Conceptual/SyncServices/SyncServices.html#//apple_ref/doc/uid/TP40001149

    En gros les sync services te servent à  synchroniser ton appli avec les données du Mac tel qu'adresse book (le cas qui m'intéresse) et t'envoie en fait des info sur ce qui change, ce qui change pas et inversement tu lui dit ce qui a changé chez toi et il te gère les conflit

    Sur la partie théorie j'ai bien compris comment ça marche, sur la partie pratique j'ai du mal à  le faire partir. Entre autre il y a ISyncSessionDriver qui permet de simplifier l'utilisation de ce que j'ai pu lire sur le web mais pas trop traité dans le programming guide.

    En gros il me manque le point d'amorce pour comprendre comment implémenter le bordel
  • wiskywisky Membre
    17:04 modifié #6
    Il n'y a pas ton bonheur dans les exemples "Sync Services" de Xcode ?
  • yoannyoann Membre
    17:04 modifié #7
    J'essaye en effet de voir avec les exemples à  défaut de bon tuto. Le problème des exemples c'est qu'ils appliquent pas mal de notion d'un coup. Je cherchais plus un tuto expliquant les bonnes pratiques des SyncServices et les erreurs à  ne pas faire, comme on touche aux données communes on peut par exemple faire péter toute notre base de contact sur une fausse manip ^^
  • wiskywisky Membre
    17:04 modifié #8
    Une seule parade : un compte de test et une sauvegarde ;)
  • tabliertablier Membre
    17:04 modifié #9
    Certes mais bon toutes les autres doc ne m'ont posé aucun problème majeur !

    ben j'ai le même problème que toi avec les 'object spécifier' que je n'arrive pas à  appliquer après avoir lu la doc et examiné les exemples!
      >:( Mais soyons tétus, nous finirons par y arriver!
  • yoannyoann Membre
    17:04 modifié #10
    dans 1251225269:

    Certes mais bon toutes les autres doc ne m'ont posé aucun problème majeur !

    ben j'ai le même problème que toi avec les 'object spécifier' que je n'arrive pas à  appliquer après avoir lu la doc et examiné les exemples!
      >:( Mais soyons tétus, nous finirons par y arriver!


    Je connais pas ça, doc ?
  • tabliertablier Membre
    17:04 modifié #11
    C'est dans la doc "Cocoa scripting guide". ça permet d'organiser les objets de ton application Cocoa en fonction des containers pour que le scripter puisse désigner un objet en appleScript de cette manière:
    object "truc" of object "machin" of object "bidule" ...
    voir aussi NSObjectSpecifier
    Exemple en applescript:
    set selected of button "coucou" of window "ras le bol" to 1

    je suis en train d'écrire un tuto sur ce genre de chose et je m.... à  fond !
  • laudemalaudema Membre
    17:04 modifié #12
    dans 1251216071:

    Le problème des exemples c'est qu'ils appliquent pas mal de notion d'un coup.

    Pas tout à  fait d' accord avec ça .. En fait il y a aussi pas mal de notions dans les "SyncServices", ce ne sont plus des classes et des objets mais des shemas, des clients, un moteur, la véritéEnBoite... Donc pas mal d'exemples ;-/
    Ceci dit il y a d'autres défauts dans ce matériel:
    - Beaucoup semblent dater de Tiger, ce qui est un petit peu normal, et il semblerait qu'il y en a aussi sous Snow Leopard mais il y en a peu pour Leopard vraiment. Pourtant les API ont évolué ..
    - Elles se basent souvent sur .mac ou les stickies (à  toutes les sauces) et quand on veut juste synchroniser avec les données de l'iPhone (iCal/AB) là  il n'y a pas grand monde. Mais bon on peut quand même trouver à  manger pour comprendre.
    Le hic c'est que ça reste un peu parcours du combattant si on a pas d'abonnement .mac par exemple. Et puis c'est un peu rageant de devoir passer par de vieilles méthodes quand on a Core Data.
    <br />- (NSDictionary *)syncRecordForAppRecord:(NSDictionary *)record<br />{<br />&nbsp; &nbsp; NSString *firstName = [record objectForKey:FirstNameKey];<br />&nbsp; &nbsp; NSString *middleName = [record objectForKey:MiddleNameKey];<br />&nbsp; &nbsp; NSString *lastName = [record objectForKey:LastNameKey];<br />&nbsp; &nbsp; NSString *company = [record objectForKey:CompanyNameKey];<br />&nbsp; &nbsp; NSString *location = [record objectForKey:LocationNameKey];<br />&nbsp; &nbsp; NSData *officialPhoto = [record objectForKey:ImageKey];<br />&nbsp; &nbsp; NSData *candidPhoto = [record objectForKey:CandidPhotoKey];<br />&nbsp; &nbsp; NSData *extremePhoto = [record objectForKey:ExtremePhotoKey];<br /><br />&nbsp; &nbsp; NSMutableDictionary *syncRecord = [NSMutableDictionary dictionaryWithObjectsAndKeys:<br />&nbsp; &nbsp; &nbsp; &nbsp; EntityContact, ISyncRecordEntityNameKey,<br />&nbsp; &nbsp; &nbsp; &nbsp; nil];<br /><br />&nbsp; &nbsp; if (firstName &amp;&amp; ([firstName isEqualToString:@&quot;&quot;] == NO)) {<br />&nbsp; &nbsp; &nbsp; &nbsp; [syncRecord setObject:firstName forKey:FirstNameKey];<br />&nbsp; &nbsp; }<br />&nbsp; &nbsp; if (middleName &amp;&amp; ([middleName isEqualToString:@&quot;&quot;] == NO)) {<br />&nbsp; &nbsp; &nbsp; &nbsp; [syncRecord setObject:middleName forKey:MiddleNameKey];<br />&nbsp; &nbsp; }<br />&nbsp; &nbsp; if (lastName &amp;&amp; ([lastName isEqualToString:@&quot;&quot;] == NO)) {<br />&nbsp; &nbsp; &nbsp; &nbsp; [syncRecord setObject:lastName forKey:LastNameKey];<br />&nbsp; &nbsp; }<br />&nbsp; &nbsp; if (company &amp;&amp; ([company isEqualToString:@&quot;&quot;] == NO)) {<br />&nbsp; &nbsp; &nbsp; &nbsp; [syncRecord setObject:company forKey:CompanyNameKey];<br />&nbsp; &nbsp; }<br />&nbsp; &nbsp; if (location &amp;&amp; ([location isEqualToString:@&quot;&quot;] == NO)) {<br />&nbsp; &nbsp; &nbsp; &nbsp; [syncRecord setObject:location forKey:LocationNameKey];<br />&nbsp; &nbsp; }<br />&nbsp; &nbsp; if (officialPhoto) {<br />&nbsp; &nbsp; &nbsp; &nbsp; [syncRecord setObject:officialPhoto forKey:ImageKey];<br />&nbsp; &nbsp; }<br />&nbsp; &nbsp; if (candidPhoto) {<br />&nbsp; &nbsp; &nbsp; &nbsp; [syncRecord setObject:candidPhoto forKey:CandidPhotoKey];<br />&nbsp; &nbsp; }<br />&nbsp; &nbsp; if (extremePhoto) {<br />&nbsp; &nbsp; &nbsp; &nbsp; [syncRecord setObject:extremePhoto forKey:ExtremePhotoKey];<br />&nbsp; &nbsp; }<br />&nbsp; &nbsp; return syncRecord;<br />}<br />
    

    Et ça c'est dans le dernier code de l'exemple "People", de 2009, celui qui ne tourne que sur 10.6 qu'on trouve en lien dans la documentation en ligne.
    le code du premier People me paraà®t bizarrement mieux écrit ..

    Donc tu as People 1 et 2 pour te faire les dents sur les contacts, stickies pour te les faire sur les schemas et Core Data etc ..

    Mais pour Core Data et les schemas des applis Apple j'ai pas vu ..


    dans 1251216071:

    Je cherchais plus un tuto expliquant les bonnes pratiques des SyncServices et les erreurs à  ne pas faire, comme on touche aux données communes on peut par exemple faire péter toute notre base de contact sur une fausse manip ^^


    Dans les outils du dossier developer tu as syncrospector aussi qui est pas mal et permet de voir beaucoup de choses, justement de celles que tu ne voudrais pas voir partir ;-)
    Alors soit faire des sauvegardes soit utiliser le compte invité (j'aime bien faire mes essais dans le compte invité).
Connectez-vous ou Inscrivez-vous pour répondre.