Il y a des circonstances où il n'est pas souhaitable de rendre une application disponible sur le Firefox Marketplace. C'est le cas, lorsque l'on veut distribuer l'application uniquement au membre d'une organisation ou bien lorsque l'application est encore en phase de test privé. Cette page explique comment publier sa propre application en dehors du Marketplace.
Les Open Web Apps sont installables sous Firefox OS, Firefox pour android et Firefox pour desktop en utilisant Apps.install
ou Apps.installPackage
. Dans les deux cas, ces APIs envoient l'URL du manifeste décrivant l'application à installer. Ainsi afin de publier soi-même son application, les pré-requis minimaux sont:
- Un serveur où le manifest de l'application est accessible.
- Un serveur où l'application est accessible pour les applications hébergées et pour les applications empaquetées le fichier ZIP contenant l'application.
- Un code sur un site web appelant
Apps.install
ouApps.installPackage
selon la situation.
Limitations
Avant de publier vous-même votre Open Web Apps, vous devriez garder en mémoires les limitations suivantes:
- Les applications auto-publiées ne peuvent pas avoir accés aux APIs privilégiées. Pour utiliser ces APIs, l'application doit être une application empaquetée et avoir son fichier ZIP signé en utilisant le systéme de soumission du Firefox Marketplace.
- L'application ne peut pas utiliser les achats intégrés du Firefox MarketPlace.
- Vous devrez faire connaitre votre application vous-même car elle ne sera pas visible sur le Firefox marketplace.
Auto-publication d'applications empaquetées
Vous pouvez auto-publier votre application empaquetée en hébergeant son fichier ZIP ainsi qu'un mini-manifeste associé sur un serveur. Le mini-manifeste doit être dans le même dossier que le fichier ZIP car il permet d'identifier l'application lors de l'installation. Une fois le mini-manifeste créé, il ne reste plus qu'à créer un script invoquant Apps.installPackage
avec l'url du mini-manifeste pour installer l'application. Voyons maintenant en détails les différentes étapes:
-
Empaquetez le contenu de votre application dans une archive ZIP et donnez lui le nom
package.zip
. L'archive doit contenir toutes les ressources de l'application ainsi que que le manifeste principal.Attention: Le manifeste doit être à la racine de l'archive.
- Créez un fichier appelé
manifest.webapp
et ajoutez le contenu ci-dessous. Ce fichier est connu sous le nom de mini-manifeste, car il s'agit d'une version simplifiée du fichier manifeste contenu dans l'archive de l'application. Il est utilisé parApps.installPackage
pour entreprendre l'installation de l'application. Pour plus de détails, référez-vous à la documentation sur les champs du mini-manifeste ci-dessous.{ "name": "Le nom de mon application", "package_path" : "
<a class="LinkyMobile-ext" href="http://my-server.com/my-app-directory/my-app.zip" title="Linkification: http://my-server.com/my-app-directory/my-app.zip">https://my-server.com/my-app-directory/package.zip</a>
", "version": "1", "developer": { "name": "A. Developpeur", "url": "<a class="LinkyMobile-ext" href="http://my-server.com" title="Linkification: http://my-server.com">https://my-server.com</a>
" } } - Créez le script qui installera l'application. Pour cela, l'exemple ci-dessous utilise une simple page HTML nommée
index.html
, mais vous pouvez invoquer le script dans n'importe qu'elle méthode de votre site web. Le javaScript de cette page appelle l'API d'installation d'application empaquetée (Apps.installPackage
) et inclut des notifications indiquant si l'installation a réussi ou non.<html> <body> <p>Page d'installation de l'application empaquetée</p> <script> // Cette URL doit être une URL compléte var manifestUrl = '
<a class="LinkyMobile-ext" href="https://my-server.com/my-app-directory/package.manifest" title="Linkification: https://my-server.com/my-app-directory/package.manifest">https://my-server.com/my-app-directory/manifest.webapp</a>
'; var req = navigator.mozApps.installPackage(manifestUrl); req.onsuccess = function() { alert(this.result.origin); }; req.onerror = function() { alert(this.error.name); }; </script> </body> </html> - Copiez les fichiers
package.zip
,package.manifest
, etindex.html
sur votre serveur dans le dossier choisi (my-app-directory
dans cet exemple). - Maintenant vous pouvez installer l'application sur un appareil compatible. Ouvrez le fichier
index.html
(dans cet exemple le chemin de ce fichier esthttps://mon-serveur.com/App-directory/index.html
) et vous aurez une fenêtre demandant une confirmation avant d'installer l'application. Une fois l'installation terminée, vous aurez une indication sur le résultat de l'installation.
Astuce: Vous pouvez héberger localement une application empaquetée et le tester sur un appareil. Le serveur et l'appareil doivent pouvoir communiquer sur le réseau local. N'oubliez pas d'indiquer le numéro port si vous n'utilisez pas le port standard, par exemple: https://10.10.12.1:8080/package.zip
.
Champs du mini-manifeste
Dans le cas d'auto-publication, il est nécessaire de créer un mini-manifeste. Si l'application est est publiée sur le Firefox Marketplace, le mini-manifeste est généré automatiquement à partir du manifeste de l'application.
Le meilleur moyen de créer le mini-manifeste est de copier le manifeste de l'application et de le modifer de maniére apropriée. Ainsi les champs name
, version
, developer
et locales
fields seront exactement les mêmes dans les deux manifestes. Il ne vous reste plus qu'à ajouter les champs package_path
, release_notes
et size
:
-
package_path
(requis) -
Le chemin absolu (URL compléte:
https://mon-serveur.com/App-directory/manifest.webapp
) vers l'archive de l'application. -
release_notes
(optionel) - Notes de version de l'application. Sur le Firefox Marketplace cette information est fournie lors du processus de soumission.
-
size
(optionel) -
La taille de l'archive en octets. Cette information est utilisée par
Apps.installPackage
pour fournir une barre de progression lors de l'installation.
Voici un exemple d'un mini-manifeste:
{ "name": "My app", "package_path": "<a class="LinkyMobile-ext" href="http://thisdomaindoesnotexist.org/myapp.zip" title="Linkification: http://thisdomaindoesnotexist.org/myapp.zip">https://thisdomaindoesnotexist.org/myapp.zip</a>
", "version": "1.0", "size": 172496, "release_notes": "Première publication", "developer": { "name": "Dupont Michel", "url": "<a class="LinkyMobile-ext" href="http://thisdomaindoesnotexist.org/" title="Linkification: http://thisdomaindoesnotexist.org/">https://thisdomaindoesnotexist.org/</a>
" }, "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" } }
Les autres champs de cet exemple sont:
-
name
(requis) - Le nom de l'application. La longueur maximale est de 128 caractères.
-
version
(optionel) - Le numéro de version de cette application.
-
developer
(optionel) -
Information sur le développeur, contenant les champs
name
(nom) eturl
(adresse). Les informations saisies doivent correspondre avec celles du fichier manifest dans l'archive ZIP. -
locales
(optionel) -
Information sur le langage, au format
xx-YY
. -
icons
(optionel) - Les icones utilisés par cette application.
Les autres champs de l'exemple proviennent du manifeste de l'application voir la page associée pour plus d'information.
Auto-publication d'application hébergée
L'auto-publication d'applications hébergé est similaire à celle des applications empaquetées. Il faut toujours créer un manifeste pour l'application voir la page associée. Le code pour installer l'application hébergé est le même que les applications hébergées. La seule différence est que le manifeste peut utiliser des URLs relatives