Posts Tagged ‘iPhone’

iPhone 3GS et iOS 4.3.1 : jailbreak

Thursday, June 9th, 2011

Dans le cadre d’un projet de développement pour iPhone que j’ai initié dans l’école où j’enseigne, j’ai voulu installer sur mon iPhone l’application maison que nous avions développé.

Pendant le développement, j’avais entamé des démarches auprès d’Apple pour bénéficier de leur programme éducation, censé nous permettre d’obtenir leurs outils de développement (Xcode 4) mais surtout de déploiement. Après 6 semaines d’échanges de courriels, Apple s’obstine et refuse de reconnaître notre école.

Pour ne pas abandonner tout le travail de développement qui a déjà été fait, j’ai donc opté pour la seule solution restante à mes yeux : Jailbreaker mon iPhone dans le but d’y installer notre application maison sans subir les contraintes d’Apple et développer notre application avec Xcode 3.

Jailbreaker l’iPhone

Je possède un iPhone 3GS avec l’iOS 4.3.1. J’ai du faire de nombreuses tentatives pour trouver exactement les bons logiciels et la bonne procédure. Mais j’y suis finalement arrivé.

J’ai commencé par cette page : http://www.limera1n.cc/2011/04/redsn0w-096rc9-download-untethered-431.html

Mais attention : contrairement à ce qu’indique le titre, il faut télécharger la version 096rc12 de redsn0w (le lien fourni dans l’article est correct), puis suivre les même étapes que pour la version 096rc9 : http://www.limera1n.cc/2011/04/jailbreak-431-untethered-redsn0w-096rc9.html

Par contre, la procédure ne mentionne pas une étape cruciale : déterminer si l’iPhone possède une nouvelle ou une ancienne bootRom.

Personnellement, j’ai une ancienne bootRom. Le site http://www.iphone4.fr/comment-connaitre-mon-iboot-sur-mac-os-x/ indique comment le déterminer.

À l’issue de cette procédure, l’iPhone est jailbreaké et il est donc possible d’y installer des applications inofficielles.

Toutefois, reste un problème : faire que XCode accepte de transférer une application sans signature conforme sur l’iPhone.

Déployer une application sur l’iPhone

Pour y arriver, j’ai suivi l’excellente procédure décrite sur cette page : http://www.alexwhittemore.com/?p=398. Comme cette procédure est en anglais et qu’elle utilise des outils difficiles d’accès (vi), je reproduis ici une version légèrement adaptée de cette procédure.

Première étape : obtenir une identité signée

Cette étape ne doit être faite qu’une fois pour toutes. Xcode doit être fermé. L’iPhone ne doit pas être branché à l’ordinateur.

Normalement, c’est Apple qui nous fourni une identité signée, mais plus tard dans la procédure, nous allons supprimer le contrôle de signature effectué par Xcode. Une identité auto-signée est donc suffisante. On l’obtient ainsi :

  1. Ouvrir l’application Trousseau d’accès (Applications > Utilitaires > Troussau d'accès)
  2. Créer un nouveau certificat (Trousseau d'accès > Assistant de certification > Créer un certificat...)
  3. Mettre comme nom iPhone Developer. C’est très important d’orthographier correctement ce nom. Choisir une Racine auto-signée et comme type de certificat, choisir Signature de code. Cocher la case Me laisser ignorer les réglages par défaut. Cliquer sur Continuer.

    Valider l’avertissement en cliquant sur Continuer.
  4. Mettre une durée de 3650 jours et cliquer sur Continuer.
  5. Laisser les champs vides, en particulier l’adresse électronique ! Ne pas toucher au champ Nom. Cliquer sur Continuer.
  6. Valider toutes les étapes suivantes, jusqu’à la dernière.

    Le message indiquant que ce certificat n’est pas approuvé est normal.

Deuxième étape : AppSync sur l’iPhone

Il faut ensuite installer l’application AppSync sur l’iPhone jailbreaké. Pour ce faire, suivre les étapes suivantes :

  1. Ouvrir Cydia, choisir l’onglet Gérer. Cliquer sur Sources, puis sur Modifier et enfin Ajouter.
  2. Taper l’adresse http://cydia.hackulo.us. Un avertissement concernant le piratage vous sera affiché. En l’occurence, nous n’allons pas faire de piratage.
  3. Revenir au menu principal de Cydia, choisir l’onglet Recherche. Taper AppSync et installer AppSync for 4.0+.
  4. Certains disent qu’il faut redémarrer l’iPhone. Je n’ai pas eu à le faire.

Troisième étape : modifier Xcode

Là, on commence le gros du boulot : modifier Xcode pour qu’il accepte de transférer un projet iPhone sur notre iPhone jailbreaké.
Cette procédure a été testée avec Xcode v3.2.6.

  1. Démarrer le Terminal. Taper ceci :
  2. cd /Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS4.3.sdk
    sudo cp SDKSettings.plist SDKSettings.plist.orig
    sudo pico SDKSettings.plist

    Chercher la clé CODE_SIGNING_REQUIRED et changer sa valeur de YES à NO.
    Chercher la clé ENTITLEMENTS_REQUIRED et changer sa valeur de YES à NO.
    Rappel : avec pico, une recherche se fait avec CTRL+W.

  3. Remonter au niveau de la plateforme :
    cd /Developer/Platforms/iPhoneOS.platform/
    sudo cp Info.plist Info.plist.orig
    sudo pico Info.plist

    Cherche la clé CODE_SIGN_CONTEXT_CLASS, qui apparaît deux fois et remplacer chaque fois XCiPhoneOSCodeSignContext par XCCodeSignContext.

  4. Maintenant, il faut modifier le binaire de Xcode !
    cd ~/Desktop
    pico script

    Copier le code suivant dans le script que l’on vient de créer :

    #!/bin/bash
    cd /Developer/Platforms/iPhoneOS.platform/Developer/Library/Xcode/Plug-ins/iPhoneOS\ Build\ System\ Support.xcplugin/Contents/MacOS/
    dd if=iPhoneOS\ Build\ System\ Support of=working bs=500 count=255
    printf "\xc3\x26\x00\x00" >> working
    /bin/mv -n iPhoneOS\ Build\ System\ Support iPhoneOS\ Build\ System\ Support.original
    /bin/mv working iPhoneOS\ Build\ System\ Support
    chmod a+x iPhoneOS\ Build\ System\ Support

    Sauver et quitter pico. Reste à changer les droits d’accès sur ce nouveau script et à l’exécuter :

    chmode 777 script
    ./script

    Si tout va bien, vous un affichage similaire à ceci apparaîtra :

    231+1 records in
    231+1 records out
    115904 bytes transferred in 0.024132 secs (4802915 bytes/sec)

    Avec cette étape, on a indiqué à Xcode qu’il n’est pas nécessaire de signer le code. Maintenant, il faut lui dire de ne pas signer le code.

  5. Ouvrir un projet Xcode. Dans Xcode, choisir Project > Edit Project Settings. Ensuite, choisir l’onglet Build.
    Faire une recherche des propriétés Code Signing et mettre Don't Code Sign en regard des propriétés Code Signing Identity et Any iOS.
  6. Ensuite, dire à Xcode qu’il faut quand-même signer le code ! On va faire ça avec un script python.
    mkdir /Developer/iphoneentitlements431
    cd /Developer/iphoneentitlements431
    pico gen_entitlements.py

    Coller dans pico le code python suivant (que j’ai obtenu sur le site d’Alex Whittemore) :

    #!/usr/bin/env python
    
    import sys
    import struct
    
    if len(sys.argv) != 3:
    	print "Usage: %s appname dest_file.xcent" % sys.argv[0]
    	sys.exit(-1)
    
    APPNAME = sys.argv[1]
    DEST = sys.argv[2]
    
    if not DEST.endswith('.xml') and not DEST.endswith('.xcent'):
    	print "Dest must be .xml (for ldid) or .xcent (for codesign)"
    	sys.exit(-1)
    
    entitlements = """
    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
    <plist version="1.0">
    <dict>
        <key>application-identifier</key>
        <string>%s</string>
        <key>get-task-allow</key>
        <true/>
    </dict>
    </plist>
    """ % APPNAME
    
    f = open(DEST,'w')
    if DEST.endswith('.xcent'):
    	f.write("\xfa\xde\x71\x71")
    	f.write(struct.pack('>L', len(entitlements) + 8))
    f.write(entitlements)
    f.close()

    Sauver et quitter pico. Reste à changer les droit sur ce script python.

    chmod 777 gen_entitlements.py
  7. Le script étant fait, il faudra que Xcode l’utilise. Mais pour l’instant, il faut connecter l’iPhone à l’ordinateur. Au moment de le connecter, Xcode Organizer averti qu’il n’est pas capable d’identifier l’appareil. J’accepte qu’il le scanne. Une processus se met en route. Le laisser terminer. À l’issue de la procédure, une ampoule est verte à côté de l’iPhone.
  8. Cette dernière étape doit être réalisée pour chaque nouveau projet Xcode. Aller dans le menu Project > New Build Phase > New Run Script Build Phase. Coller le script suivant :
    export CODESIGN_ALLOCATE=/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/codesign_allocate
    if [ "${PLATFORM_NAME}" == "iphoneos" ]; then
    /Developer/iphoneentitlements401/gen_entitlements.py "my.company.${PROJECT_NAME}" "${BUILT_PRODUCTS_DIR}/${WRAPPER_NAME}/${PROJECT_NAME}.xcent";
    codesign -f -s "iPhone Developer" --entitlements "${BUILT_PRODUCTS_DIR}/${WRAPPER_NAME}/${PROJECT_NAME}.xcent" "${BUILT_PRODUCTS_DIR}/${WRAPPER_NAME}/"
    fi

    Il n’y a rien d’autre à faire !

Problèmes

Au cours de l’utilisation, vous rencontrerez certainement quelques problèmes, plus particulièrement lorsque depuis Xcode, vous allez exécuter votre projet sur l’iPhone.

The program being debugged is not being run

  1. Double cliquer dans l’arborescence du projet sur Targets > nom du projetRun Script.

    Mettre le curseur dans la fenêtre contenant le code, fermer la fenêtre.
  2. Relancer un Build and Run

The host is no longer paired with the device

Ce problème provoque un reboot de l’iPhone ! Il suffit d’attendre que l’iPhone soit de nouveau disponible.

Diffuser des vidéos depuis son blog

Wednesday, December 22nd, 2010

Lorsque je souhaite diffuser une vidéo familiale sur mon blog, voilà les contraintes que j’ai, par ordre d’importance :

  1. La vidéo doit rester privée : seuls les personnes qui lisent le blog doivent pouvoir accéder à la vidéo.
  2. Les personnes qui lisent le blog doivent pouvoir les télécharger.
  3. Les vidéos doivent être visibles au moyen d’un navigateur Mac ou PC. Elles doivent également être visibles sur un iPod, iPhone ou encore iPad.
  4. Du moment qu’une personne lit le blog, la vidéo doit être facilement accessible (en particulier, sans devoir taper un mot de passe).
  5. Bonne qualité.

Première solution : vimeo, compte standard

Ma première solution était d’utiliser un compte vimeo gratuit. Je trouvais la qualité de leur encodage et le look général du site et du lecteur de vidéos me convenait parfaitement (largement plus que YouTube). Les quotas me suffisaient.

Cette solutions présentait cependant deux défauts :

  • Les vidéos ne sont pas visibles sur un iPhone ou iPad (contrainte 3).
  • La seule façon de rendre les vidéos privées était de les protéger avec un mot de passe (contrainte 4).
  • Pour télécharger une vidéo, la personne intéressée doit créer/avoir un compte vimeo.

Deuxième solution : vimeo, compte plus

J’ai donc récemment opté pour une autre solution : payer pour un compte vimeo plus. Cette solution était censée me permettre de régler beaucoup plus finement l’intimité (privacy) de mes vidéos (contrainte 1). De plus, les vidéos d’un compte vimeo plus devenaient accessibles depuis un iPhone ou un iPad (contrainte 3).

Cependant, malgré une plus grande possibilité d’ajustement de l’intimité, je ne suis pas parvenu à une solution qui me convenait.

Le compromis à faire était le suivant :

  • Soit je cache les vidéos du site vimeo et elles sont visibles depuis les domaines que je spécifie. Mais alors, comme elles n’apparaissent plus sur le site vimeo, elles ne sont plus téléchargeables.
  • Soit je les protège par mot de passe, mais du coup, je n’améliore guère la situation par rapport à la solution initiale.
  • Soit je les laisse visibles depuis vimeo. Finalement, seules les personnes qui nous connaissent seraient susceptibles de venir voir mes vidéos, non ? NON !

Voilà ce qu’il s’est passé : lorsque j’ai acheté un compte vimeo plus, j’en ai recréé un complet et j’ai choisi d’y re-transférer toutes mes vidéos (le but : bénéficier d’un encodage à deux passes proposé aux membres vimeo plus). J’ai donc utilisé pour la première fois leur logiciel vimeo uploader (qui est très pratique). Au bout de quelques jours de transfert, la dizaine de gigas de vidéos que j’ai s’est correctement retrouvé sur mon compte vimeo.

Par contre, il y a un réglage que je n’avais pas modifié et toutes les vidéos transférées sur mon compte vimeo étaient publiques par défaut. Et ce que j’ai vu m’a fait froid dans le dos :

Ce compte vimeo venait d’être créé, les vidéos s’y trouvaient depuis à peine quelques jours. Elles n’étaient pas encore en lien avec mes blogs. La seule façon de les voir était donc de “tomber dessus” depuis le site vimeo.

Et bien je trouve effrayant de constater que les vidéos les plus vues sont celles où l’on voit des enfants nus. Si je pouvais encore en douter, je suis convaincu maintenant de deux choses : le net fourmille de pervers; l’intimité de mes vidéos est une contrainte qui n’accepte aucun compromis.

Troisième solution : héberger moi-même

J’ai donc finalement opté pour héberger mes vidéos moi-même, c’est-à-dire chez mon fournisseur (bluehost.com pour ne pas le citer). Comme je n’ai pas de limite d’espace disque ni de transfert de données, ce n’est pas un problème majeur.

J’utilise donc maintenant le lecteur VideoJS (un lecteur libre très complet) et le plugin WordPress qui va avec. C’est un lecteur HTML5 (donc compatible avec l’iPhone et l’iPad), mais capable de se rabattre sur un lecteur flash.

Pour faire fonctionner le tout, voilà comment je procède :

Conversion de la vidéo

C’est actuellement la jungle : chaque navigateur internet support différents formats d’encodage vidéo. Voici un extrait d’une page très complète sur le sujet.

Pour me simplifier la vie, je ne propose la vidéo qu’au format mp4. Pour les navigateurs qui ne supportent pas ce codec, le lecteur se rabattera sur un lecteur flash, ce qui me convient très bien.

Cependant, le format mp4, c’est vague et pour que les vidéos puissent être visionnées sur un iPhone, le format doit être limité et le profil judicieusement choisi.

VideoJS présente d’ailleurs une petite lacune à ce niveau-là : il n’est pas possible de proposer plusieurs encodages mp4, par exemple une première version en bonne résolution pour une visualisation à partir d’un poste fixe, et une autre version en basse résolution pour une visualisation à partir d’un smartphone.

Toujours est-il que j’ai opté pour les réglages d’exportation suivants avec QuickTime :

  • Débit 512 kbits/s (à mon avis un compromis acceptable entre la taille du fichier et la qualité)
  • Taille de l’image : 640×360 (pour du 16:9 évidemment). 640, c’est la taille maximale supportée par un iPhone 3.
  • Profil de base (bouton Options vidéo...)
  • 96 kbps pour l’audio

Téléchargement de la vidéo

Au sein de l’arborescence créée par WordPress, il y a le répertoire wp-content/uploads/. J’y ai créé un répertoire videos/ dans lequel je transfert toutes mes vidéos.

Attention : avec mon hébergeur (peut-être le vôtre aussi), si le nom de fichier contient des accents, il sera introuvable depuis un lien externe.

Intégration dans une page WordPress

Grâce au plugin WordPress pour VideoJS, l’intégratoin au sein d’une page WordPress est très simple. Il suffit de mettre la balise suivante :

[video mp4="http://adresse_blog/wp-content/uploads/videos/video.mp4" preload="false" width="450" height="253"]

Les possibilités de réglages sont bien plus vastes que celles que j’utilise ici : il est possible de définir plusieurs formats de vidéo, de spécifier une image, etc.

En conclusion

Cette dernière solution n’est pas encore parfaite, mais elle me convient mieux que toutes les autres :

  1. La vidéo est privée : elle n’est accessible que depuis le blog. Elle n’apparaît nulle part ailleurs. Si en plus le blog n’est pas référencé, le niveau d’intimité obtenu me convient parfaitement.
  2. En ajoutant un lien vers le fichier mp4, les personnes qui le souhaitent peuvent télécharger la vidéo (sans même avoir un compte vimeo). Elle sera évidemment dans une résolution plus faible que l’originale.
  3. Les vidéos sont visibles sur un iPhone et un iPad. Certes la résolution pourrait être améliorée pour un iPhone 4 et un iPad, mais pour l’instant, c’est une limitation de VideoJS.
  4. Les vidéos sont facilement visionnable, sans avoir à introduire à chaque fois un mot de passe.
  5. C’est moi qui décide de la qualité et du compromis que je souhaite faire.

En tous les cas, c’est un très beau boulot que l’équipe qui développe VideoJS nous met à disposition. En plus, ils sont très actifs sur leur forum de support.

Synchronisation du calendrier et du carnet d’adresses

Wednesday, July 8th, 2009

Au sein de la famille, il est souvent utile de pouvoir partager les contacts du carnet d’adresses et certains rendez-vous du calendrier.

En l’occurence, je souhaitais arriver à la situation suivante :

  1. Rendre mon calendrier iCal accessible (au moins en lecture) à ma femme ;
  2. Pouvoir accéder (au moins en lecture) au calendrier de ma femme ;
  3. Pouvoir partager certains événements communs dans le calendrier ;
  4. Partager nos contacts du carnet d’adresses ;
  5. Pouvoir synchroniser ces informations sur nos ordinateurs et iPhones respectifs.

Calendriers partagés avec Google Calendar

La première solution envisagée devait permettre de répondre aux besoins 1, 2 et 3 de la liste ci-dessus. Voici en quoi elle consiste :

  • Créer deux comptes Google distincts, pour moi et pour ma femme ;
  • Créer un calendrier Google pour moi et autoriser ma femme à y accéder en lecture en le partageant :
    SafariÉcranSnapz000
    SafariÉcranSnapz001
  • Créer un calendrier Google pour ma femme et le partager avec moi :
    SafariÉcranSnapz002
  • Gérer ces calendriers depuis iCal :
    • Dans les préférences d’iCal, afficher l’onglet Comptes et ajouter un compte en cliquant sur +.
      iCalÉcranSnapz001
    • Donner un nom au calendrier (Description) et introduire le nom d’utilisateur (adresse du compte Google) et le mot de passe.
    • Afficher les options du serveur en cliquant sur le triangle et introduire l’URL du compte, qui aura la forme suivante : https://www.google.com/calendar/dav/compte_google@gmail.com/user et dans laquelle il faut remplacer compte_google par mon propre compte.
    • Réaliser la même chose pour le calendrier de ma femme, mais cette fois, en remplaçant compte_google par le compte de ma femme.
      iCalÉcranSnapz002

Cette solution permet donc d’avoir un calendrier distinct pour chaque membre de la famille et de donner un accès en lecture aux personnes nécessaires. Lorsqu’un événement concerne plusieurs personnes, il suffit de les inviter (au moment de la création de l’événement) et, si l’invitation est acceptée, l’événement apparaîtra également dans leurs calendriers.

Lorsque l’iPhone est synchronisé par iTunes, les calendriers seront synchronisés également.

Par contre, une limitation de l’iPhone (OS 3.0) rend cette solution peu pratique : il n’est pas possible avec l’iPhone d’ajouter des événements dans les calendriers Google.

La seule solution serait alors d’ajouter l’événement dans le calendrier normal, puis, lors de la synchronisation de l’iPhone et de iCal, déplacer cet événement dans le calendrier Google.

Cette manipulation n’est pas très pratique et j’ai donc opté pour une autre solution.

Synchronisation du calendrier entre plusieurs ordinateurs

La deuxième solution est un peu plus radicale, mais dans mon cas, plus appropriée : il s’agit de synchroniser complètement le calendrier de mon ordinateur avec celui de ma femme. Par la même occasion, le carnet d’adresses sera également synchronisé.

Avec cette solution, plus de calendrier Google propre à chaque individu : tout le monde écrira dans le calendrier iCal, mais dans deux sous-calendriers différents (mais c’est à chacun de respecter cela, car rien ne m’empêche d’ajouter des événements dans le sous-calendrier de ma femme).

La synchronisation sera prise en charge par un petit utilitaire gratuit et fort pratique : fruux.

Sa mise en place est assez simple est bien décrite dans le FAQ.

Préférences SystèmeÉcranSnapz001

Je ne l’utilise que pour synchroniser le carnet d’adresses et le calendrier, mais il fonctionne très bien. Il nécessite bien sûr une connexion à internet, car la synchronisation se fera au travers des serveurs de fruux.

C’est d’ailleurs le principal défaut de cette solution : la protection des données. Fruux semble être digne de confiance, mais il faut bien être conscient que toutes les données du calendrier et des contacts sont transférés par leurs serveurs.

Sonneries personnalisées pour l’iPhone

Saturday, June 27th, 2009

Lorsqu’on achète des produits Apple, c’est souvent parce que l’on souhaite que tout fonctionne facilement et du premier coup.

Je pensais que, après l’achat d’un iPhone 3Gs, créer des sonneries personnalisées allait être un jeu d’enfant. Déception.

Ordinateur iMac 2,5 Ghz Intel Core 2 Duo
OS OS X 10.5.6
iPhone 3Gs, OS3
iTunes 8.2

Ce que j’aimerais faire

La manipulation à laquelle je m’attendais était la suivante :

  1. Sélectionner dans iTunes le morceau à utiliser pour la sonnerie ;
  2. Menu contextuel : Créer une sonnerie
    iTunesÉcranSnapz000

Mais, contrainte complètement mesquine imposée par Apple à l’utilisateur, cette simple manipulation n’est autorisée qu’avec les morceaux achetés sur l’iTunes Store !

iTunesÉcranSnapz001

La solution

Il y a deux choses à savoir concernant les sonneries : elles doivent être encodées au format AAC et ne peuvent durer plus longtemps que 30 secondes.

La procédure décrite ci-dessous requiert que le format d’encodage soit l’AAC. Pour ce faire, aller dans les préférences de iTunes (menu iTunes : Préférences) et cliquer sur Réglages d'importation dans l’onglet Général.

iTunesÉcranSnapz011

Dans la fenêtre qui s’ouvre, choisir encodeur AAC si ce n’est pas déjà le cas et valider avec OK.

iTunesÉcranSnapz012

Tout est prêt pour commencer notre procédure de création d’une sonnerie :

  1. Choisir le morceau. Il est conseillé de le sélectionner parmi les musiques de la bibliothèque en réduisant la liste affichée au moyen d’un filtre de recherche. Il faudrait éviter de passer par une liste de lecture, car au cours de la procédure, une copie du morceau sera faite et cette copie n’apparaîtra pas forcément dans la liste de lecture et sera donc difficile à retrouver ;
    iTunesÉcranSnapz006
  2. Sélectionner le morceau choisi et choisir Obtenir les informations du menu contextuel.
    iTunesÉcranSnapz002
  3. Dans l’onglet Options, indiquer le moment du début et celui de fin (selon le format minutes:secondes.millisecondes). La durée totale ne doit pas dépasser 30 secondes. Valider avec OK.iTunesÉcranSnapz003
  4. Faire une copie au format AAC du morceau en choisissant Création de la version AAC du menu contextuel.
    iTunesÉcranSnapz004
  5. Une copie du morceau, de même nom mais de durée différente apparaît dans la liste des morceaux.
  6. Afficher le fichier de ce morceau (de durée réduite) dans le Finder en choisissant Afficher dans le Finder du menu contextuel.
    iTunesÉcranSnapz007
  7. L’extension de ce fichier est m4a.
    FinderÉcranSnapz001
    La changer en m4r.
    FinderÉcranSnapz002
  8. Effacer le morceau nouvellement créé de la bibliothèque iTunes (choisir Supprimer dans le menu contextuel), mais sans effacer le fichier (choisir Conserver le fichier).
    iTunesÉcranSnapz013
    iTunesÉcranSnapz008
  9. Retourner dans le Finder pour prendre le fichier qui vient d’être renommé et pour le glisser-déposer dans la bibliothèque iTunes.
    iTunesÉcranSnapz010
  10. Si tout s’est bien passé, le morceau apparaît directement dans la liste des sonneries.
    iTunesÉcranSnapz009

Attention !

Si le nom du fichier correspondant au morceau choisi contient des points (.), celui-ci ne sera pas reconnu comme sonnerie valide. En effet, il semble que pour vérifier si l’extension est correcte (.m4r), iTunes prend tous les caractères qui suivent le premier point apparaissant dans le nom du fichier.

Ainsi, un fichier ayant par exemple le nom ‘01 Les Chants Magnetiques, Pt. 1.m4r‘ ne sera pas reconnu comme sonnerie (aux yeux de iTunes, l’extension du fichier est ‘. 1.m4r‘ et non pas ‘.m4r‘). Le nom du fichier devra être modifié de sorte qu’il n’y ait qu’une seul point, juste avant l’extension. Par exemple, il pourrait être modifié ainsi :

01 Les Chants Magnetiques, Pt 1.m4r

Finalement

Il ne reste plus qu’à synchroniser l’iPhone pour que les nouvelles sonneries soient disponibles sur le téléphone. Elles pourront être sélectionnées dans le menu Réglages des Sons.

iPhone_Menu

iPhone_Reglages

iPhone_Sons

iPhone_Sonnerie