Egy tetszőleges zeneszerkesztővel komponáljuk meg, vágjuk ki, effekteljük, tegyünk vele, amit akarok, de lehetőleg legyen rövidebb 30 másodpercnél. Ha kész a mű mentsük el MP3 vagy éppen WAV formátumba. A lényeg, hogy az iTunes kezelni tudja.
Dobjuk is rögtön a művet az iTunes-ba és konvertáljuk AAC formátumba és keressük meg, hova jött létre az eredmény. Egy M4A file-t kell keresni (Get info és alul látszik az elérési útvonal). Készítsünk róla egy másolatot M4R kiterjesztéssel is. Mindkét állományt másoljuk a telefon /private/var/root/Media/iTunes_Control/Ringtones könyvtárába.
Most menjünk a /private/var/root/Media/iTunes_Control/iTunes könyvtárba és ott nyissuk meg a Ringtones.plist filet, ami így néz ki, amikor nincsenek csengőhangok még regisztrálva benne.
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Ringtones</key>
<dict>
</dict>
</dict>
</plist>
A legbelső dict tag-ek között kell létrehozni egymás után, csengőhangokként a következő XML darabot:<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Ringtones</key>
<dict>
</dict>
</dict>
</plist>
<key>[filenév].m4r</key>
<dict>
<key>GUID</key><string>[egyedi azonosítószám]</string>
<key>Name</key><string>[név a listában]</string>
</dict>
<key>[filenév].m4a</key>
<dict>
<key>GUID</key><string>[egyedi azonosítószám]</string>
<key>Name</key><string>[név a listában]</string>
</dict>
A filenév mindkét esetben legyen azonos, úgy, mint az egyedi azonosító és a listában megjelenítendő név is. Még nem tudom mi a két bejegyzés megtételének oka, de fogadjuk el, hogy így működik.<dict>
<key>GUID</key><string>[egyedi azonosítószám]</string>
<key>Name</key><string>[név a listában]</string>
</dict>
<key>[filenév].m4a</key>
<dict>
<key>GUID</key><string>[egyedi azonosítószám]</string>
<key>Name</key><string>[név a listában]</string>
</dict>
Ez még csak a megoldás egyik fele. Ha most megpróbáljuk a szinkronizálást az iTunes-szal, akkor felülírja a plist file-r és nem jelenik meg a választható hangok között a mienk. Ennek megakadályozására a következő trükköt találtam.
Ha a telefon gyökérkönyvtárában nem szerepelne a iTunes_Control symlink, akkor hozzuk létre:
ln -s /private/var/root/Media/iTunes_Control /iTunes_Control
Most átnevezzük az eredeti Ringtones.plist file-t és egy symlinket készítünk az eredeti nevével: mv /iTunes_Control/iTunes/Ringtones.plist /iTunes_Control/iTunes/Invincible.plist
ln -s /iTunes_Control/iTunes/Invincible.plist /iTunes_Control/iTunes/Ringtones.plist
Elméletileg kész van, de egyes esetekben nem működik. Próbáljuk ki! Ha a szinkronizálás után a file tartalma újraíródna, akkor tegyük a következőket: ln -s /iTunes_Control/iTunes/Invincible.plist /iTunes_Control/iTunes/Ringtones.plist
mv /private/var/root/Media/iTunes_Control/iTunes/Ringtones.plist /private/var/root/Media/iTunes_Control/iTunes/Invincible.plist
ln -s /private/var/root/Media/iTunes_Control/iTunes/Invincible.plist /private/var/root/Media/iTunes_Control/iTunes/Ringtones.plist
így már nekem is működött. Az iTunes ugyan sopánkodik, hogy egyes file-okat nem tud szinkronizálni, de ez nem érdekes.
ln -s /private/var/root/Media/iTunes_Control/iTunes/Invincible.plist /private/var/root/Media/iTunes_Control/iTunes/Ringtones.plist