開發者可能不想透過 Firefox Marketplace 發佈 App,例如你只想提供給組織內的成員、執行測試版 App,或只是自己試好玩的。本篇文章將說明開發者如何在 Firefox Marketplace 之外自行發佈 App。

 

Open Web App 可透過 Apps.installApps.installPackage,安裝到 Firefox OS、執行 Firefox for Android 的裝置,或是執行桌面版 Firefox 的桌機之上。而這些 API 均會送出 manifest 檔案的網址,其內將敘述所將安裝的 App。因此要自行發佈 App 就必須滿足下列基本要求:

  1. 伺服器必須裝載 App 的 manifest 檔案
  2. 伺服器必須裝載 (架設/托管式) App,或 (封裝式) App 的 ZIP 檔案
  3. 置於網站上的程式碼必須觸發合適的 Apps.installApps.installPackage

限制

在自己發佈 Open Web App 之前,必須注意下列限制:

  • 自行發佈的 App 不能使用 Privileged API。若要使用這類 API,則必須為封裝式 (Packaged) App 並具備自己的 ZIP 檔案,另需經由 Firefox Marketplace 提交程序而完成簽署。
  • 你的 App 不能使用 Firefox Marketplace 的 App 內購買功能。
  • 由於 App 無法在 Firefox Marketplace 上曝光,所以開發者必須自行研究 App 的發佈技術。

自行發佈封裝式 App

只要在伺服器上架設/托管 ZIP 檔案與其 mini-manifest,就能自行發佈封裝式 App。而 mini-manifest 必須置於 ZIP 相同的目錄之下,以利安裝程序能識別 App。接著可建立指令碼以觸發 Apps.installPackage,送出 mini-manifest 的細節。可參閱下方以了解:

  1. 將 App 的內容壓縮為 ZIP 並命名為 package.zip。 此檔案應容納 App 的所有資源檔案,並包含 (主要) manifest 檔案。

    重要:請注意封裝式 App 所要壓縮的內容,不要包含檔案本身的目錄。如果你連母目錄都壓縮進去,則 manifest 檔案就位於錯誤地方,整個封裝式 App 隨即無效。

  2. 建立名為 manifest.webapp 的檔案,並加入以下內容。此檔案即所謂的 mini-manifest,也是封裝式 App 壓縮檔內的精簡版 manifest 檔案。而 Apps.installPackage 將使用 mini-manifest,以進行 App 的安裝程序。若要進一步了解細節,可參閱下方的 Mini-manifest 欄位
    {
        "name": "My sample app",
        "package_path" : "http://my-server.com/my-app-directory/package.zip",
        "version": "1",
        "developer": {
            "name": "A. Developer",
            "url": "http://my-server.com"
        }
    }
  3. 建立可安裝 App 的指令碼。這裡我們使用了名為「index.html」的簡易 HTML 檔案。但你也可將指令碼新增至按鈕,或使用任何適當的函式,以於自己的網站上觸發作業。此頁面上的 JavaScript 將呼叫 Packaged App installer API (Apps.installPackage),並針對安裝作業的成功與否進行回呼 (Callback)。
    <html>
      <body>
        <p>Packaged app installation page</p>
        <script>
          // This URL must be a full url.
          var manifestUrl = 'http://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>
  4. 將「package.zip」、「package.manifest」、「index.html」複製到你指定的目錄中 (此範例則為 my-app-directory),即可在自己的伺服器或網站上設定檔案。
  5. 以相容設備 (如 Firefox OS 手機) 安裝 App。只要開啟 index.html 檔案 (此範例的路徑為 http://my-server.com/my-app-directory/index.html)  就會看到系統詢問是否要安裝該 App。繼續執行安裝步驟直到完畢,接著網頁指令就會顯示安裝作業是否成功。

秘訣:你可於本端架設/托管 1 個封裝式 App,並於裝置中進行測試。伺服器與裝置必須位於同一個網路之上,而伺服器必須能接收本端網路的請求。你只要在 mini-manifest 檔案的 package_path 中加入絕對路徑即可。只要用相同的方式,正常情況就已經納入絕對路徑 (可參閱下方)。如果要使用非標準通訊埠,例如 http://10.10.12.1:8080/package.zip,則記得應納入通訊埠的資訊。

Mini-manifest 檔案的欄位

如果要在 Firefox Marketplace 發佈 App,就不需擔心該如何建立 mini-manifest 檔案;Firefox Marketplace 可為開發者代勞。Marketplace 將使用 manifest 檔案中的相關資訊。可參閱《App 的 manifest 檔案》一文。

如果要自行發佈 App,也就必須自行建立 mini-manifest 檔案。最好就是複製「主要」的 manifest 檔案,並依需求將之更新。先複製完整內容就能輕鬆建立 mini-manifest 檔案,因其內的 nameversiondeveloperlocales 欄位必須完全相同。開發者亦可添增其他內容。mini-manifest 檔案專屬的欄位則包含 package_pathrelease_notessize

package_path (必填)
儲存 App 壓縮檔的絕對路徑 (需為完整的網址,如  http://my-server.com/my-app-directory/manifest.webapp)
release_notes (選填)
App 版本資訊。在 Firefox Marketplace 的提交過程中,就必須提供此項資訊。
size (選填)
以 byte 計算的 App 壓縮檔容量。而 Apps.installPackage 將使用此項資訊,才能在安裝過程中顯示安裝進度。

以下提供範例:

{
  "name": "My app",
  "package_path": "http://thisdomaindoesnotexist.org/myapp.zip",
  "version": "1.0",
  "size": 172496,
  "release_notes": "First release",
  "developer": {
    "name": "Developer Name",
    "url": "http://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 (必填)
App 的名稱,最長 128 個字元。
version (選填)
App 的目前版本。
developer  (選填)
開發者的資訊,內含 nameurl 欄位。而 mini-manifest 與 manifest 檔案中的開發者資訊必須相同。
locales (選填)
語系資訊,必須為 xx-YY 格式。
icons (選填)
App 所使用的圖示。

若要進一步了解 manifest 檔案,可參閱《App 的 manifest 檔案》。

自行發佈架設/托管式 App

與封裝式 App 相較,如果你建立內容的方式,就與 Firefox Marketplace 發佈的方式相同,則自行發佈架設/托管式 (Hosted) App 就更簡單了。基本上就是為自己的 App 建立 manifest 檔案。接著加入程式碼以觸發 Apps.install。此程式碼必須與上述封裝式 App 所用的相同。唯一不同點在於,你可對 manifest 檔案設立相對的參考位置。

另請參閱

 

文件標籤與貢獻者

此頁面的貢獻者: MashKao
最近更新: MashKao,