Ač dlouholetý a spokojený uživatel telefonu s Androidem, nelibě nesu rostoucí velikosti telefonů s tímto operačním systémem. Telefon bych rád ovládal jednou rukou, a to zkrátka u pěti palcových bestií jde jen krkolomně. Tolik k důvodu, proč si „komplikovat“ život něčím tak proprietárním jako je iPhone 5 (iOS 6.0.2).
Protože jsem o iOS prakticky nic nevěděl, první dny jsem strávil bojem s větrnými mlýny a nebetyčnou frustrací způsobenou aplikací poznatků z klasických, na souborech založených operačních systémech. V případě iOS platí, že uživatel se přizpůsobuje produktu, nikoliv naopak. JailBreak (aka „JB“) sice leccos zlepší, ale zásadní restrikce nastavené Apple nepřekoná. Kdybych si býval byl přečetl příspěvek k iOS na Wikipedii, tápání by se jistě zkrátilo.
Proklaté iTunes
Kratké shrnutí vlastností ekosystému iOS:
- Jednotlivé aplikace jsou „uzavřené“ v malé klícce (aka sandbox či jail) a ven – na data jiných aplikací či na data uložená obecně mimo klícku – se mohou podívat jen pomocí existujícího velmi omezeného API.
- Apple předpokládá, že telefon se primárně obsluhuje pomocí iTunes (programu) či přes iCloud (sdílené úložiště).
- Výchozí aplikace navázané na program iTunes v iOS nepracují přímo se soubory, ale s informacemi v databázi.
- JPEG a MP3 soubory přenesené do iOS pomocí iTunes jsou přejmenovány na IMG_XXXX.JPG a YYYY.MP3 a uloženy v definovaných adresářích. Obdobně to zřejmě funguje i s ostatními podporovanými typy multimédií (podcasty, videa).
- Předpokládá se, že uživatel nemá rád soukromí a data používaných na zařízeních iOS (iPad, iPod, iPhone) sdílí prostřednictvím iCloud a PhotoStream s kýmkoliv a čímkoliv jej napadne.
Z toho plynou některé zásadní problémy:
- Prosté překopírování souborů (MP3, JPEG) pomocí ifuse přes USB kabel či sftp přes wifi je použitelné jen částečně – smazáním mezipaměti lze sice donutit některé aplikace k aktualizaci příslušných databází, ale obecně je to k ničemu – kvůli změněným názvům souborů bude stejně následná synchronizace se zdrojem dat (domácí NAS) nepoužitelná, navíc např. u obrázků zmizí adresářová struktura (např. podalba) a bylo by nutné je ručně vytvořit v telefonu.
- Ač některé aplikace v App Store mají slibný název (PhotoSync – synchronizace fotografií přes WebDAV, sFTP), v praxi jsou na automatizované operace nepoužitelné, neb API neumožňuje vytváření alb (složek), mazání fotek (to je nutné provést ručně v telefonu) a i kdyby ano, tak aplikace nic neví o skutečném názvu souboru, takže následná synchronizace je nemožná.
- Vzhledem k tomu, že zřejmě valná většina uživatelů používá program iTunes pro synchronizaci dat mezi počítačem a iOS, tak i většina aplikací v App Store podporuje práci s daty v databázích iTunes – což lze pouze přes ono API – a číst soubory z konkrétních adresářů vůbec neumí… V lepším případě nabízí vývojář sdílení dat přes obecně známé služby (DropBox, Google Drive, atd.).
Potenciálním řešením je používat aplikace, které podporují File Sharing přes iTunes (sekce v programu iTunes naznačující, že v klícce aplikace je složka Documents, do které lze nahrát soubory a aplikace s nimi bude pracovat).
Je jasné, že s těmito soubory bude pracovat pouze ta konkrétní aplikace a žádná jiná. Některé aplikace umožňují vlastní data exportovat do iTunes (ať už přímo např. do fotoalba či přes prostředníka – zálohování všech dokumentů v iCloud) a tím je zpřístupní i ostatním aplikacím iOS. (Toto poslední tvrzení nemohu empiricky doložit, neb žádné další webové služby kromě App Store jsem neaktivoval.)
Život bez iTunes a balastu kolem
A když uživatel nemůže používat iTunes (program) a nechce sdílet svá data přes rádoby zabezpečené servery jako je iCloud, DrobBox, Picasa, Flickr? Musí hledat.
Hledání to není snadné – popisky aplikací jsou často plné marketingových nesmyslů, takže způsob fungování aplikace se z toho vyčíst nedá. A na rozdíl od Google Play neumožňuje App Store otestování placené aplikace a žádost na vrácení peněz v případě nespokojenosti.
V Linuxu sice existuje alternativa k iTunes zvaná gtkPod (fungující skrze libimobiledevice), ale vzhledem k nefunkční podpoře aktuální verze iOS 6.0.2 nemohu praktickou použitelnost vyzkoušet.
Nicméně alternativy existují (průběžně aktualizuji):
- XBMC (open source, vyžaduje JB) – klasika, zvládá prohlížení fotografií, přehrávání videí i hudby. Potíž je s titěrnými ikonami a písmem (chce to pořádný skin pro retina displej s malými fyzickými rozměry). Díky JB má přístup kamkoliv (!) v domovském adresáři. Není možnost sdílení souborů přes API (e-mail, iTunes).
- Another Photo Viewer (zdarma) – umožní procházet adresářovou strukturu s fotografiemi, fotografie prohlížet a přes API odeslat e-mailem. Snímky zobrazuje jako dlaždice, adresáře však jen jako nic neříkající ikonu.
- Capriccio (zdarma s reklamami) – hudební přehrávač s přístupem jak přes API iOS, tak přímo k adresářové struktuře. Umí vytvářet playlisty.
- Documents Free (Mobile Office Suite) iOS (zdarma, s reklamami) – kromě toho, že trochu umí pracovat s „kancelářskými“ dokumenty, tak obsahuje i http server pro sdílení souborů, který funguje i v případě WiFi tetheringu (mnohé jiné aplikace nejsou ochotny http/ftp server spustit, je-li wifi v režimu Tetheringu).
- iFile (shareware, vyžaduje JB) – souborový manažer. Neplacená verze neumí kopírovat či přesouvat soubory. Obsahuje http server pro upload/download (server funguje i v režimu Wifi Tetheringu – pozor na to, že zpřístupní celou adresářovou strukturu), umí přistoupit na WebDav či FTP servery.
- Pwntunes (placené, JB) – hudební soubory uložené v My Music importuje do knihovny hudby (lze tedy používat iPod.app).
- zbytečné: OPlayer Lite (zdarma s reklamami) – audio a video přehrávač – prochází adresářovou strukturou, CIFS či FTP složkami. Taktéž má zabudovaný HTTP, FTP a Bonjour server.
- zbytečné: USB Flash Disk (placené) – totéž jako Documents Free, navíc podporuje playlisty a import/export fotek do knihovny fotoaparátu.
Existuje mnoho aplikací s víceméně shodnými vlastnostmi – umějí procházet adresáře a seznamy souborů, zobrazit dokumenty (PDF, obrázky, videa, hudbu). Z praktického pohledu tedy stačí iFile (podporuje „záložky“ a má přístup všude) a např. Documents Free pro jeho webový server, který zůstane uzavřen pěkně v klícce.
Jak sdílet vybrané soubory přes lokální WiFi
Hledal jsem řešení, které nebude vyžadovat na klientu (druhém počítači/tabletu/telefonu jakéhokoliv výrobce) instalaci pomocného software a které bude fungovat nezávisle na tom, zda je v okolí nějaká WiFi síť.
- pomocí iFile zkopírovat soubor do složky /private/var/mobile/Applications/xxxxsložkaDocumentsFreexxxx/Documents.
- spustit Documents Free a aktivovat sdílení v sekci „WiFi“.
- je-li spuštěn Osobní hotspot (WiFi Tethering), nezobrazí se adresa serveru (iPhonu). Ve výchozím nastavení by to mělo být 172.20.10.1.
- na klientu stačí použít standardní prohlížeč webových stránek.
Soubor by šel nasdílet i pomocí iFile, tím se ovšem zpřístupní celý souborový systém iOS, což není úplně nejlepší.
V každém případě mít nainstalován Documents Free není úplně od věci, protože umožní ukládat na telefon i dokumenty stažené z internetu.
Jak uživatelské aplikaci zpřístupnit soubory umístěné mimo klícku (pouze pro odvážné)
Cest je více:
- Převést aplikaci na systémovou (unsandboxing). Zřejmě to nefunguje se všemi aplikacemi…
- Vytvořit v klícce (hard) link k adresáři mimo klícku (snadné, ale nebezpečné řešení – viz níže).
- Skriptem vytvořit v klícce stejnou strukturu adresářů jako ve zdrojovém adresáři mimo klícku a hard linky vytvářet přímo k jednotlivým souborům. Toto řešení je relativně snadné a bezpečné.
Vyvedení aplikace z klícky
To be done…
Hard link zdrojového adresáře
Umí-li příslušná aplikace pracovat s vlastními dokumenty (v adresáři /private/var/mobile/xxxxsložkaAplikacexxxx/Documents), pak lze v tomto adresáři vytvořit hard link k jinému adresáři s daty:
# ln -d /private/var/mobile/Media/Pictures /private/var/mobile/xxxsložkaAplikacexxx/Documents
Smyslem dané akce je, aby více aplikací mohlo používat tytéž soubory (XBMC + Capriccio, XMBC + APViewer).
Děláte to ovšem na vlastní nebezpečí, protože vytvářet hard link k adresáři se velmi důrazně nedoporučuje a může to vést k nestandardním situacím (viz Google „why are hard links not allowed to directories“).
V každém případě je dobré mít na paměti, že při smazání /private/var/mobile/xxxsložkaAplikacexxx/Documents/Pictures se smažou i data v /private/var/mobile/Media/Pictures. Ke smazání dojde velmi snadno, např. odinstalací aplikace…
Pozn.: Symbolic links bohužel nefungují, iOS si to umí ohlídat. Nepochybně časem dojde i na hard links.
Kopie zdrojové adresářové struktury a hard linky k souborům
To be done…
Poznámky
- libimobiledevice – zatím nepodporuje synchronizaci multimédií ala iTunes s iOS 6.x, takže nefunguje ani gtkPod.
- ifuse – iPhone lze připojit jako běžný USB disk.
- open ssh server (pouze JB) – podporuje sshfs, čili přenos přes wifi není žádným problémem. Server se spouští na požádání při příchozím spojení, tj. porty serveru je třeba nastavit v /etc/services. Pokud je chtěno, aby naslouchal na více portech, tak lze do /etc/services přidat řádky s názvem služby např. ssh2 a v /Library/LaunchedDaemons/com.openssh.sshd.plist změnit název démona a název socketu na ssh2.
- Ruční záloha http://forums.whirlpool.net.au/archive/1733604
- Význam jednotlivých souborů http://www.ifans.com/forums/threads/list-of-files-and-their-roles-in-itunes-backups-and-how-to-use-them.379983/page-4