Come aggiornare i nostri iDevice via Wireless utilizzando AppleScript – Guida

28 gennaio 2012 di Fabrizio Degni in Guide, iPhone 3GS, iPhone 4, iPhone 4S, News, push, Tutorial

Ecco a voi una manciata di righe per sincronizzare iPhone, iPod Touch ed iPad in background con la soddisfazione di aver fatto una breve escursione nel mondo degli scripts.

Doug Adams, un vero e proprio guru nel mondo AppleScript, ha voluto condividere con la community uno spaccato del suo quotidiano e… qualche riga di codice grazie a cui poter sincronizzare in modo automatico, e rigorosamente in Wireless, i nostri iDevice con iTunes. Pomo della discordia la tediosità nel dover invocare manualmente la sincronizzazione del suo iPhone 3GS che, passato il testimone al piu’ recente iPhone 4, è stato relegato da Doug a telefono-orologio/sveglia/radio in particolare per la riproduzione dei suoi podcast preferiti.

Lo sviluppatore è solito ascoltare le trasmissioni nella sera per questo ha pensato ad una soluzione che gli permettesse di sincronizzare con iTunes il melafonino durante l’ora di pranzo, in modo tale da arrivare a sera con un set completo di podcast da riprodurre.

Per raggiungere questo obiettivo è stato creato un agente launchd in modo tale che, dopo aver verificato l’esecuzione di iTunes sul Mac, ne invocasse la sincronizzazione, se attivo, o l’apertura e sincronizzazione in caso contrario ma è necessario che anche l’iPhone/iPod/iPad sia impostato per la sincronizzazione via Wireless altrimenti lo script non saprà quale terminale sincronizzare.

Procediamo quindi con la creazione dello script, aprendo l’Editor AppleScript ed eseguendo, in un nuovo documento, il copia incolla di quanto a seguire:

if not checkItunesIsActive() then return

tell application “iTunes”

try

set src to (some source whose name contains “3GS”)

tell src to update

end try

end tell

to checkItunesIsActive()

tell application id “sevs” to return (exists (some process whose name is “iTunes”))

end checkItunesIsActive

Nel sorgente abbiamo evidenziato la stringa 3GS: si tratta a tutti gli effetti di un parametro contenente l’identificativo dell’iDevice, una parte del nome che abbiamo assegnato al nostro dispositivo da sincronizzare (ad esempio “iPhone 3GS di iPhoneItalia“). Non è necessario quindi inserire il nome per intero, è sufficiente una parte ma l’importante è che non vi siano altri terminali sincronizzabili con porzioni di nome simile (da evitare ad esempio parametri che possano generare conflitti come il termine  iPhoneItalia avendo terminali denominati “iPhone 3GS di iPhoneItalia” e “iPhone4S di iPhoneItalia“).

Analizzando nel dettaglio lo script, rileviamo:

  • l’handler checkItunesIsActive() serve a verificare se iTunes sia o meno in esecuzione ed in caso contrario ad invocarlo tramite il comando successivo tell application “iTunes”
  • set src to (some source whose name contains “3GS”) permette di identificare l’iDevice oggetto della sincronizzazione
  •  il comando update inizializza la sincronizzazione tra iTunes e terminale eseguita nel blocco try che offre anche una “via di fuga” dolce nel caso in cui la sincronizzazione non venisse effettuata correttamente (nel caso in cui, ad esempio, l’apparato fosse spento o fuori portata)
Salviamo il nostro script in formato Script all’interno della cartella [nome utente]/Library/iTunes/Scripts e passiamo alla creazione dell’agente launchd a cui saranno relegati oneri ed onori di lanciare il nostro script.
  • Carichiamo un editor di testi qualsiasi, TextEdit va benissimo, ed incolliamo in testo seguente all’interno di un documento vuoto:
<?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>Disabled</key>
	<false/>
	<key>Label</key>
	<string>com.YOURUSERNAME.SyncMyDeviceAgent</string>
	<key>Program</key>
	<string>/usr/bin/osascript</string>
	<key>ProgramArguments</key>
	<array>
		<string>osascript</string>
		<string>/Users/ILNOSTRONOMEUTENTE/Library/iTunes/Scripts/Sync My Device.scpt</string>
	</array>
	<key>StartCalendarInterval</key>
	<dict>
		<key>Hour</key>
		<integer>18</integer>
		<key>Minute</key>
		<integer>0</integer>
	</dict>
</dict>
</plist>
  • sostituiamo al parametro ILNOSTRONOMEUTENTE quanto esattamente richiesto (il nostro nome utente…) e ai due parametri orari 18 (ora) e 0 (minuti) il periodo in cui si desidera avviare la sincronizzazione.
  • Quando fatto, salviamo il tutto con il nome com.ILNOSTRONOMEUTENTE.SyncMyDeviceAgent.plist (sempre con la medesima sostituzione), in formato testo piano, all’interno del percorso  [startupdisk]/Library/LaunchAgents/ .
Per completare l’operazione eseguiamo un logout o riavviamo il sistema.
[ Fonte: dougscripts.com

Per restare sempre aggiornato sul tema di questo articolo, puoi seguirci su Twitter, aggiungerci su Facebook o Google+ e leggere i nostri articoli via RSS.

Unisciti alla nostra community su Facebook! Clicca Mi Piace!
L'utilizzo del contenuto di questo articolo è soggetto alle condizioni della Licenza Creative Commons. Sono consentite la distribuzione, la riproduzione e la realizzazione di opere derivate per fini non commerciali, purché venga citata la fonte.
  • Anonimo

    Ottimo! Generoso il nostro Doug ;)

  • Maurizio

    Potrebbe funzionare anche su win?

  • http://www.facebook.com/profile.php?id=100002575313070 Valerio Pagano

    certo basta che cerchi windowscript su applicazioni e invece di usare textedit usi notepad :D Funziona!

  • http://www.facebook.com/profile.php?id=100002575313070 Valerio Pagano

    certo basta che cerchi windowscript su applicazioni e invece di usare textedit usi notepad :D Funziona!

  • Anonimo

    io però non trovo windowscript per win7
    e poi non trovo nemmeno i 2 percorsi dove salvare i file:
    …/Library/iTunes/Scripts
    …/Library/LaunchAgents
    puoi aiutarmi gentilmente?

  • Zeusz Luppiter

    Non riesco a salvare lo script !!! Mi da sempre lo stesso errore : 

    Errorre di sintassi / si attendeva espressione, proprietà o form chiave, ecc. ma e stato trovato token sconosciuto.

    Cosa devo fare???? Mi può aiutare qualcuno ?

  • http://www.facebook.com/sev7en Fabrizio Degni

    Zeusz, verifica la sintassi del codice, è AppleScript?

  • Zeuslup

    Non capisco una mazza … io non mi intendo tanto…non capisco neache cosa sia la sintassi del codice :( Per favore, puoi dirmi piu chiaro ?!

    Grazie

  • http://france-pharma.com/achat-cialis-france.html achat cialis

    but,
    Pomo della discordia la tediosità nel dover invocare manualmente la sincronizzazione del suo iPhone 3GS che, passato il testimone al piu’ recente iPhone 4, è stato relegato da Doug a telefono-orologio/sveglia/radio in particolare per la riproduzione dei suoi podcast preferiti.