2017-10-30
若您曾嘗試建置一套超越極基本行動應用程式的優異產品,可能會遇到後端需求。接著您可能會發現到以上目標的設計與維護工作實非易事。讓我們一同探討 Firebase 與 Parse 等 BaaS (後端即服務) 平台的資訊 適合想要專注建置應用程式之開發人員的格局顛覆者。
Google 在 2014 年飛快併購 Firebase 自此以後已從一家簡易 BaaS 供應商演進為完整的「應用程式即服務」平台,並推出適合建置與擴展應用程式的全新工具套件。這對開發人員而言是一項天大喜訊:現在他們能較以往更加輕鬆地,取得立即可用的 MVP。我們 Branch 團隊成員有許多人皆是行動工程師,並發現到 Firebase 工具組具有令人大感振奮的無限潛力,因此強烈推薦運用它快速完美地處理新專案工作。
其當然也有缺點:這些新工具在服務類別方面彼此競爭,且在創新與產品進步方面亦已耗費超過四年的時間。我們相信 Google 嘗試同時推出眾多工具,且已超出他們能力所及。其最終結果即是這些新元件顯現「博大卻不精深」的缺點。您難以得知專案擴展到什麼程度才需要運用更為強大的工具,且在您除平台之外已完成建置應用程式的核心部分後,才為時已晚地顯露缺點。
Branch 過去三年來專注研究如何透過更優異的連結技術解決應用程式探索問題,這代表我們較市場上其他任何廠商更有能力處理更多的應用程式深層連結 (每日 3 億筆,截至 2016 年 12 月的計算結果)。瞭解以上背景後,讓我們一起深入探討「Firebase 動態連結」模組,並瞭解其與 Branch 連結平台相較之下有何特色。此外,我們還將展示在您需要更加強大的功能時,可如何輕鬆簡易地實作 Branch 來代替「動態連結」,同時仍可使用其餘的 Firebase 工具組。
Firebase 團隊針對 動態連結」撰寫了一篇簡介部落格文章,其中概述他們嘗試解決的核心問題:連結至應用程式中的內容實非易事。在該篇文章內容當中,亦識別出適用於任何行動應用程式連結系統的一些重要需求:
「動態連結」可滿足以上的基本需求。至少其已足以您感受深層連結所具備的潛力。不過,此為新近開發的 Firebase 元件之一,若您想要執行更加進階的功能,很快就會發現處處見絀。
上述需求與我們在 2014 年開始建置 Branch 時發現的需求如出一轍。這些需求是造就成功深層連結服務的核心,亦是所有 Branch 建置產品的基礎,因為我們已成為全 球最優異應用程式的專屬連結基礎架構。不過,魔鬼其實就藏在細節裡。身為一位應用程式開發人員,您實際上可運用這些連結從事哪些工作?
動態連結 | Branch | |
產生應用程式內部連結 | X | X |
使用線上儀表板產生連結 | X | X |
非垃圾郵件性質連結 URL | X | |
每個連結的彈性、自訂式資料參數 | X* | X |
即使未安裝應用程式,亦可路由至特定內容 | X | X |
採用 JSDN 格式的標準化連結資料回應 | X | |
初次安裝歸屬 | X | |
進行初次安裝時確保配對準確性 | X | |
識別唯一使用者 (針對受推薦者等等) | X | |
領先業界且受 SLA 支援的技術支援服務 | X | |
完整齊備的極端狀況處理 (包括 Facebook 和電子郵件) | X |
* 必須手動編碼為連結 URL 的一部分
表面上看起來似乎一切完美,但如果我們想要在簡易 iOS 應用程式 (例如我們官方推出的 Branch Room Maps app應用程式) 中實作同等深層連結功能時該怎麼做?讓我們直接比較一下程式碼。
首先,我們必須啟動一個工作階段,並處理傳入的連結。使用 Firebase 的情況類似如下:
同樣地透過 Branch 實作:
如您所見,兩者之間到目前為止皆非常近似。Branch 端的大部分內容顯得略為精簡,但對於一位優秀的程式設計師而言,沒有做不到的事。
接著讓我們建立一些連結。先從 Firebase 開始:
接著輪到 Branch:
再次顯示,雖然真正的差異在於連結 URL 本身 (品牌化連結著實重要),但 Firebase 方面所要做的程式碼手動作業較多。不過最重要的是,當使用這些連結時您實際上可執行哪些工作?以下是我們回頭在 AppDelegate 中,透過這些 dump 陳述式所取得的資料:
Firebase:
url: https://branch.io/room?roomID=PineCone
Branch:
+click_timestamp: 1482541476 +clicked_branch_link: 1 +is_first_session: 0 +match_guaranteed: 1 +referrer: https://www.google.com/ +phone_number: //only returned when link is SMSed from desktop to mobile ~creation_source: 3 ~referring_link: https://branchmaps.app.link/D1PpymBZlz ~feature: sharing ~channel: Pasteboard ~id: 341010052121261919 $one_time_use: 0 $og_title: Pine Cone $identity_id: 339834809826614244 $canonical_identifier: room/PineCone $publicly_indexable: 1 $exp_date: 0 room_name: Pine Cone
至此,已可看出兩個平台甚至並不相近。Branch 提供完整的使用內容參數清單,包括安裝偵測 (+is_first_session) 與比對準確性 (+match_guaranteed)。 安裝偵測對於建置自訂 上架等功能至關緊要,而比對準確性支援個人化內容深層連結,並確認您具有正確的使用者,此為 Branch 較生態系統中其他任何廠商表現更加出色的優勢.
實際上,某些客戶對於我們展現的優異準確性深感信任,因此選擇採用 Branch 連結負責在使用者初次開啟應用程式時,自動將其登入至應用程式。
Firebase 會傳回簡易原始 URL。
這就是「動態連結」的運作終點。其會向使用者傳送您對他們發出要求的所在位置 (大部分時候,假設您沒遇到太多極端狀況),並追蹤連結點選行為,但僅此而已。在此同時,對於 Branch 而言這僅是開始。對於我們而言,一套堅實的連結系統僅是可在上頭建置任何產品的一種架構:
此外,由於我們既是應用程式開發人員亦是程式設計師,因此瞭解提供必要協助服務對您來說何等重要。我們會透過 Branch.io 標籤在 StackOverflow 上監控所有疑問,而我們的整合團隊針對「所有」合作夥伴, 提供免費無任何限制的支援服務。
最棒的一點是,您無須特別做出選擇。Firebase 會實作為一系列的獨立模組化 SDK。您無論如何皆必須新增其他 SDK 來實作「動態連結」,因此倒不如逕行改用 Branch 來得輕鬆省事。實際上,此做法可能更加簡單!您可一次擁有 Firebase 平台與 AaaS 平台的所有優勢,以及全球最先進行動深層連結系統的強大靈活彈性與功能。