最近有朋友問山姆鍋如何解決行動應用程式過大,下載過久的問題。例如:行動遊戲安裝檔 (apk for Android) 過大導致使用行動網路從 Google Play 下載需時甚久,500MB 的檔案可能需要約 20 分鐘的下載時間,明顯影響用戶體驗。因此,需要一個方法來加速下載與安裝,以減少用戶等待時間,進而提升推廣效率。

既然透過行動網路 (3G) 下載安裝過慢,採用點對點 (end-to-end) 的檔案分享機制來避免新的用戶需要從 Google Play 下載安裝檔,而是從另一個用戶的手機直接下載後安裝。手機之間採用 Wi-Fi 直接溝通,理論上,可以達到 54MBps 的傳輸效率,500MB 的檔案約需 1 分多鐘下載完成。

架構

推廣程式

提供用戶推廣與接受的行動應用程式。

推廣方

任何想要推廣應用程式給其他人的人的用戶。

接收方

從某位「推廣方」接收應用程式的用戶。

假設

  1. 「推廣方」的手機可以作為 Wi-Fi AP。
  2. 「接收方」與「推廣方」手機可以使用 Wi-Fi 溝通,且連至相同的 Wi-Fi AP。

前提

要能夠完成實際推廣的動作,需要「接收方」手機符合下列條件:

  1. 允許第三方或者未知來源安裝軟體,通常可從手機的「設定」功能開啓。
  2. 「接收方」手機必須至少支援:MMS、QR Code scan 或者 NFC功能。

工作原理

用戶如果使用手機存取某個連到 APK 的 URL,手機系統通常會提示用戶是否要安裝。所以,工作原理基本上就是:

  1. 「推廣方」將要推廣的應用程式 (apk) 放在可以使用 HTTP 存取,指定好的位置。
  2. 「推廣方」運用一種可行的方法將 APK 的 URL 告知「接收方」。
  3. 「接收方」同意後,開始下載後安裝。

使用 HTTP 服務器作為APK來源

為了能夠安裝程式,首先必須有一個 HTTP 服務器作為 APK 的下載來源,這個功能自然是由「推廣程式」來提供。雖說是 HTTP 服務器,但並不用支援完整的 Web 功能。 「推廣方」將要推廣的檔案放到指定的位置,例如:SD Card 上的指定路徑,在這個位置的檔案都可以透過 HTTP 來存取。

「推廣方」使用「推廣程式」的分享功能,選擇欲推廣的檔案後,採用「接收方」可用的 URL 推送方法來將 URL 推送給「接收方」。這時,「推廣程式」的 HTTP 服務功能必須已經在執行。

「推廣程式」根據「推廣方」選擇要分享的檔案以及 HTTP 服務功能所使用的 IP 位址、連接埠 (port) 來建構完整的 URL。假設手機的 IP 位址是 192.168.1.7,HTTP 監聽的 port 是 8080,下載的檔案是 mygame.apk,則 URL 可能是:http://192.168.1.7:8080/mygame.apk。

注意:HTTP 服務回傳的 mime type 須為:application/nd.android.package-archive

推送應用程式

決定要分享的檔案後,「推廣方」需要將應用下載的 URL 以及其他資訊推送給「接收方」。推送的方法不一而足,底下提供一些方法作為參考。

發送簡訊到「接收方」

這種方法的主要好處是「接收方」可以不用安裝「推廣程式」或者就是用來推送「推廣程式」給新的用戶。透過這種方式,「推廣程式」只要將 APK 來源的 URL 含括在簡訊內容中,「接收方」收到簡訊後,可以開啓其中的 URL 啓動安裝流程。

使用 QR Code

這個方法需要「推廣程式」具備 QR Code reading 的能力,或者「接收方」已經有安裝其他 QR Code Reader。

  1. 「推廣方」選擇使用 QR Code 分享,「推廣程式」將 APK 來源 URL 編碼後顯示 QR Code。

  2. 「接收方」使用 QR Code Reader 掃瞄「推廣方」手機顯示的條碼。

  3. 「接收方」取得 URL 後,啓動下載安裝流程。

使用 NFC 來推送

這個方法可能需要「接收方」已經有安裝「推廣程式」。

  1. 「推廣方」選擇使用 NFC 方式來推送,「推廣程式」將 APK 來源 URL 依照 NFC 的要求編碼後發送 NFC 訊息。

  2. 「接收方」收到 NFC 訊息,手機系統根據 NFC 訊息中的資料,從註冊的應用中啓動對應的應用程式,也就是「推廣程式」。

  1. 「推廣程式」要求手機系統開啓接收到的 URL 啓動安裝流程。 為了效果,可以將步驟 1 改成,「推廣方」搖晃手機來讓「推廣程式」發送 NFC 訊息。

小結

此文提供一些構想來加速行動應用在用戶間快速的傳遞,但不代表這些方法一定適用特定的手機或行動裝置。雖然行動網路只會越來越快,但是應用程式大小成長的速度也不低,尤其是遊戲程式更是如此。如果能夠減低用戶等待的時間,對於推廣應該還是有些幫助。