Récupérer des fichiers de l'iPhone via iTunes ?

AliGatorAliGator Membre, Modérateur
22:57 modifié dans Vos applications #1
Hello,

Pour un futur projet, on risque de me demander de transférer des documents de l'appli de l'iPhone sur le Mac ou le PC.
C'est à  dire avoir l'appli iPhone que je vais développer qui va manipuler des données, par exemple préparer un document et le remplir de données, etc... puis le sauver sur l'iPhone. Ensuite, le but est que quand on synchronise l'iPhone via iTunes avec le Mac ou le PC, on puisse transférer ce document, créé sur l'iPhone, pour le récupérer sur l'ordi.


Savez-vous déjà  si c'est réalisable ? Et si oui, avez-vous des idées sur la manière de réaliser cela ?
Par exemple ça pourrait être une application tierce sur le Mac ou le PC qui irait lire/récupérer les fichiers depuis le dossier qu'utilise iTunes pour stocker les données synchronisées (si elles sont lisibles et pas cryptées ou autre), ou un truc dans ce goût là , à  moins qu'il y ait une API ou un SDK de prévu pour ça, ... ? Ou sinon un moyen de contourner le problème (au pire imposer une connexion Wifi ou BT entre l'iPhone et l'ordi, éventuellement via Bonjour, pour transférer les données, mais ce qui voudrait dire décorréler cela d'iTunes...)

Réponses

  • ClicCoolClicCool Membre
    22:57 modifié #2
    Il me semble que le "mieux" (compte tenu des limitations imposées par Apple) c'est un dialogue ordi-iPhone direct via Wifi.
  • ThibautThibaut Membre
    22:57 modifié #3
    Effectivement. Et NSNetService peut ainsi devenir très utile (par contre, cela sera dur à  implémenter sur un PC).
  • AliGatorAliGator Membre, Modérateur
    22:57 modifié #4
    Ca aucun problème pour Bonjour/Zeroconf, mon projet précédent était fortement basé dessus, on a déjà  implémenté la chose sur PC, SetTopBox et Table Surface même (via dns-sd.h). J'ai aussi déjà  plusieurs fois fait des transferts de données d'une appli iPhone à  une appli PC ou Mac via Wifi et Bonjour, donc pas de soucis.

    C'était plus pour passer par iTunes pour faire ça plus "propre" que je me posais la question, pour éviter d'utiliser une appli tierce idéalement, où la synchronisation par iTunes mettrait les documents dans un dossier comme elle le fait pour les images de l'appareil photo de l'iPhone par exemple.
  • dilarogadilaroga Membre
    22:57 modifié #5
    pour éviter d'utiliser une appli tierce idéalement, où la synchronisation par iTunes mettrait les documents dans un dossier comme elle le fait pour les images de l'appareil photo de l'iPhone par exemple.

    Ca m'etonnerait que ce soit possible pour une application non-Apple. Les données des synchro vont se loger dans les dossiers ~/Library/Application Support/MobileSync/Backup/UIDUIDUIDUIDUIDUIDUUID/. Mais pour s'y retrouver là  dedans il va falloir un sacré temps d'analyse et si tu retrouves tes petits il te faudra surement une appli tierce pour les extraire...
  • tarultarul Membre
    22:57 modifié #6
    dans 1258822369:

    Ca aucun problème pour Bonjour/Zeroconf, mon projet précédent était fortement basé dessus, on a déjà  implémenté la chose sur PC, SetTopBox et Table Surface même (via dns-sd.h). J'ai aussi déjà  plusieurs fois fait des transferts de données d'une appli iPhone à  une appli PC ou Mac via Wifi et Bonjour, donc pas de soucis.


    ma question est un peu HS, mais le pc en question. Tu lui avait installé bonjour ou pas?
  • AliGatorAliGator Membre, Modérateur
    22:57 modifié #7
    Oui, il faut récupérer le "Bonjour SDK for Windows", lancer mDNSResponder.exe (daemon Bonjour lancé automatiquement sur Mac mais à  installer/lancer sous Windows), et ensuite utiliser l'API C livrée dans le SDK Windows ensuite pour tout faire en bas niveau (annonce d'un service, écoute d'un service, récupération des services exitants, ...).

    Le plus ch*ant dans cette API c'est le système de callbacks qui ne sont pas appelées toutes seules, mais qu'il faut "surveiller" : il faut appeler une méthode qui va dispatcher les callbacks qu'on a déclarées (callback quand un nouveau service Bonjour est détecté, ou disparait, ou quand la résolution de l'IP d'un hôte a réussi ou échoué, etc.), méthode qui est bloquante jusqu'à  ce qu'il y ait un message à  dispatcher... Donc soit faut l'appeler dans un thread qui boucle dessus et dispatche les messages/callbacks un par un quand il y a des événements entrants, soit faut utiliser FD_SET et select pour vérifier qu'il y a un événement ou pas avant d'appeler la méthode, soit faut scheduler des NSPorts écoutant les événements correspondants sur la RunLoop...
  • ClicCoolClicCool Membre
    22:57 modifié #8
    Y'aurait pas moyen de passer par un abonnement mobileMe pour partager/synchroniser des données ?
  • zoczoc Membre
    22:57 modifié #9
    dans 1258901618:

    Y'aurait pas moyen de passer par un abonnement mobileMe pour partager/synchroniser des données ?
    Non, sur iPhone (contrairement à  MacOS X et son framework de synchro), il est impossible de rajouter des types de donnée à  synchroniser).
  • ClicCoolClicCool Membre
    22:57 modifié #10
    Merci Zoc,

    Toutes ces limitations sont elles vraiment importantes pour la sécurité de l'iPhone ou juste pour préserver le monopole d'Apple sur ses iApps synchronisées ?

    Parcequ'à  mon point de vue c'est une limitation qui ôte beaucoup à  l'intérêt d'un appli iPhone  :(
  • 22:57 modifié #11
    dans 1258905624:

    dans 1258901618:

    Y'aurait pas moyen de passer par un abonnement mobileMe pour partager/synchroniser des données ?
    Non, sur iPhone (contrairement à  MacOS X et son framework de synchro), il est impossible de rajouter des types de donnée à  synchroniser).


    Bha je me demande comment fait "Wallet" sur iPhone pour fonctionner alors...
  • zoczoc Membre
    22:57 modifié #12
    Quelle application "Wallet" ? Parce que si je cherche sur l'appstore avec ce mot, je trouve au moins 3 Applications pertinentes.
    Et sans compter les versions iPhone de 1Password, qui nécessitent l'utilisation de la version OS X pour la synchronisation (qui utilise Bonjour + Connexion réseau).
Connectez-vous ou Inscrivez-vous pour répondre.