Alla fine fu iPhone OS 4 (in Pre-Release). Dopo aver visto un po’ di screenshot che ho fatto appena dopo averlo installato scorriamo velocemente le novità di questa nuova pre-release che sarà disponibile per tutti dalla prossima estate. Quanto segue è stato scritto in maniera molto veloce; per questo non vuole certamente essere un testo esaustivo su quello che sarà disponibile nella prossima release di iPhone OS… dovrà passare qualche settimana per dare tempo agli sviluppatori di addentrarsi verso quello che a tutti gli effetti è un aggiornamento che porta in piena maturità il mobile OS di Apple.
Multitasking
E’ sicuramente la novità più attesa. Le applicazioni compilate utilizzando la nuova SDK 4.0 non vengono più terminate una volta cliccato l’Home Button; quello che succede è che vengono automaticamente inserite in un considetto contesto di background. Questo in buona sostanza significa che l’applicazione, dopo breve, stessa entrerà automaticamente in uno stato di sospensione. Il programma, successivamente richiamato, non avrà quindi bisogno di ripetere la procedura di caricamento poiché il contenuto sarà ancora disponibile nella memoria principale (questo tra l’altro, aiuterà anche a diminuire il consumo di batteria). A questo punto alcuni programmi potrebbero aver bisogno di eseguire delle azioni in background (pensiamo ad esempio ad un messenger o ad un client VoIP come Skype). Per continuare l’esecuzione il programma potrà allora utilizzare una di queste tre tecniche:
- L’applicazione fa richiesta di una quantità finita di tempo per completare i task richiesti
- L’applicazione si dichiara come fornitore di servizi che richiedono un monitoraggio regolare (e quindi una esecuzione di codice)
- L’applicazione può utilizzare le notifiche locali (le cosiddette Local Push Notification) per generare messaggi di avvertimento in determinati momenti anche se non attiva.
Sia che l’applicazione è sospesa o continua la sua esecuzione in background, il supporto del multitasking è trasparente al programmatore e non richiede lavoro addizionale. Le applicazione in background saranno comunque soggette a terminazione in condizioni particolari (ad esempio un basso quantitativo di memoria disponibile) e di conseguenza ‘dovranno’ essere sempre pronte per essere chiuse. Questo permetterà tra le altre cose di spostare eventuale codice per il salvataggio dello stato nella breve sessione antecedente la sospensione.
Local Notifications
Le notifiche locali si abbinano alle push notification, il sistema utilizzato fino ad oggi per sopperire alla mancanza del supporto al multitasking. In particolare sarà concesso alle applicazioni di poter generare delle notifiche da visualizzare (nella stessa maniera delle push) in determinati istanti. Pensiamo ad esempio al classico bollitore del thè, o ancora meglio, ad una applicazione per la navigazione che, girando in background, avverte l’utente di svoltare al prossimo incrocio. Le notifiche locali possono essere generate e visualizzate anche quando l’applicazione stessa non sarà più in esecuzione.
Event Kit
E’ stato aggiunto un nuovo framework che prende il nome di EventKit che permette di accedere e gestire (quindi anche aggiungere) i dati presenti nel calendario utente. Un’applicazione per la prenotazione dei concerti potrà ad esempio inserire una nota nel calendario (in maniera automatica all’utente) una volta terminata la procedura di prenotazione.
File Protection
Le applicazioni che lavorano con dati sensibili (codici di carte di credito o password) possono ora fare uso di questo kit per far si che i dati personali vengano salvati in uno spazio protetto del device; un file marcato come protetto non potrà essere acceduto quando il device è bloccato. In caso di device sbloccato verrà generata una chiave di decapitazione che potrà essere usata dall’applicazione per accedere.
Core Telephony
Questo framework permetterà di accedere alle informazioni che riguardano la parte di telefonia del dispositivo (stato di una chiamata, lista delle chiamate attive, informazioni sul carrier di telefonia attivo e sullo stato della rete) e di ricevere notifiche in base a tutta una serie di eventi.
AdLib Framework
Come giù annunciato il framework AdLib nasce (probabilmente) dall’acquisizione di Quattro Wireless e rappresenta l’ingresso di Apple nel settore dell’advertising. Il framework al momento permette una gestione degli ad abbastanza rudimentale (possono essere visualizzati in vie o a tutto schermo, ma ancora non è possibile gestire i vari aspetti tecnici; una nota nella documentazione avverte che questa API è in corso di sviluppo).
AV Foundation
Il framework AV Foundation si affianca al Media Player framework ed offre tutta una serie di nuove funzioni per l’editing, la registrazione, il playback controllato e la gestione dei metadata dei file multimediali. AV Foundation si basa su un altro framework che prende il nome di CoreMedia e che permette una gestione a basso livello di tutto quello che concerne la manipolazione di file multimediali.
GameCenter
Come è stato già detto si tratta di una sorta di XBox Live, ovvero di un ‘database’ centralizzato dove poter condividere i propri risultati, sfidare avversari, inviare punteggi etc. Per i meno smaliziati una sorta di OpenFeint; nell’SDK nuova è stato quindi modificato il framework GameKit che ora permette di far gestire ai giochi la comunicazione con questo nuovo servizio.
Assets Library
Questo framework permetterà alle applicazioni di accedere e gestire tramite una interfaccia a query alle foto e ai video disponibili nella libreria utente sul device.
Core Location
CL è stato aggiornato per consentire il monitoraggio della posizione utilizzando meno risorse.
MapKit
Anche MapKit ha subito diversi miglioramenti. E’ ora possibile gestire in maniera molto più completa il traccino durante il dag delle annotazioni; inoltre è stato aggiunto il supporto agli overlay sulle mappe (così sarà possibile, ad esempio, creare delle forme più complesse sopra determinate regioni; pensiamo ad esempio ad un overlay che visualizza tramite colori le diverse temperature sopra l’Italia).
MessageUI
Anche MessageUI ha subito cambiamenti; l’introduzione di una nuova classe che prende il nome di MFMessageComposeViewController permetterà la composizione e l’invio di messaggi SMS direttamente dall’interno di una determinata applicazione (come avviene oggi per le email).
CoreGraphics
CG aggiunge il supporto per la gestione dei metadati su PDF, la creazione di profili di colore ICC e la manipolazione a livello di pixel di immagini.
Image I/O
Il framework ImageIO mette a disposizione una completa interfaccia che consente alle applicazioni di importare ed esportare immagini e metadati. Il framework si basa su Core Graphics.
… e altro ancora
Tra le altre novità più tecniche troviamo anche il supporto ai Blocchi (Blocks) introdotto in Objective-C a partire da OS X 10.6 e la possibilità da parte del sistema di usufruire della tecnologia Grand Central Dispatch (anch’essa disponibile da OS X 10.6; ne abbiamo già parlato a suo tempo qui). Fa la sua comparsa su iPhone OS 4 anche Accellerate Framework, insieme di funzioni che permettono la manipolazione veloce di strutture matematiche complesse (ad esempio calcoli DSP). Il framework sarà del tutto trasparente rispetto all’hardware e permetterà al programmatore dei far eseguire eseguire codice tecnico specifico in modo ottimizzato su tutta la gamma di dispositivi Apple (a partire da Mac, fino ad iPad e iPhone). Infine facciamo una rapida carrellata delle modifiche apportate ad UIKit, il framework per la gestione dei controlli di interfaccia. In questa nuova versione sono stati introdotti tutta una serie di metodi e delegati per la gestione del multitasking descritto all’inizio. Inoltre il disegno in UIKit è ora thread safe (sia per testo, colori, font e immagini). UIImagePickerController ha ora dei metodi per la gestione del video captare. UILocalNotification permette di accedere alle nuove funzionalità di local notification appena introdotte. UIView fa uso dei blocks per gestire le animazioni. Le applicazioni inoltre possono verificare se sono agganciate delle cuffie e gestire opportunamente il playback audio e video.