Cosa sono i file delle applicazioni in iOS come APK in Android?

I file del pacchetto di applicazioni in iOS sono chiamati file .ipa. IPA sta per "iOS App Store Package". Ogni file .ipa include un binario per l'architettura ARM e può essere installato solo su un dispositivo iOS.

Un IPA ha una struttura incorporata che iTunes e AppStore riconoscono, L'esempio sotto mostra la struttura di un IPA:

/Payload/
/Payload/Application.app
/iTunesArtwork
/iTunesArtwork@2x
/iTunesMetadata.plist
/WatchKitSupport/WK

La cartella Payload contiene tutti i dati dell'applicazione. Il file iTunes Artwork è un'immagine PNG di 512×512 pixel, che contiene l'icona dell'app da mostrare in iTunes e nell'App Store sull'iPad. Il file iTunesMetadata.plist contiene varie informazioni, che vanno dal nome e ID dello sviluppatore (ad esempio, Google), l'identificatore del bundle, informazioni sul copyright, il genere, il nome dell'app, la data di rilascio, la data di acquisto, ecc.

A differenza dei file .apk i file .ipa non possono essere semplicemente installati su un dispositivo iOS. Utilizza la tecnologia Fairplay digital rights management (DRM) di Apple, per impedire l'installazione di applicazioni iOS su dispositivi non autorizzati.

Fairplay DRM funziona più come SSL. Funziona con chiavi pubbliche e private.
Per esempio, per una comunicazione sicura con un server, userei la chiave pubblica del server per crittografare i dati da inviare al server. Il server userebbe poi la sua chiave privata per decifrarli.

Nel firmare un account Apple, Apple genera una coppia di chiavi pubbliche/private per il tuo nome utente. Poi ti dà la tua chiave privata e conserva la tua chiave pubblica (Ecco perché quando acquisti per la prima volta o quando ripristini il tuo iDevice devi attivarlo con il tuo account iTunes). All'attivazione, iTunes invia un identificatore unico di macchina ai server di Apple. Registra il tuo iDevice nei loro database (questo viene fatto per limitare il numero di dispositivi autorizzati) e poi trasferisce la tua chiave privata al tuo iDevice. Fondamentalmente quello che succede è che quando compri un'app (gratis o a pagamento) Apple genera un'intestazione lunga 4196 byte che è criptata con la tua chiave pubblica. Solo la tua chiave privata può decifrare l'intestazione incorporata nell'app.

Così, per esempio, se copiassi un IPA generato per te, e lo mettessi sul mio iDevice (questo supponendo che tu possa ottenerlo lì, iTunes si rifiuterebbe di sincronizzarlo comunque), e poi provassi a eseguirlo, andrebbe semplicemente in crash perché la mia chiave privata non sarebbe in grado di decifrare l'intestazione. Inoltre vale la pena notare che il file IPA non ha l'intestazione, se date un'occhiata al contenuto di un IPA vi renderete conto che contiene un file senza estensione, prendete Facebook'app per esempio, avrebbe un file chiamato 'Facebook'. Questo è il binario dell'app e questo è il file che contiene l'intestazione criptata.

Quando un utente disautorizza un computer, iTunes istruirà i server di Apple a rimuovere l'identificatore unico della macchina dal loro database, e allo stesso tempo rimuoverà tutte le chiavi utente dal dispositivo disautorizzato e dal repository delle chiavi criptate.