Please note, this is a STATIC archive of website developer.mozilla.org from November 2016, cach3.com does not collect or store any user information, there is no "phishing" involved.

自行發佈 App

開發者可能不想透過 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" : "https://my-server.com/my-app-directory/package.zip",
        "version": "1",
        "developer": {
            "name": "A. Developer",
            "url": "https://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 = '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>
  4. 將「package.zip」、「package.manifest」、「index.html」複製到你指定的目錄中 (此範例則為 my-app-directory),即可在自己的伺服器或網站上設定檔案。
  5. 以相容設備 (如 Firefox OS 手機) 安裝 App。只要開啟 index.html 檔案 (此範例的路徑為 https://my-server.com/my-app-directory/index.html)  就會看到系統詢問是否要安裝該 App。繼續執行安裝步驟直到完畢,接著網頁指令就會顯示安裝作業是否成功。

秘訣:你可於本端架設/托管 1 個封裝式 App,並於裝置中進行測試。伺服器與裝置必須位於同一個網路之上,而伺服器必須能接收本端網路的請求。你只要在 mini-manifest 檔案的 package_path 中加入絕對路徑即可。只要用相同的方式,正常情況就已經納入絕對路徑 (可參閱下方)。如果要使用非標準通訊埠,例如 https://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 壓縮檔的絕對路徑 (需為完整的網址,如  https://my-server.com/my-app-directory/manifest.webapp)
release_notes (選填)
App 版本資訊。在 Firefox Marketplace 的提交過程中,就必須提供此項資訊。
size (選填)
以 byte 計算的 App 壓縮檔容量。而 Apps.installPackage 將使用此項資訊,才能在安裝過程中顯示安裝進度。

以下提供範例:

{
  "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"
  }
}

此範例中的其他欄位包含:

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,