Ugo Betori
Multimedia design
www.ugobetori.it
[email protected]
Multimedia design
Ugo Betori offre servizi e consulenza
per la grafica, il web e il mobile
design. Progetta e realizza siti
web, soluzioni e-commerce,
applicazioni per dispositivi mobile.
Consulente, tiene corsi di formazione
e aggiornamento. Collabora con il
portale HTML.it e con la casa editrice
Edizioni Master.
Grafica
Web design
E-commerce
Mobile design
Interactive design
Illustrazione
Rendering 3D
Consulenza
Training
Sebbene lo sviluppo di applicazioni iPhone
native richieda l’impiego dell’apposito SDK e
di competenze di programmazione piuttosto
avanzate, per la realizzazione di siti e applicazioni
web la situazione è decisamente più semplice. Se
si conoscono HTML, CSS e un po’ di javascript
si è già in possesso degli strumenti necessari
per sviluppare le proprie applicazioni. Il browser
dell’iPhone è infatti quasi del tutto simile al browser
Safari per desktop.
1. Applicazioni web vs applicazioni native
In linea di principio, si può affermare che un’applicazione web per l’iPhone è sostanzialmente un sito web
ottimizzato per il dispositivo della casa di Cupertino. Le caratteristiche di un’applicazione web di questo tipo
prevedono un’interfaccia disegnata mediante tecnologie web standard, la possibilità di essere accessibile mediante
un URL e l’ottimizzazione per le specifiche dell’iPhone. Viceversa, un’applicazione nativa richiede la conoscenza
di Objective-C, il linguaggio di programmazione di Apple, e viene installata nell’iPhone avendo quindi accesso
all’hardware del dispositivo (accelerometro, fotocamera, altoparlanti, ecc.). Ultima differenza di non poco conto
riguarda il processo di inserimento e soprattutto di approvazione dell’app stessa nell’AppStore. Per pubblicare
applicazioni in AppStore è necessario disporre della licenza ufficiale, questa ha un costo annuale di 99$. Oltre a
ciò, Apple si riserva il diritto di verificare le caratteristiche dell’applicazione nativa ed eventualmente di rifiutarne
l’approvazione. Le applicazioni proposte all’AppStore devono rispettare il contratto del SDK, che prevede alcune
limitazioni. Ad esempio, è vietato duplicare funzioni già presenti nel sistema operativo dell’iPhone, come l’invio
di SMS e MMS, così come sono vietate applicazioni con contenuto a sfondo sessuale o violento. Altre limitazioni
possono riguardare l’uso di API di terze parti, ecc. In caso di rifiuto, l’applicazione non viene pubblicata sull’App
Store fino a quando non se ne presentata una nuova versione aventi le modifiche richieste. Un’applicazione web
invece non passa dall’AppStore e non è quindi soggetta ad alcuna “censura” e può essere liberamente pubblicata
come un qualsiasi sito web.
2. Il Safari dell’iPhone
Il browser utilizzato dall’iPhone è Safari Mobile che, a sua volta, si basa su WebKit, il motore di rendering di Safari.
Quasi tutte le tecnologie presenti in Safari per Desktop sono disponibili anche nella versione per iPhone. Esiste
quindi il pieno supporto ai linguaggi HTML 4.01, XHTML 1.0, CSS 2.1, parte del CSS 3, JavaScript 1.4, supporto
del Dom e funzionalità Ajax. Per quanto riguarda i formati immagine, Safari Mobile può visualizzare immagini
Gif, Jpg, Png e Tiff e riprodurre filmati in alcuni formati QuickTime e file MP3. Inoltre è in grado di convertite in
HTML e visualizzare file Pdf e Microsoft Office (Word, Powerpoint, Excel). Per contro, l’iPhone non supporta la
tecnologia Flash, così come non permette di utilizzare Java. Inoltre ha un accesso limitato al file system. Per fortuna
è compatibile con le tecnologie Ajax e supporta gli eventi di JavaScript in modo tale da permettere di utilizzare
facilmente soluzioni di HTML dinamico.
Prima di iniziare a produrre le proprie applicazioni, è bene fare il punto su una caratteristica che è bene conoscere
per progettare al meglio le pagine HTML destinate al “melafonino”. Lo schermo dell’iPhone 3 ha una risoluzione
di 320x480 pixel ma, poiché alcuni pixel sono occupati dalla barra di stato e dalla barra dei pulsanti, solo parte
di questo spazio può essere utilizzato per visualizzare la pagina. In pratica questo porta ad avere una viewport
effettiva di 320x356px. Se poi si elimina la barra dell’indirizzo del browser, l’area utile sale a 320x416px. Occorre
poi considerare che il device può essere ruotato in posizione orizzontale fornendo, in questo caso, una viewport di
209x480px (269x480 senza barra degli indirizzi). Non bisogna dimenticare che l’utente può eseguire lo zoom di un
elemento di una particolare area per meglio visualizzare i dati in esso contenuti.
Quando l’iPhone carica una pagina Web esegue il cosiddetto scaling: ossia riduce la risoluzione della pagina
per farla visualizzare a dovere nella viewport del cellulare. A meno che non lo si imposti diversamente, il browser
presuppone che la pagina sia larga 980 pixel, dopodiché effettua lo scaling alla risoluzione di 320 pixel se il telefono
è in posizione verticale o 480 pixel se è disposto in orizzontale. Tale comportamento ha senso soprattutto quando
il browser cerca di visualizzare un sito web standard non destinato ai dispositivi mobili. Se invece si tratta di un sito
appositamente sviluppato per l’iPhone, il web designer tenderà a formattare i contenuti delle pagine sulla base delle
dimensioni effettive del dispositivo rendendo di fatto inutile lo scaling. Occorre quindi informare di ciò il browser
aggiungendo un meta tag nelle pagine HTML che compongono il sito:
<meta name=”viewport” content=”user-scalable=no, width=device-width” />
Il meta tag va inserito all’interno del tag <head> del documento HTML, consente di informare il browser riguardo
le dimensioni della viewport che, nel nostro caso, verranno calcolate in base alla larghezza (width) del dispositivo.
Occorre chiarire che tale accorgimento è valido solo per il Browser Safari, per la precisione tutti i software che
utilizzano il motore WebKit. Allo stesso modo, come vedremo nel prossimo capitolo, esistono proprietà CSS
specifiche per Web Kit, grazie alle quali è possibile far si che l’interfaccia delle nostre pagine appaia proprio come
un’applicazione per iPhone.
3. Struttura del documento HTML
Meta tag a parte, il documento che costituirà un’ipotetica homepage potrebbe contenere del semplice codice HTML
standard, come ad esempio:
<div id=”contenitore”>
<div id=”menu”>
<h1><a href=”index.html”>Ugo Betori</a></h1>
<div id=”menu_principale”>
<ul>
<li><a href=”soluzioni.html”>Soluzioni</a></li>
<li><a href=”portfolio.html”>Portfolio</a></li>
<li><a href=”download.html”>Download</a></li>
</ul>
</div>
<div id=”menu_secondario”>
<ul>
<li><a href=”info.html”>Info</a></li>
<li><a href=”blog.html”>Blog</a></li>
</ul>
</div>
</div>
<div id=”contenuti”>
<h2>Benvenuti sul sito per iPhone</h2>
<p>lorem ipsum dolor...</p>
</div>
</div>
La pagina è composta da una serie di elementi div opportunamente nidificati ed identificati tramite id. Oltre al
contenitore che svolge il ruolo da cui prende il nome, sono presenti un menu_principale, un menu_secondario
e un ultimo div di nome contenuti. Naturalmente si tratta di una disposizione e di una nomenclatura decisamente
arbitraria. Ciò che conta infatti sta scritto nel foglio di stile che si andrà ad associarvi.
4. Fogli di stile per WebKit
Come anticipato, WebKit accetta alcuni tag proprietari che non sono disponibili per altri browser. Alcuni di questi
sono davvero utili per creare elementi grafici dal look and feel tipico dell’ambiente iPhone. Ad esempio, i moduli di
ricerca, i box di testo o le immagini dell’iPhone, non hanno il classico contorno rettangolare ma presentano angoli
arrotondati. Per applicare questa visualizzazione degli angoli si usa la proprietà specifica:
-webkit-border-radius
che è possibile assegnare sia ai tag div che ai tag delle immagini.
Grazie a questo semplice esempio, si è ora in grado di leggere al meglio il foglio di stile che gestisce la
formattazione delle pagine HTML: ogni volta che si incontra una proprietà che inizia con il prefisso
–web kit si saprà che si tratta di una proprietà specifica valida solo per i browser basati su Web Kit.
Il foglio di stile di esempio potrebbe quindi contenere le seguenti proprietà:
-webkit-gradient(linear, left top, left bottom, from(#ccc), to(#999));
-webkit-border-top-left-radius:8px;
-webkit-border-top-right-radius:8px;
-webkit-border-bottom-left-radius:8px;
-webkit-border-bottom-right-radius:8px;
Il primo della lista è decisamente interessante: permette di impostare un background contenente una sfumatura
generata senza l’impiego di file di immagine. I parametri da sinistra a destra presenti tra parentesi definiscono
rispettivamente il tipo di gradiente ( che può essere linear o radiant), il punto iniziale (left top), il punto finale (left
bottom) e i colori della sfumatura. Le altre quattro proprietà della lista si possono ricondurre alla sola caratteristica
del bordo arrotondato visto sopra. Nel caso specifico un valore di 8 pixel per il raggio della curva viene assegnato a
tutti e quattro gli angoli del rettangolo (top-left, top-right, bottom-left e bottom-right). Infine, si può utilizzare anche la
proprietà text-shadow:
text-shadow:0px 1px 0px #fff;
grazie alla quale è possibile applicare un effetto ombra al testo. In questo caso non si tratta di una proprietà
specifica di Web Kit, tanto che essa è rappresentata correttamente anche da altri browser. I parametri da sinistra a
destra riguardano l’offset orizzontale, quello verticale, la sfocatura e il colore dell’ombra.
Ora, se si prova ad aprire la pagina all’interno di Safari si potrà apprezzare il risultato ottenuto. Vale senz’altro la
pena di rpovare a visualizzare la pagina anche tramite InternetExplorer o Firefox per cogliere le differenze. Chi
possiede un Mac e ha installato XCode e l’SDK per iOS può testare la pagina anche sull’emulatore iPhone.
5. Webkit il motore di Safari
WebKit è un progetto open source nato dalla combinazione di componenti del sistema grafico KDE e di tecnologie
Apple. Come anticipato, WebKit costituisce il motore del web browser di casa Apple, e non solo. Esso permette a
sviluppatori terzi di includere con facilità nelle loro applicazioni molte delle funzioni proprie di Safari. Dal punto di
vista tecnico, WebKit include due framework di basso livello: WebCore (un parser HTML e un renderer basato su
KHTML) e JavaScriptCore (un motore JavaScript basato su KJS). Tra le applicazioni che usano Web Kit ricordiamo
anche Chrome, il browser sviluppato da Google; NetNewsWire, un lettore RSS che usa WebKit per visualizzare
i feed RSS e per navigare sul web; BBEdit, un editor di testo e di pagine HTML, che usa WebKit per visualizzare
l’anteprima delle pagine web, i cellulari Nokia da Symbian S60v3 in su.
6. Ad ognuno il suo
Ogni browser ha un suo user agent, una stringa di testo che lo rende identificabile dai web server. L’user agent
dell’iPhone 3 è il seguente:
Mozilla/5.0 (iPhone; U; CPU like Mac OS X; en) AppleWebKit/420+ (KHTML, like Gecko) Version/X Mobile/Y Safari/Z.
Individuando lo user agent è quindi possibile approntare alcuni accorgimenti che migliorano il comportamento delle
pagine al cospetto dei diversi dispositivi mobili. Allo stesso modo, qualora si possiedano diverse versioni del sito,
è possibile realizzare un reindirizzamento verso una homepage appositamente disegnata per iPhone o addirittura
mostrare determinati contenuti solo a chi si collega con il melafonino. Ad esempio, con questo codice JavaScript è
possibile indirizzare l’utente iPhone ad una nuova pagina:
< script type=“text/javascript”>
if (navigator.userAgent.indexOf(“iPhone”) != -1) {
location.href = “http://miosito.it/iphone/”;
}
</script>
Mentre il codice seguente consente di visualizzare un testo dedicato esclusivamente a quanti navigano con lo
smartphone targato Apple (o a quanti sanno come spacciarsi per il suo user agent):
<script type=“text/javascript“>
window.onload = function () {
if (navigator.userAgent.indexOf(“iPhone”) != -1) {
var mioDiv = document.getElementById(“nascosto”);
mioDiv.innerHTML =“<h1>Testo esclusivo per l’iPhone.</h1>”;
}
}
</script >
Fatto questo, sarà sufficiente aggiungere, nel punto desiderato della pagina HTML, un elemento div vuoto al quale si
assegnerà l’id “nascosto”.