venerdì 3 luglio 2015

App che avviano altre app

Se un'app su un dispositivo mobile (Android o iOS) deve comunicare con un'altra app sullo stesso dispositivo, un metodo semplice e veloce è quello di utilizzare uno schema URL personalizzato.
Gli schemi URL si impostano nelle schermata standalone application settings alla voce custom url scheme:
come vedete dall'esempio, ho inventato la parola appdimax per avere un modo univoco per richiamare l'app. La parola appdimax  in questo caso sarà il nostro URL personalizzato.
Per avviare la nostra app con questo URL personalizzato basterà invocarlo da un'altra app, il codice per farlo è semplicemente:

launch url "appdimax://"

Se noi volessimo anche inviare delle informazioni all'app potremmo metterle dopo; ad esempio se vogliamo inviare il messaggio "Mario è simpatico", potremmo scrivere:

put urlencode("Mario è simpatico") into messaggio
launch url ("appdimax://" & messaggio)

a questo punto dobbiamo solo decidere cosa succede quando l'altra app viene avviata.
Il messaggio URLwakeup si attiva proprio quando l'app si attiva attraverso un URL personalizzato. Ad esempio il codice seguente vi dice cosa ha ricevuto l'app:

on urlWakeUp pURL
   answer "Sono stato attivato col seguente messaggio: " & pURL
end urlWakeUp

Nell'esempio precedente avevamo mandato un messaggio, ma formattandolo correttamente per l'invio come URL, infatti otteniamo:

Sono stato attivato col seguente messaggio: appdimax://Mario+%E8+simpatico

se vogliamo recuperare il messaggio originale, dobbiamo fare il passaggio inverso:

on urlWakeUp pURL
   #leviamo la parte appdimax://
   put char 12 to -1 of pURL into pURL
   #codifichiamo secondo la codifica normale
   put urldecode(pURL) into pURL
   answer "Sono stato attivato col seguente messaggio: " & pURL
end urlWakeUp

In questo modo otteniamo:

Sono stato attivato col seguente messaggio: Mario è simpatico

Altri sistemi per recuperare l'URL è utilizzare la funzione mobileGetLaunchURL(), ad esempio:

put mobileGetLaunchUrl() into tURL