最近有朋友問山姆鍋如何解決行動應用程式過大,下載過久的問題。例如:行動遊戲安裝檔(apk for Android)過大導致使用行動網路從 Google Play 下載需時甚久,500MB 的檔案可能需要約 20 分鐘的下載時間,明顯影響用戶體驗。因此,需要一個方法來加速下載與安裝,以減少用戶等待時間,進而提升推廣效率。
既然透過行動網路(3G)下載安裝過慢,採用點對點(end-to-end)的檔案分享機制來避免新的用戶需要從 Google Play 下載安裝檔,而是從另一個用戶的手機直接下載後安裝。手機之間採用 Wi-Fi 直接溝通,理論上,可以達到 54MBps 的傳輸效率,500MB 的檔案約需 1 分多鐘下載完成。
架構
推廣程式
提供用戶推廣與接受的行動應用程式。
推廣方
任何想要推廣應用程式給其他人的人的用戶。
接收方
從某位「推廣方」接收應用程式的用戶。
假設
- 「推廣方」的手機可以作為 Wi-Fi AP。
- 「接收方」與「推廣方」手機可以使用 Wi-Fi 溝通,且連至相同的 Wi-Fi AP。
前提
要能夠完成實際推廣的動作,需要「接收方」手機符合下列條件:
- 允許第三方或者未知來源安裝軟體,通常可從手機的「設定」功能開啓。
- 「接收方」手機必須至少支援:MMS、QR Code scan 或者 NFC功能。
工作原理
用戶如果使用手機存取某個連到 APK 的 URL,手機系統通常會提示用戶是否要安裝。所以,工作原理基本上就是:
- 「推廣方」將要推廣的應用程式(apk)放在可以使用 HTTP 存取,指定好的位置。
- 「推廣方」運用一種可行的方法將 APK 的 URL 告知「接收方」。
- 「接收方」同意後,開始下載後安裝。
使用 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。
-
「推廣方」選擇使用 QR Code 分享,「推廣程式」將 APK 來源 URL 編碼後顯示 QR Code。
-
「接收方」使用 QR Code Reader 掃瞄「推廣方」手機顯示的條碼。
-
「接收方」取得 URL 後,啓動下載安裝流程。
使用 NFC 來推送
這個方法可能需要「接收方」已經有安裝「推廣程式」。
-
「推廣方」選擇使用 NFC 方式來推送,「推廣程式」將 APK 來源 URL 依照 NFC 的要求編碼後發送 NFC 訊息。
-
「接收方」收到 NFC 訊息,手機系統根據 NFC 訊息中的資料,從註冊的應用中啓動對應的應用程式,也就是「推廣程式」。
- 「推廣程式」要求手機系統開啓接收到的 URL 啓動安裝流程。 為了效果,可以將步驟 1 改成,「推廣方」搖晃手機來讓「推廣程式」發送 NFC 訊息。
小結
此文提供一些構想來加速行動應用在用戶間快速的傳遞,但不代表這些方法一定適用特定的手機或行動裝置。雖然行動網路只會越來越快,但是應用程式大小成長的速度也不低,尤其是遊戲程式更是如此。如果能夠減低用戶等待的時間,對於推廣應該還是有些幫助。