Manuals
Manuals




This translation is community contributed and may not be up to date. We only maintain the English version of the documentation. Read this manual in English

Sviluppo per iOS

La creazione di bundle di giochi per iOS è disponibile solo nella versione per Mac dell’editor Defold.

iOS richiede che qualsiasi applicazione di cui crei una build e che vuoi eseguire sul tuo telefono o tablet debba essere firmata con un certificato e un profilo di provisioning rilasciati da Apple. Questo manuale spiega i passaggi necessari per creare un bundle del tuo gioco per iOS. Durante lo sviluppo, spesso è preferibile eseguire il gioco tramite l’applicazione di sviluppo, perché consente di ricaricare a caldo contenuti e codice direttamente sul dispositivo.

Il processo di firma del codice di Apple

La sicurezza delle applicazioni iOS si basa su diversi componenti. Puoi accedere agli strumenti necessari iscrivendoti al programma iOS Developer Program di Apple. Una volta iscritto, accedi al Developer Member Center di Apple.

Apple Member Center

La sezione Certificates, Identifiers & Profiles contiene tutti gli strumenti necessari. Da qui puoi creare, eliminare e modificare:

Certificates
Certificati crittografici rilasciati da Apple che ti identificano come sviluppatore. Puoi creare certificati di sviluppo o di produzione. I certificati di sviluppo consentono di testare determinate funzionalità, come il meccanismo degli acquisti in-app, in un ambiente di test sandbox. I certificati di produzione vengono usati per firmare l’applicazione finale da caricare sull’App Store. Ti serve un certificato per firmare le applicazioni prima di poterle installare sul dispositivo per i test.
Identifiers
Identificatori per vari usi. Puoi registrare identificatori con caratteri jolly (ad esempio some.prefix.*) utilizzabili con più applicazioni. Gli App ID possono contenere informazioni sui servizi dell’applicazione, ad esempio se l’applicazione abilita l’integrazione con Passbook, Game Center e così via. Questi App ID non possono essere identificatori con caratteri jolly. Perché i servizi dell’applicazione funzionino, l’identificatore del bundle della tua applicazione deve corrispondere all’App ID.
Devices
Ogni dispositivo di sviluppo deve essere registrato con il proprio UDID (Unique Device IDentifier, vedi sotto).
Provisioning Profiles
I profili di provisioning associano i certificati agli App ID e a un elenco di dispositivi. Stabiliscono quale applicazione di quale sviluppatore può essere installata su quali dispositivi.

Per firmare i tuoi giochi e le tue applicazioni in Defold, servono un certificato valido e un profilo di provisioning valido.

Alcune operazioni disponibili nella pagina iniziale del Member Center possono essere eseguite anche dall’ambiente di sviluppo Xcode, se lo hai installato.

Identificatore del dispositivo (UDID)
Puoi trovare l’UDID di un dispositivo iOS collegandolo a un computer tramite Wi-Fi o cavo. Apri Xcode e seleziona Window ▸ Devices and Simulators. Quando selezioni il dispositivo, vengono visualizzati il numero di serie e l’identificatore.

Dispositivi in Xcode

Se non hai installato Xcode, puoi trovare l’identificatore in iTunes. Fai clic sull’icona dei dispositivi e seleziona il tuo dispositivo.

Dispositivi in iTunes

  1. Nella pagina Summary, individua Serial Number.
  2. Fai clic una volta su Serial Number per cambiare il campo in UDID. Facendo clic più volte, verranno visualizzate diverse informazioni sul dispositivo. Continua a fare clic finché non compare UDID.
  3. Fai clic con il pulsante destro sulla lunga stringa UDID e seleziona Copy per copiare l’identificatore negli appunti, così potrai incollarlo facilmente nel campo UDID quando registri il dispositivo nel Developer Member Center di Apple.

Sviluppare con un account sviluppatore Apple gratuito

A partire da Xcode 7, chiunque può installare Xcode e sviluppare gratuitamente sul dispositivo. Non è necessario iscriversi all’iOS Developer Program. Xcode rilascerà automaticamente un certificato che ti identifica come sviluppatore (valido per 1 anno) e un profilo di provisioning per la tua applicazione (valido per una settimana) sul tuo specifico dispositivo.

  1. Collega il dispositivo.
  2. Installa Xcode.
  3. Aggiungi un nuovo account a Xcode e accedi con il tuo Apple ID.
  4. Crea un nuovo progetto. Va bene anche una semplice Single View App.
  5. Seleziona il tuo Team (creato automaticamente per te) e assegna un identificatore del bundle all’applicazione.

Annota l’identificatore del bundle, perché dovrai usare lo stesso identificatore nel tuo progetto Defold.

  1. Assicurati che Xcode abbia creato un Provisioning Profile e un Signing Certificate per l’applicazione.

  2. Crea la build dell’applicazione sul dispositivo. La prima volta, Xcode ti chiederà di abilitare la modalità sviluppatore e preparerà il dispositivo con il supporto per il debugger. Potrebbe volerci un po’ di tempo.
  3. Dopo aver verificato che l’applicazione funzioni, trovala sul disco. Puoi vedere il percorso della build nel report di build in Report Navigator.

  4. Individua l’applicazione, fai clic con il pulsante destro e seleziona Show Package Contents.

  5. Copia il file embedded.mobileprovision in una posizione sul disco dove potrai ritrovarlo.

Questo file di provisioning può essere usato insieme alla tua identità di firma del codice per firmare applicazioni in Defold per una settimana.

Quando il profilo di provisioning scade, devi creare nuovamente la build dell’applicazione in Xcode e ottenere un nuovo file di provisioning temporaneo come descritto sopra.

Creare un bundle di applicazione iOS

Quando hai l’identità di firma del codice e il profilo di provisioning, puoi creare dall’editor un bundle di applicazione autonomo per il tuo gioco. Basta selezionare Project ▸ Bundle... ▸ iOS Application... dal menu.

Firma del bundle iOS

Seleziona la tua identità di firma del codice, individua il file di provisioning mobile e scegli la variante (Debug o Release). Puoi deselezionare la casella Sign application per saltare il processo di firma e firmare manualmente in un secondo momento. Seleziona Simulator per creare un bundle arm64_sim-ios per il simulatore iOS anziché un bundle per dispositivo.

I bundle per simulatore funzionano solo nel simulatore iOS sui Mac con Apple Silicon. Non usano un’identità di firma né un profilo di provisioning, quindi le opzioni di firma, installazione e avvio vengono disabilitate quando Simulator è selezionato. Installa il bundle con xcrun simctl come descritto sotto.

Premi Create Bundle: ti verrà chiesto di specificare dove creare il bundle sul computer.

Bundle di applicazione iOS ipa

Specifica l’icona da usare per l’applicazione, lo storyboard della schermata di avvio e altre opzioni nel file delle impostazioni del progetto game.project, nella sezione iOS.

Info.plist personalizzato e rilevamento delle destinazioni locali

Il file Info.plist integrato per iOS contiene il servizio Bonjour e la descrizione dell’uso della rete locale necessari per il rilevamento automatico delle destinazioni da parte dell’editor nelle build che non sono di release. Un file Info.plist personalizzato sostituisce questo manifesto di base integrato. Se usi un manifesto personalizzato per una build di debug e hai bisogno del rilevamento delle destinazioni, della profilazione, dell’hot reload o dello streaming dei log sulla rete locale, includi queste voci:

{{^variant_release}}
<key>NSBonjourServices</key>
<array>
    <string>_defold._tcp</string>
</array>
<key>NSLocalNetworkUsageDescription</key>
<string>Discover Defold targets on the local network.</string>
{{/variant_release}}

La condizione Mustache esclude le voci per il rilevamento dai bundle di release. La stringa che descrive l’utilizzo viene mostrata all’utente da iOS e può essere modificata o localizzata. Rimuovi la condizione solo se l’applicazione di release stessa usa lo stesso servizio Bonjour e le stesse funzionalità di rete locale.

Varianti di build

Quando crei il bundle di un gioco, devi scegliere quale tipo di motore usare. Hai tre opzioni di base:

  • Debug
  • Release
  • Headless

Queste diverse versioni sono anche indicate come Build variants

Quando scegli Project ▸ Build ottieni sempre la versione di debug.

Debug

Questo tipo di eseguibile viene generalmente usato durante lo sviluppo di un gioco perché include diverse funzionalità utili per il debug:

  • Profilatore - Serve a raccogliere contatori delle prestazioni e dell’utilizzo. Scopri come usare il profilatore nel manuale sulla profilazione.
  • Registrazione dei log - Quando la registrazione dei log è abilitata, il motore registra informazioni sul sistema, avvisi ed errori. Il motore produce anche i log generati dalla funzione Lua print() e dalle estensioni native che usano dmLogInfo(), dmLogError() e così via. Scopri come leggere questi log nel manuale sui log del gioco e del sistema.
  • Hot reload - L’hot reload è una potente funzionalità che permette a uno sviluppatore di ricaricare le risorse mentre il gioco è in esecuzione. Scopri come usarla nel manuale sull’hot reload.
  • Servizi del motore - Puoi connetterti a una versione di debug di un gioco e interagire con essa attraverso diverse porte TCP aperte e vari servizi. Questi servizi comprendono la funzionalità di hot reload, l’accesso remoto ai log e il profilatore menzionati sopra, oltre ad altri servizi per interagire a distanza con il motore. Scopri di più sui servizi del motore nella documentazione per gli sviluppatori.

Release

In questa variante le funzionalità di debug sono disabilitate. Scegli questa opzione quando il gioco è pronto per essere pubblicato in uno store di applicazioni o distribuito ai giocatori in altri modi. È sconsigliato pubblicare un gioco con le funzionalità di debug abilitate per diversi motivi:

  • Le funzionalità di debug occupano un po’ di spazio nel file binario e è buona pratica cercare di mantenere il più possibile ridotte le dimensioni del file binario di un gioco pubblicato.
  • Le funzionalità di debug richiedono anche un po’ di tempo della CPU. Questo può influire sulle prestazioni del gioco se un utente dispone di hardware di fascia bassa. Sui telefoni cellulari, il maggiore utilizzo della CPU contribuisce anche al riscaldamento e al consumo della batteria.
  • Le funzionalità di debug possono rivelare informazioni sul gioco che non dovrebbero essere accessibili ai giocatori, per ragioni legate alla sicurezza o alla prevenzione di trucchi e frodi.

Headless

Questo eseguibile funziona senza grafica né audio. Ciò significa che puoi eseguire i test unitari e gli smoke test del gioco su un server di integrazione continua (CI), o persino usarlo come server di gioco nel cloud.

Installare e avviare un bundle su un iPhone collegato

Puoi installare e avviare il bundle creato usando le caselle Install on connected device e Launch installed app dell’editor nella finestra di dialogo Bundle:

Installazione e avvio del bundle iOS

Per usare questa funzionalità, devi avere installato lo strumento a riga di comando ios-deploy. Il modo più semplice per installarlo è usare Homebrew:

$ brew install ios-deploy

Se l’editor non riesce a rilevare il percorso di installazione dello strumento ios-deploy, dovrai specificarlo in Preferences.

Creare uno storyboard

Puoi creare un file storyboard usando Xcode. Avvia Xcode e crea un nuovo progetto. Seleziona iOS e Single View App:

Creazione del progetto

Fai clic su Next e procedi alla configurazione del progetto. Inserisci un Product Name:

Impostazioni del progetto

Fai clic su Create per completare il processo. Il progetto è stato creato e puoi procedere alla creazione dello storyboard:

Vista del progetto

Trascina e rilascia un’immagine per importarla nel progetto. Poi seleziona Assets.xcassets e rilascia l’immagine in Assets.xcassets:

Aggiunta di un'immagine

Apri LaunchScreen.storyboard e fai clic sul pulsante più (+). Digita imageview nella finestra di dialogo per trovare il componente ImageView.

Aggiunta di una vista immagine

Trascina il componente Image View sullo storyboard:

Aggiunta allo storyboard

Seleziona l’immagine che hai aggiunto in precedenza ad Assets.xcassets dal menu a discesa Image:

Posiziona l’immagine e apporta le altre modifiche necessarie, magari aggiungendo una Label o un altro elemento dell’interfaccia. Quando hai finito, imposta lo schema attivo su Any iOS Device (arm64) (o Generic iOS Device) e seleziona Product ▸ Build. Defold supporta iOS 15.0 e versioni successive sui dispositivi a 64 bit, quindi mantieni la versione minima di destinazione a 15.0 o successiva. Attendi il completamento del processo di build.

Se usi immagini nello storyboard, non verranno incluse automaticamente in LaunchScreen.storyboardc. Usa il campo Bundle Resources in game.project per includere le risorse. Ad esempio, crea la cartella LaunchScreen nel progetto Defold e una cartella ios al suo interno (la cartella ios serve a includere questi file solo nei bundle per iOS), quindi inserisci i file in LaunchScreen/ios/. Aggiungi questo percorso in Bundle Resources.

L’ultimo passaggio consiste nel copiare il file compilato LaunchScreen.storyboardc nel progetto Defold. Apri Finder nel percorso seguente e copia il file LaunchScreen.storyboardc nel tuo progetto Defold:

/Library/Developer/Xcode/DerivedData/YOUR-PRODUCT-NAME-cbqnwzfisotwygbybxohrhambkjy/Build/Intermediates.noindex/YOUR-PRODUCT-NAME.build/Debug-iphonesimulator/YOUR-PRODUCT-NAME.build/Base.lproj/LaunchScreen.storyboardc

L’utente del forum Sergey Lerg ha realizzato un tutorial video che illustra il processo.

Una volta ottenuto il file storyboard, puoi farvi riferimento da game.project.

Creare un catalogo di asset per le icone

Il catalogo di asset è il metodo consigliato da Apple per gestire le icone della tua applicazione. È infatti l’unico modo per fornire l’icona usata nella scheda dell’App Store. Puoi creare un catalogo di asset nello stesso modo di uno storyboard, usando Xcode. Avvia Xcode e crea un nuovo progetto. Seleziona iOS e Single View App:

Creazione del progetto

Fai clic su Next e procedi alla configurazione del progetto. Inserisci un Product Name:

Impostazioni del progetto

Fai clic su Create per completare il processo. Il progetto è stato creato e puoi procedere alla creazione del catalogo di asset:

Vista del progetto

Trascina e rilascia le immagini nei riquadri vuoti che rappresentano le diverse dimensioni di icona supportate:

Aggiunta delle icone

Non aggiungere icone per Notifications, Settings o Spotlight.

Quando hai finito, imposta lo schema attivo su Build -> Any iOS Device (arm64)(o Generic iOS Device) e seleziona Product -> Build. Attendi il completamento del processo di build.

Assicurati di creare la build per Any iOS Device (arm64) o Generic iOS Device, altrimenti riceverai l’errore ERROR ITMS-90704 quando caricherai la build.

Build del progetto

L’ultimo passaggio consiste nel copiare il file compilato Assets.car nel progetto Defold. Apri Finder nel percorso seguente e copia il file Assets.car nel tuo progetto Defold:

/Library/Developer/Xcode/DerivedData/YOUR-PRODUCT-NAME-cbqnwzfisotwygbybxohrhambkjy/Build/Products/Debug-iphoneos/Icons.app/Assets.car

Una volta ottenuto il file del catalogo di asset, puoi farvi riferimento insieme alle icone da game.project:

Aggiunta dell'icona e del catalogo di asset a game.project

Non è necessario fare riferimento all’icona dell’App Store da game.project. Viene estratta automaticamente dal file Assets.car durante il caricamento su iTunes Connect.

Installare un bundle di applicazione iOS

L’editor scrive un file .ipa, che è un bundle di applicazione iOS. Per installare il file sul dispositivo, puoi usare uno dei seguenti strumenti:

Puoi anche usare lo strumento a riga di comando xcrun simctl per lavorare con i simulatori iOS disponibili tramite Xcode:

# show a list of available devices
xcrun simctl list

# boot an iPhone X simulator
xcrun simctl boot "iPhone X"

# install your.app to a booted simulator
xcrun simctl install booted your.app

# launch the simulator
open /Applications/Xcode.app/Contents/Developer/Applications/Simulator.app

Manifesto sulla privacy di Apple

Il manifesto sulla privacy è un elenco di proprietà che registra i tipi di dati raccolti dalla tua applicazione o da un SDK di terze parti e le API utilizzate dall’applicazione o dall’SDK per le quali è obbligatorio dichiarare una motivazione d’uso. Per ogni tipo di dato raccolto e per ogni categoria di API utilizzata che richiede una motivazione, l’applicazione o l’SDK di terze parti deve registrare le motivazioni nel file del manifesto sulla privacy incluso nel proprio bundle.

Defold fornisce un manifesto sulla privacy predefinito tramite il campo Privacy Manifest nel file game.project. Quando crei un bundle dell’applicazione, il manifesto sulla privacy viene unito agli eventuali manifesti sulla privacy presenti nelle dipendenze del progetto e incluso nel bundle dell’applicazione.

Per saperne di più sui manifesti sulla privacy, consulta la documentazione ufficiale di Apple.

Informazioni sulla conformità alle norme di esportazione

Quando invii il tuo gioco all’App Store, ti verrà chiesto di fornire informazioni sulla conformità alle norme di esportazione relative all’uso della crittografia nel gioco. Apple spiega perché sono necessarie:

“Quando invii la tua applicazione a TestFlight o all’App Store, la carichi su un server negli Stati Uniti. Se distribuisci la tua applicazione al di fuori degli Stati Uniti o del Canada, l’applicazione è soggetta alle leggi statunitensi sull’esportazione, indipendentemente da dove ha sede la tua entità giuridica. Se la tua applicazione usa, accede a, contiene, implementa o incorpora la crittografia, ciò è considerato un’esportazione di software crittografico. Questo significa che la tua applicazione è soggetta ai requisiti statunitensi di conformità alle norme di esportazione, oltre che ai requisiti di conformità alle norme di importazione dei paesi in cui distribuisci l’applicazione.”

Il motore di gioco Defold usa la crittografia per i seguenti scopi:

  • Effettuare chiamate su canali sicuri (ad esempio HTTPS e SSL)
  • Proteggere il copyright del codice Lua (per impedirne la duplicazione)

Questi usi della crittografia nel motore Defold sono esenti dall’obbligo di presentare documentazione di conformità alle norme di esportazione secondo la legislazione degli Stati Uniti e dell’Unione europea. La maggior parte dei progetti Defold mantiene questa esenzione, ma l’aggiunta di altri metodi crittografici potrebbe modificarne lo stato. È tua responsabilità assicurarti che il progetto soddisfi i requisiti di queste leggi e le regole dell’App Store. Per ulteriori informazioni, consulta la panoramica sulla conformità alle norme di esportazione di Apple.

Se ritieni che il tuo progetto sia esente, imposta la chiave ITSAppUsesNonExemptEncryption su False nel file Info.plist del progetto; consulta Manifesti delle applicazioni per ulteriori dettagli.

FAQ

D: Non riesco a installare il mio gioco Defold usando un account Apple Developer gratuito.

R: Assicurati di usare nel progetto Defold lo stesso identificatore del bundle che hai usato nel progetto Xcode quando hai generato il profilo di provisioning mobile.

D: Come posso controllare le autorizzazioni (entitlement) di un’applicazione di cui è stato creato il bundle?

R: Da Controllare le autorizzazioni di un’app compilata:

codesign -d --ent :- /path/to/the.app

D: Come posso controllare le autorizzazioni di un profilo di provisioning

R: Da Controllare le autorizzazioni di un profilo:

security cms -D -i /path/to/iOSTeamProfile.mobileprovision