Generazione di un iTunes Connect package (.itmsp)

Negli ultimi giorni grazie all’azienda per la quale lavoro ho affrontato un’interessante tematica in materia di IAP(In App Purchase) sul mondo iOs. Gli IAP, offrono ai clienti di una determinata applicazione mobile la possibilità di fruire di contenuti extra effettuando per l’appunto degli acquisti utilizzando l’app mobile. Per capire meglio di cosa si tratta basti pensare ad esempio ad un app di un editore che permette di leggere un determinato numero sbloccandolo dall’applicazione oppure ad una app di giochi che consente di giocare ad uno specifico livello solo previo l’acquisto e così via…Senza dilungarci più di tanto sulla tipologia di IAP andiamo a vedere invece cosa è un iTunes Connect package, estensione .itmsp.

Generazione itmsp partendo da uno YAML

Questo file è strutturato come una semplice cartella sfogliabile dove all’interno vengono definite le configurazioni degli acquisti da caricare sull’applicazione mobile. Il file principale che troveremo al suo interno è il file metadata.xml che per l’appunto deve adempiere agli standard Apple dei metadati (https://help.apple.com/asc/appsspec/en.lproj/static.html#itc9e568b34a). Okay bene più che soffermarmi su quali dati sono necessari tipo nome IAP, descrizione, immagine, ecc..vi voglio parlare di un processo di automazione della creazione dell’itmsp. Ho scoperto un interessante progettino online [https://github.com/evilwindowdog/itunesfs] scritto in Python, che sebbene fosse di svariati anni fa avrebbe meritato più fortuna (anche se l’autore dello stesso non si è mostrato affatto disponibile a rispondere ad una mia richiesta 🙂 Va beh, dettagli 🙂 ). Che fa questo progetto, semplice prende in input un file YAML ed una struttura di folder ben organizzata e crea il nostro fantomatico file .itmsp. Voi a questo punto del tutorial vi chiederete ma che ce ne facciamo di un file .itmsp, un file itmsp può essere passato al software Transporter per l’appunto effettuare l’upload degli IAP. Bello ma ancora non mi convince perchè dovrei prendere in considerazione questo progetto ormai abbandonato da 6 anni. Beh, il mio suggerimento anche grazie ad un collega che mi ha aiutato in ciò non è tanto prendere questo progettino ma personalizzarlo ed adattarlo al nostro backend indipendentemente dal linguaggio in cui è scritto il nostro software, non a caso nel tutorial non parleremo affato di Python, che è il linguaggio in cui è scritto il progetto GitHub. Inizia a farsi interessante. In pratica effettuando il download del zip del progetto da GitHub potremmo vedere che per generare l’itmsp partendo da un file YAML è necessaria una istruzione Ruby. Calma, sono andato troppo veloce! Nell’installazione del progettino Petrakeas titolare del repository GitHub https://github.com/evilwindowdog, nel file itunesfslib/command_line.py in fondo al file lancia una istruzione Ruby [<executable_path>, ‘package’, ‘-i’, ‘output.yaml’,’–prefix-image’] dove <executable_path> è il percorso appositamente configurato con all’interno il file YAML per poter così generare il file .itmsp. Bene ulteriore precisazione sempre nel tutorial dice che opzionalmente occorre installare la gem itunes_transporter_generator (https://github.com/colinhumber/itunes_transporter_generator), nel nostro caso essa è estremamente necessaria, senza di essa il suo progetto genera il metadata.xml senza però avere il pacchetto .itmsp e sinceramente con solo l’xml facciamo ben poco in quanto Transporter che vedrmo a breve necessita dell’Itunes Package. Pertanto non distriamoci a prescindere dal linguaggio del nostro backend per ultimare la correttezza del tutorial occorre:

  1. Generare un file YAML come dalle specifiche Apple [https://help.apple.com/asc/appsspec/en.lproj/static.html];
  2. Installiamo Ruby, possiamo scaricarlo a questo link (https://www.ruby-lang.org/en/downloads/);
  3. Installiamo la gemma di Ruby: gem install itunes_transporter_generator;
  4. Testiamo il comando Ruby prima di procedere ad implementare un processo da software. Posizionandoci nella cartella bin ove è installato Ruby, lanciamo ad esempio dal prompt di Windows itmsp package -i <PERCORSO_YAML_FILE> –prefix-image 2>&1
  5. Verifichiamo che nella folder sia stato creato il file .itmsp ed implementiamo in nostro comando nel nostro backend, ad esempio in PHP potremmo lanciare una shell_exec di questo comando e verificare che il tutto sia andato a buon fine.

Il tutorial è finito, però voglio far presente che ci sono software molto più utilizzati di quelli strutturati rispetto all’implementazione di questo sviluppatore, i quali sfruttano il ben più conosciuto Fastlane, non ho usato Fastlane perchè quest’ultimo non ci fornisce il file .itmsp, che può essere ulteriormente editato e personalizzato e questo è un vantaggio, lo svantaggio ora è dover litigare con il software Transporter (https://apps.apple.com/us/app/transporter/id1450874784) affinchè lo YAML che diamo in pasto al nostro “algoritmo” sia generato in maniera ottimale, mentre Fastlane si occupa in maniera contestuale anche dell’upload. Perciò lascio questo post alla libera interpretazione degli sviluppatori, sì avere l’itmsp ci permette di esplorare soluzioni non pre-impacchettate e facilmente adattabili al nostro software ma se vogliamo il risultato “tutto e subito” forse Fastlane che fa al caso nostro, quindi scegliamo accuratamente 🙂 Non solo mi prometto anche di far seguire a questo post un più approfondito studio di Transporter per capire se la soluzione adottata minimizza codice ed errori futuri senza appunto l’introduzione di pesanti strumenti di build automatici come Fastlane.

    Generazione di un iTunes Connect package (.itmsp) ultima modidfica: 2020-10-16T12:50:08+02:00 da Gianluca Di Vincenzo
    Posted in: Java, PHP, SOA

    By on 16 Ottobre 2020

    Tagged: , , , ,