最近有朋友問山姆鍋如何解決行動應用程式過大 , 下載過久的問題 。 例如 : 行動遊戲安裝檔 (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 訊息中的資料 , 從註冊的應用中啓動對應的應用程式 , 也就是 「 推廣程式 」。

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

小結

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


知識不會因為傳播而減少,喜歡這篇文章請幫忙分享。


本篇文章由 Sampot (山姆鍋) 發表,下面是有關他的連結:

評論

您的反饋是我寫作的最大動力,歡迎參與討論。P.S. 我會優先回答張貼在這裡的問題。

comments powered by Disqus