Questo articolo richiede una revisione stilistica. Scopri come puoi essere d’aiuto.`
In alcune circostanze è preferibile non distribuire un'app attraverso Firefox Marketplace, per esempio nel caso si desideri condividerla soltanto con i membri della propria organizzazione, eseguire un test su una versione beta o semplicemente farne un uso privato. In questa pagina è spiegato come autopubblicare le proprie app al di fuori di Firefox Marketplace.
Le app open web possono essere installate su Firefox OS e dispositivi dotati di Firefox per Android o Firefox per desktop utilizzando Apps.install
o Apps.installPackage
. Il ruolo di entrambe le API è trasmettere l'URL del manifesto contenente la descrizione dell'app da installare. Dunque i requisiti di base per autopubblicare un'app sono:
- un server dove ospitare il manifesto dell'app,
- un server dove ospitare l'app (nel caso di app remota) o l'app stessa compressa in un file zip,
- un codice nel sito web che richiami
Apps.install
oApps.installPackage
a seconda del caso.
Limitazioni
Prima di autopubblicare un'app open web è bene considerare le seguenti limitazioni:
- Le app autopubblicate non sono in grado di utilizzare le API con privilegi. Per usufruire di tali API un'app dev'essere di tipo locale (packaged) e contenuta in un file zip firmato tramite il processo di caricamento dell'app su Firefox Marketplace.
- Le app autopubblicate non possono usufruire dei pagamenti in-app di Firefox Marketplace.
- È necessario implementare autonomamente una propria strategia di diffusione, in quanto l'app non comparirà negli elenchi di Firefox Marketplace.
App locali autopubblicate
È possibile pubblicare un'app locale ospitando il file zip su un server insieme a un mini-manifesto. Il mini-manifesto, utilizzato per identificare l'app durante il processo di installazione, deve essere ospitato nella stessa directory del file zip. Il passo successivo è creare uno script per richiamare Apps.installPackage
e trasmettergli le informazioni contenute nel mini-manifesto. Ecco il procedimento dettagliato:
-
Comprimere i contenuti dell'app in un file zip e rinominarlo
package.zip
. Questo file deve contenere tutte le risorse dell'app, compreso il manifesto principale.Attenzione: al momento di creare il file zip, posizionare tutti i contenuti che devono comparire nell'app nella cartella principale, senza sottocartelle. Comprimendo la cartella genitore con all'interno le sottocartelle, il manifesto risulterebbe in una posizione sbagliata, invalidando l'app.
- Creare un file e nominarlo
manifest.webapp
, poi aggiungere i contenuti riportati di seguito. Questo file è chiamato mini-manifesto perché consiste in una versione leggermente ridotta del manifesto incluso nel file zip dell'app locale. Viene utilizzato daApps.installPackage
per installare l'app. Per informazioni dettagliate sul contenuto del file leggere Campi del mini-manifesto di seguito.{ "name": "My sample app", "package_path" : "https://my-server.com/my-app-directory/package.zip", "version": "1", "developer": { "name": "A. Developer", "url": "https://my-server.com" } }
- Creare lo script di installazione. Nell'esempio viene utilizzato un semplice file html nominato
index.html
, ma è possibile anche aggiungere lo script a un pulsante o utilizzare qualsiasi altro metodo appropriato per richiamarlo al sito web. Il codice JavaScript di questa pagina richiama l'API di installazione per le app locali (Apps.installPackage
), includendo anche dei callback per notificare l'esito dell'installazione.<html> <body> <p>Packaged app installation page</p> <script> // This URL must be a full url. var manifestUrl = 'https://my-server.com/my-app-directory/manifest.webapp'; var req = navigator.mozApps.installPackage(manifestUrl); req.onsuccess = function() { alert(this.result.origin); }; req.onerror = function() { alert(this.error.name); }; </script> </body> </html>
- Caricare i file su un server o sito web copiando
package.zip
,manifest.webapp
eindex.html
nella directory desiderata (nel codice di esempiomy-app-directory
). - Ora è possibile installare l'app su un dispositivo compatibile (come uno smartphone Firefox OS). Aprire il file
index.html
(nel testo di esempio posizionato al percorsohttps://my-server.com/my-app-directory/index.html
). Verrà visualizzata una richiesta di conferma per procedere con l'installazione. Confermando inizierà il processo di installazione. Al termine del processo, lo script della pagina web notificherà l'esito positivo o negativo dell'operazione.
Suggerimento: per eseguire i test su dispositivo è possibile anche ospitare un'app locale su un server locale. Il server web e il dispositivo devono essere sullo stesso network, inoltre il server deve essere abilitato a servire richieste dal network locale. Sarà sufficiente includere il percorso assoluto nel package_path
del mini-manifesto, esattamente come viene incluso normalmente (vedi sotto). Se si sta utilizzando una porta non predefinita, includere anche le informazioni della porta (es. https://10.10.12.1:8080/package.zip
).
Campi del mini-manifesto
Gli sviluppatori che scelgono di pubblicare le proprie app con Firefox Marketplace non hanno bisogno di compilare il mini-manifesto, in quanto esso viene generato automaticamente dal Marketplace, estrapolando le informazioni necessarie dal manifesto dell'app incluso nel file zip. I dettagli sui contenuti del manifesto principale si trovano nell'articolo App manifest.
Gli sviluppatori che desiderano autopubblicare un'app devono invece compilare il mini-manifesto. Il metodo più sicuro per ottenere un mini-manifesto è fare una copia del manifesto principale e modificare le parti necessarie. Lavorare su una copia garantisce il rispetto del primo requisito di un mini-manifesto, ovvero che i campi name
, version
, developer
e locales
siano esattamente uguali a quelli del manifesto principale. Occorre poi aggiungere i campi esclusivi del mini-manifesto: package_path
, release_notes
e size
.
package_path
(obbligatorio)- Il percorso assoluto (ovvero l'url completo, ad esempio
https://my-server.com/my-app-directory/manifest.webapp
) della posizione in cui è stato archiviato il file zip dell'app. release_notes
(facoltativo)- Informazioni sulla versione corrente dell'app. Su Firefox Marketplace queste informazioni vengono fornite durante il processo di caricamento.
size
(facoltativo)- Le dimensioni del file zip espresse in byte. Questa informazione viene utilizzata da
Apps.installPackage
per mostrare l'avanzamento del processo di installazione.
Esempio:
{ "name": "My app", "package_path": "https://thisdomaindoesnotexist.org/myapp.zip", "version": "1.0", "size": 172496, "release_notes": "First release", "developer": { "name": "Developer Name", "url": "https://thisdomaindoesnotexist.org/" }, "locales": { "fr-FR": { "name": "Mon application" }, "se-SE": { "name": "Min balla app" } }, "icons": { "16": "/icons/16.png", "32": "/icons/32.png", "256": "/icons/256.png" } }
Gli altri campi presenti nell'esempio sono:
name
(obbligatorio)- Il nome dell'app. Lunghezza massima 128 caratteri.
version
(facoltativo)- La versione dell'app.
developer
(facoltativo)- Informazioni sullo sviluppatore, contiene i campi
name
eurl
. Le informazioni sullo sviluppatore presenti nel manifesto principale e nel mini-manifesto devono coincidere. locales
(facoltativo)- Informazioni sulla localizzazione. I codici del locale devono essere espressi nel formato
xx-YY
. icons
(facoltativo)- Le icone in uso dell'app.
Per informazioni più dettagliate sui contenuti dei manifesti leggere App manifest.
App remote autopubblicate
Rispetto a quello per le app locali, il processo di autopubblicazione di un'app remota (hosted) è più diretto: basta creare i contenuti con lo stesso metodo utilizzato per la pubblicazione su Firefox Marketplace. In pratica occorre creare il file manifest dell'app. In seguito si aggiunge il codice per richiamare Apps.install
. Il codice è essenzialmente lo stesso che si utilizza per le app locali, mostrato precedentemente, con la sola differenza che è anche possibile utilizzare un riferimento relativo alla posizione del file manifest.