アプリを Firefox Marketplace 経由で入手できないようにしたいという事情があるかも知れません。例えば、組織のメンバーにアプリを配布したり、ベータテストを実施したり、あるいは単に自分の好きなようにしたいといった場合です。このページでは、Firefox Marketplace 外でアプリを自主配布する方法を説明します。
Open Web App は Apps.install
か Apps.installPackage
を使って Firefox OS、Firefox for Android を実行しているデバイス、Firefox for Desktop を実行しているデスクトップマシンにインストールします。どちらの場合でも、インストールするアプリについて記述したマニフェストの URL を API に送ることで機能します。そのため、アプリの自主配布に必要な基本要件は以下のようになります。
- アプリのマニフェストを保持するサーバー
- (ホスト型アプリの場合は)アプリか、アプリをパッケージした ZIP ファイルを保持するサーバー
- Web サイト上で適切に
Apps.install
かApps.installPackage
を呼ぶコード
制限事項
Open Web App を自主配布する前に、以下の制限事項を把握しておきましょう。
- 自主配布アプリはアプリの許可設定を使えない。この API を使うにはパッケージ型アプリにし、Firefox Marketplace の提出プロセスを使ってその ZIP ファイルに署名する必要がある
- Firefox Marketplace のアプリ内課金を使えない
- Firefox Marketplace の一覧に載るという恩恵にあずかれないため、自分でアプリを見付けてもらうための技術を実装する必要がある
パッケージ型アプリの自主配布
ZIP をミニマニフェストと一緒にサーバー上に置くことでパッケージ型アプリを自主配布することができます。ミニマニフェストは ZIP と同じディレクトリーに置く必要があり、インストールプロセス中にアプリを特定するのに使われます。次に Apps.installPackage
を呼び出してミニマニフェストの詳細を渡すスクリプトを作成します。どのようにやるのか詳細を見てみましょう。
-
アプリの中身を ZIP アーカイブして
package.zip
という名前にしま。 このファイルには、(メイン)マニフェストを含む全てのリソースファイルを入れます。注意:パッケージ型アプリに入れる中身を ZIP アーカイブする時には、それを保持するディレクトリーは含めないように気をつけてください。親ディレクトリーをアーカイブするとマニフェストがおかしな場所に置かれることになり、パッケージ型アプリは無効になってしまいます。
manifest.webapp
というファイルを作成して以下に示す内容を追加します。このファイルは、パッケージ型アプリの ZIP ファイルに含まれるマニフェストを少し簡略化したバージョンなのでミニマニフェストとして知られています。これはApps.installPackage
がアプリのインストールを開始するのに使います。内容についての詳細情報は、後述のミニマニフェストのフィールドを参照してください。{ "name": "サンプルアプリ", "package_path" : "https://my-server.com/my-app-directory/package.zip", "version": "1", "developer": { "name": "とある開発者", "url": "https://my-server.com" } }
- アプリをインストールするスクリプトを作成します。ここでは
index.html
という名前の簡単な HTML ファイルを使いますが、ボタンにスクリプトを追加するなど Web サイト上で適切に実行できるのであればどんな方法でも使えます。このページの JavaScript はパッケージ型アプリ用のインストーラー API(Apps.installPackage
)を呼び、インストールが成功したか失敗したかを通知するコールバックも含んでいます。<html> <body> <p>パッケージ型アプリのインストールページ</p> <script> // ここの URL はフルの 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>
package.zip
、manifest.webapp
、index.html
をサーバーや Web サイトの好きなディレクトリー(このサンプルではmy-app-directory
)にコピーしてファイルを設置します。- これで(Firefox OS 電話などの)対応デバイスを使ってアプリをインストールできます。単に
index.html
ファイル(このサンプルではhttps://my-server.com/my-app-directory/index.html
というパス)を開いて、アプリをインストールするかどうか確認するプロンプトを表示するだけです。インストールを続行し、完了すると、Web ページのスクリプトがインストールが成功したか失敗したかを示します。
ヒント:パッケージ型アプリはローカルに配置してデバイス上でテストすることができます。Web サーバーとデバイスは同じネットワーク上にある必要があり、サーバーはローカルネットワークからのリクエストを処理できなければなりません。ミニマニフェストの package_path
では、絶対パスを記入する通常の方法(下記参照)と同じように絶対パスを記入するだけで構いません。標準以外のポート番号を使用する場合には、例えば https://10.10.12.1:8080/package.zip
のように忘れずにポートの情報も含めてください。
ミニマニフェストのフィールド
Firefox Marketplace でアプリを公開するのであれば、ミニマニフェストは Firefox Marketplace が生成してくれるためその作成について考える必要はありません。ZIP に含まれているアプリのマニフェストファイルにある情報を使って生成してくれます。「メイン」マニフェストの内容に関する詳細はアプリマニフェストで見ることができます。
自主配布アプリでは自分でミニマニフェストを作る必要があります。一番いい方法は「メイン」マニフェストをコピーし、必要に応じて変更することです。コピーを使うと、name
、version、
developer
、locales
フィールドは(メインでもミニでも)どちらのマニフェストでも同じでなければならないというミニマニフェストの第一の要件に役立ちます。さらに追加する内容がいくつかあります。ミニマニフェスト特有のフィールドである package_path、release_notes、
size です。
-
package_path(必須)
-
アプリの ZIP ファイルを保存している場所の絶対パス(
https://my-server.com/my-app-directory/manifest.webapp
といったフル URL)。 -
release_notes(任意)
- アプリのリリースに関する情報。この情報は Firefox Marketplace では提出プロセスの一部として用意する。
-
size
(任意)
-
アプリのバイト単位のサイズ。この情報はインストール中に進行状況を示すのに
Apps.installPackage
が使用する。
例として以下のようになります。
{ "name": "わたしのアプリ", "package_path": "https://thisdomaindoesnotexist.org/myapp.zip", "version": "1.0", "size": 172496, "release_notes": "最初のリリース", "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" } }
この例にあるほかのフィールドは次の通りです。
-
name
(必須)
- アプリ名。最大文字数は 128 文字です。
-
version
(任意)
- アプリのバージョン。
-
developer
(任意)
-
name
フィールドとurl
からなる開発者についての情報。開発者情報はミニマニフェストファイルと ZIP 中のメインマニフェストファイルで一致しなければなりません。 -
locales
(任意)
-
ローカライゼーション情報。キーは
xx-YY
というフォーマット。 -
icons
(任意)
- アプリで使用するアイコン。
マニフェストファイルの内容についての詳細はアプリマニフェストを参照してください。
ホスト型アプリの自主配布
内容を Firefox Marketplace で公開するのと同じ方法で作っていれば、ホスト型アプリの自主配布はパッケージ型アプリに比べて単純です。これは基本的にはアプリのマニフェストファイルを作ることを意味しています。次に Apps.install
を呼び出すコードを追加する必要があります。このコードは上で示したパッケージ型アプリで使うのと本質的に同じで、唯一違う点は、望むならマニフェストファイルの場所を表す相対参照を使えることです。