APP誕生全紀錄 - 容易忽略的必要功能2:APP跳轉

更新於 發佈於 閱讀時間約 11 分鐘
一個APP在規劃的時候可能覺得主要功能就只有這一兩個,實作起來應該不難,卻忘了現代人的胃口已經越養越大,很多不在你預期內但對於使用者來說卻是很基本的功能;另一種是商店上架或是第三方要求的必要功能
如果你還沒有閱讀過「APP誕生全紀錄」,建議可以先看一下,至少知道哪些可能是容易忽略的必要功能,前一篇我們提到了推播,今天我們來探討第二種必要功能:APP跳轉,透過一組文字連結能夠點選開啟APP跳轉到正確功能頁面使用者常常在APP大海中迷失找不到你的APP,或者想要有個良好的使用者體驗導引到下載安裝,但卻不知道如何提高使用者的轉換率嗎?APP跳轉就是答案。
可以看一下簡單的介紹影片

歷史發展

Mobile Deep Link

這是最原始型的APP跳轉,其原理是利用URI Scheme來指向APP。例如最常見的就是“http://www.xxx.com/”,使用者點擊後會打開瀏覽器跳到對應的網頁。這一段中http代表了網際網路協定名,後面一串代表的是位置,如果是https我們知道是加密型網際網路協定名,所以對於上面這兩個協定名,設備就會很自然的打開瀏覽器,如果是ftp://xxxx就會打開FTP協定相關的軟體。
URI組成 (來源:Wiki)
所以我們就利用這個URI的架構來向使用者的設備註冊我們的軟體協定名,例如「聖經種子」就可以註冊bibleseed,那這樣只要把連結設定為bibleseed://xxxxxxxx,使用者點擊後自然就會如我們期望的導向到聖經種子的APP中啦!
那今天的文章就介紹到此......疑,不對呀?!如果Deep Link這麼完善了,為什麼還有其他的架構出來呢?但聰明的你一定在前面就已經發現原始協定其實有蠻多問題和陷阱在裡面。
  1. 如果都是註冊相同的協定,例如http,那設備怎麼知道要開啟Chrome或是Safari
  2. 承1,那如果有人搶先我註冊了一樣的名字,失去了唯一性,那該怎麼辦
  3. 如果使用者還沒安裝過我的APP,所以設備還沒註冊APP的協定,那點擊後會發生什麼事情
為了解決以上的問題,所以各大陣營就絞盡腦汁想出了各種解決方案,畢竟每個陣營都想當領頭羊,稱霸並主導這個協定,但以目前的態勢還是二分天下,尚未統一。Android陣營的提出了Web Link / App Link,而Apple陣營的則提出了 Universal Link。這些被提出的協定都有一個相同的方向,那就是都使用網際網路協定http來當作跳轉的平台。

Android Web Link

支援版本:Android 12 以前
Web Link只是Deep Link的延伸版本而已,指定http和https的協定名配上對應的host時會開啟一個選項視窗,可決定直接開啟APP或瀏覽器。
<data android:scheme="http" />
<data android:host="bibleseed.nobodystudio.app" />

Android App Link

支援版本:Android 6.0 (API level 23) and higher
會驗證對應網域是否為此APP持有,需要比Web Link多一些驗證手段,在安裝後可直接開啟APP。
<intent-filter android:autoVerify="true">
  <data android:scheme="http" />
  <data android:scheme="https" />
  <data android:host="bibleseed.nobodystudio.app" />
</intent-filter>

Apple Universal Link

支援版本:iOS 9或以上
一樣使用網際網路協定,可支援無APP時使用瀏覽器開啟網址並決定導向至App Store安裝,或是安裝完成後會直接開啟APP,無論哪種操作如果最終導向至APP後可以依照傳入的參數讓APP直接跳轉或導引至正確的內容頁面。

規則協定

我們先來看看為了達成使用者各種可能的情境所產生的這個可怕的思路流程圖。
錯綜複雜的可怕流程圖
其實要可以做到這些就是在自己的網域上帶入對應的驗證資料(粗體部分都是你需要填入的APP資訊),然後藉由URI帶入的data內容來決定走向和APP內的處理方法。

iOS驗證資料

http://你的網域/.well-known/apple-app-site-association
{
  "applinks":{
    "apps":[],
    "details":[{
      "appID":"NFTC7AK8F2.com.ebible.bibleseed",
      "paths":["NOT /_/*","/ "]
    }]
  }
}

Android驗證資料

http://你的網域/.well-known/assetlinks.json
[{
  "relation": ["delegate_permission/common.handle_all_urls"],
  "target": {
    "namespace": "android_app",
    "package_name": "com.ebible.bibleseed",
    "sha256_cert_fingerprints":
    ["14:6D:E9:83:C5:73:06:50:D8:EE:B9:95:2F:34:FC:64:16:A0:83:42:E6:1D:BE:A8:8A:04:96:B2:3F:CF:44:E5"]
  }
}]

URI架構

https://bibleseed.nobodystudio.app/links/?link=https%3A%2F%2Fbibleseed.app%2F&?query&apn=com.ebible.bibleseed&ibi=com.ebible.bibleseed
一個基於Firebase Dynamic Link的範例如上,必要的參數有三個
  • link:是deep link的主要內容,負責導向到哪裡和APP內抓取query的參數
  • apn:Android的APP主要ID
  • ibi:iOS的APP主要ID
  • 其他參數:可參考連結

實作範例

我們來嘗試看看使用Flutter + FirebaseDynamicLink的開發環境實作一下吧!

參數環境設定

首先,要先把上一節說的驗證資料在你的網域中加入,再來如果是Android的環境也需要把第一節的相關設定寫入,接著我們就開始進入到flutter專案中。

安裝套件

#flutter pub add firebase_dynamic_links

接收/處理傳入資料

Future<void> main() async {
  WidgetsFlutterBinding.ensureInitialized();
  // 基本的Firebase系統init
  await Firebase.initializeApp(options: DefaultFirebaseConfig.platformOptions);
  // Get any initial links
  final PendingDynamicLinkData? initialLink = await FirebaseDynamicLinks.instance.getInitialLink();
  if (initialLink != null) {
    // 這裡拿到的deepLink就是前一節提到的link參數內容
    final Uri deepLink = initialLink.link;
    // Example of using the dynamic link to push the user to a different screen
    Navigator.pushNamed(context, deepLink.path);
  }
  runApp(MyApp(initialLink));
}

額外說明

因為原本在實作時剛好Firebase Dynamic Link這個官方套件有問題,所以改用了其他接收initial link的套件來處理,其實拿到的系統傳入內容都是一樣的,只是要自己去切割處理一整串URI的內容,擷取出自己需要的部分。
另外iOS在測試時,是不能直接使用瀏覽器貼上Link測試的,必須在其他記事本或APP中點選開啟才能測試,這點需要注意。

加上短網址

APP跳轉的連結雖然很好用,但因為要挾帶的資訊量很大,所以難免會變成一串非常冗長的連結,這時候要怎麼辦呢?
如果一開始進入APP跳轉就直接接觸Dynamic Link的很容易被搞混在一起,建議分開理解
Firebase內附加了一個功能 - 縮短網址。在Firebase網頁中可以直接操作建立短網址,把這整串URI縮短避免讓人頭昏眼花;在SDK中也有API可以呼叫直接建立,名稱可以自定義也可以由系統隨機取。
https://bibleseed.nobodystudio.app/links/?link=https%3A%2F%2Fbibleseed.app%2F&?query&apn=com.ebible.bibleseed&ibi=com.ebible.bibleseed
https://bibleseed.nobodystudio.app/links/media
QR Code示意圖
另外一種可以把一整串冗長的網址消除的方式就是轉化為QR Code,將上面連結轉化如左圖,是不是就變得很清爽呢!

總結

APP跳轉是相當常見且實用的一個功能,所以我列為第2種必要卻容易忽略的功能,不知道你的APP有沒有使用呢?或是你覺得有甚麼其他容易忽略的必要功能,也都可以留言一起討論囉!!
為什麼會看到廣告
avatar-img
3會員
7內容數
留言0
查看全部
avatar-img
發表第一個留言支持創作者!
Amos的沙龍 的其他內容
一個APP在規劃的時候可能覺得主要功能就只有這一兩個,實作起來應該不難,卻忘了現代人的胃口已經越養越大,很多不在你預期內但對於使用者來說卻是很基本的功能;另一種是商店上架或是第三方要求的必要功能。今天我們先來探討其中重要的一項:推播〔Push Notification。
「聖經種子」團隊當初在組成的時候,成員本就是散落在各地,因著我的邀請而聚集在一起。因為大家都在不同的城市,平日也有自己的工作,所以對於我們來說,該如何讓團隊中溝通討論順暢、設計協作合作順利、凝聚出向心力,就成了最大的課題。
今天當你完成了你心目中完美的作品,迫不及待的想要放到商店上讓大家下載使用,卻沒想到是噩夢的開始?!從上架前的審查,到上架後的各種問題浮現,讓你焦頭爛額了嗎?這裡和你分享一下4種在APP「上線期」會遇到的問題和解決方法,讓你上線沒煩惱。
很多人可能都想過要開發一款APP,雖然擁有許許多多創意的點子,但卻不知道該從何開始下手嗎?這篇文章將會分享一個實際從無到有、從創作開發到上線推廣的開發案例,讓你實際了解中間所有的過程、會踩到的問題點以及你可能從沒想過但開發中一定會遇到的困難處。
一個APP在規劃的時候可能覺得主要功能就只有這一兩個,實作起來應該不難,卻忘了現代人的胃口已經越養越大,很多不在你預期內但對於使用者來說卻是很基本的功能;另一種是商店上架或是第三方要求的必要功能。今天我們先來探討其中重要的一項:推播〔Push Notification。
「聖經種子」團隊當初在組成的時候,成員本就是散落在各地,因著我的邀請而聚集在一起。因為大家都在不同的城市,平日也有自己的工作,所以對於我們來說,該如何讓團隊中溝通討論順暢、設計協作合作順利、凝聚出向心力,就成了最大的課題。
今天當你完成了你心目中完美的作品,迫不及待的想要放到商店上讓大家下載使用,卻沒想到是噩夢的開始?!從上架前的審查,到上架後的各種問題浮現,讓你焦頭爛額了嗎?這裡和你分享一下4種在APP「上線期」會遇到的問題和解決方法,讓你上線沒煩惱。
很多人可能都想過要開發一款APP,雖然擁有許許多多創意的點子,但卻不知道該從何開始下手嗎?這篇文章將會分享一個實際從無到有、從創作開發到上線推廣的開發案例,讓你實際了解中間所有的過程、會踩到的問題點以及你可能從沒想過但開發中一定會遇到的困難處。
你可能也想看
Google News 追蹤
Thumbnail
隨著理財資訊的普及,越來越多台灣人不再將資產侷限於台股,而是將視野拓展到國際市場。特別是美國市場,其豐富的理財選擇,讓不少人開始思考將資金配置於海外市場的可能性。 然而,要參與美國市場並不只是盲目跟隨標的這麼簡單,而是需要策略和方式,尤其對新手而言,除了選股以外還會遇到語言、開戶流程、Ap
Thumbnail
嘿,大家新年快樂~ 新年大家都在做什麼呢? 跨年夜的我趕工製作某個外包設計案,在工作告一段落時趕上倒數。 然後和兩個小孩過了一個忙亂的元旦。在深夜時刻,看到朋友傳來的解籤網站,興致勃勃熬夜體驗了一下,覺得非常好玩,或許有人玩過了,但還是想寫上來分享紀錄一下~
Thumbnail
帝國手遊代儲網的簡介 帝國手遊代儲網是專業的遊戲代儲平台,提供各種手遊代儲服務,其中包括交友軟體代儲服務。 對於初學者來說,了解如何使用帝國手遊代儲網進行交友軟體代儲是非常重要的。 初學者指南                                                    
隨著電子商務的蓬勃發展,越來越多企業和個人開始投入購物網站的架設和App開發。然而,從零開始設計一個成功的購物網站並開發出高效的App,並不是一件容易的事。本文將為你提供從初步規劃到最終完成的指南,幫助你在競爭激烈的市場中脫穎而出。
Thumbnail
PairDrop 免費、開源的網頁版檔案傳輸工具,無須註冊免安裝,將裝置連線同一個 WiFi 網路,打開網站會自動建立連線,點選裝置名稱即可開始傳送檔案,使用 WebRTC 技術進行傳輸,服務穩定且傳檔速度,各種系統置都能方便、安全地傳送檔案。
Thumbnail
我的手機有一個聖經APP,原本我只是好奇始源幾乎每天都會在IG限動發的東西,後來在粉絲社群裡面看到有人討論和分享是哪個APP,於是我就下載來看看,然後發現每天推播的內容就真的和始源發的一樣,覺得很有趣(迷妹的樂趣?),剛好那陣子的我時好時壞,每天推播內容出來,我就強迫自己看看,當作心靈雞湯也沒關係,
Thumbnail
在APP中打開外部瀏覽器是一個常見的需求,特別是當你需要在APP中顯示外部網頁或處理特定的網絡操作時。本文介紹了三種常見的方法來解決內部瀏覽器操作問題並在APP中打開外部瀏覽器:使用系統預設瀏覽器、使用WebView控件和使用自定義瀏覽器控件。
Thumbnail
本篇文章介紹了路徑的概念和兩種不同的路徑運用。這些知識對於網頁開發非常重要,能夠幫助網站開發者更好地管理資源文件的位置。文章通過實際例子和相對路徑的範例來解釋這些概念。希望通過這篇文章,讀者能夠清楚地瞭解路徑的概念,並在日後的開發中能夠靈活運用。
Thumbnail
之前分享過【網路請求帶參數的方式】,開發者可以透過 URL 代入參數,來向伺服器請求特定的資源,我們當然也可以擷取 URL 的內容,來做為後續開發的判斷條件,這篇就來記錄一下,網址(URL) 和域名(Domain) 是什麼,以及如何取得網址的參數吧! 我們常說的網址連結 URL 完整名稱是 U
Thumbnail
品牌要怎麼發展 D2C 呢?本指南希望可以提供的一個簡單的發展路徑,讓讀者作為一個參考。一個清晰的 D2C 服務骨幹,也就是從基礎到應用,從新的系統整合思維、發展 OMO 策略、搭建所有的自營通路,匯聚自己的全通路數據、再用規劃清楚的開放API來接上應用生態系。 科技的發展腳步越來越快,從電商
Thumbnail
有時候,最簡單的事情可以做很多事! 如果你點擊活動廣告,你會注意到網址尾端會有一些額外的“代碼”。 類似:“?utm_source=XXXXX” 「XXXXX」是對放置連結的位置的描述,以便活動商追蹤來源。 但這僅用於追蹤數據。 下次當你要分享其他人的網站或內容時,使用相同的“程式碼”看看
Thumbnail
隨著理財資訊的普及,越來越多台灣人不再將資產侷限於台股,而是將視野拓展到國際市場。特別是美國市場,其豐富的理財選擇,讓不少人開始思考將資金配置於海外市場的可能性。 然而,要參與美國市場並不只是盲目跟隨標的這麼簡單,而是需要策略和方式,尤其對新手而言,除了選股以外還會遇到語言、開戶流程、Ap
Thumbnail
嘿,大家新年快樂~ 新年大家都在做什麼呢? 跨年夜的我趕工製作某個外包設計案,在工作告一段落時趕上倒數。 然後和兩個小孩過了一個忙亂的元旦。在深夜時刻,看到朋友傳來的解籤網站,興致勃勃熬夜體驗了一下,覺得非常好玩,或許有人玩過了,但還是想寫上來分享紀錄一下~
Thumbnail
帝國手遊代儲網的簡介 帝國手遊代儲網是專業的遊戲代儲平台,提供各種手遊代儲服務,其中包括交友軟體代儲服務。 對於初學者來說,了解如何使用帝國手遊代儲網進行交友軟體代儲是非常重要的。 初學者指南                                                    
隨著電子商務的蓬勃發展,越來越多企業和個人開始投入購物網站的架設和App開發。然而,從零開始設計一個成功的購物網站並開發出高效的App,並不是一件容易的事。本文將為你提供從初步規劃到最終完成的指南,幫助你在競爭激烈的市場中脫穎而出。
Thumbnail
PairDrop 免費、開源的網頁版檔案傳輸工具,無須註冊免安裝,將裝置連線同一個 WiFi 網路,打開網站會自動建立連線,點選裝置名稱即可開始傳送檔案,使用 WebRTC 技術進行傳輸,服務穩定且傳檔速度,各種系統置都能方便、安全地傳送檔案。
Thumbnail
我的手機有一個聖經APP,原本我只是好奇始源幾乎每天都會在IG限動發的東西,後來在粉絲社群裡面看到有人討論和分享是哪個APP,於是我就下載來看看,然後發現每天推播的內容就真的和始源發的一樣,覺得很有趣(迷妹的樂趣?),剛好那陣子的我時好時壞,每天推播內容出來,我就強迫自己看看,當作心靈雞湯也沒關係,
Thumbnail
在APP中打開外部瀏覽器是一個常見的需求,特別是當你需要在APP中顯示外部網頁或處理特定的網絡操作時。本文介紹了三種常見的方法來解決內部瀏覽器操作問題並在APP中打開外部瀏覽器:使用系統預設瀏覽器、使用WebView控件和使用自定義瀏覽器控件。
Thumbnail
本篇文章介紹了路徑的概念和兩種不同的路徑運用。這些知識對於網頁開發非常重要,能夠幫助網站開發者更好地管理資源文件的位置。文章通過實際例子和相對路徑的範例來解釋這些概念。希望通過這篇文章,讀者能夠清楚地瞭解路徑的概念,並在日後的開發中能夠靈活運用。
Thumbnail
之前分享過【網路請求帶參數的方式】,開發者可以透過 URL 代入參數,來向伺服器請求特定的資源,我們當然也可以擷取 URL 的內容,來做為後續開發的判斷條件,這篇就來記錄一下,網址(URL) 和域名(Domain) 是什麼,以及如何取得網址的參數吧! 我們常說的網址連結 URL 完整名稱是 U
Thumbnail
品牌要怎麼發展 D2C 呢?本指南希望可以提供的一個簡單的發展路徑,讓讀者作為一個參考。一個清晰的 D2C 服務骨幹,也就是從基礎到應用,從新的系統整合思維、發展 OMO 策略、搭建所有的自營通路,匯聚自己的全通路數據、再用規劃清楚的開放API來接上應用生態系。 科技的發展腳步越來越快,從電商
Thumbnail
有時候,最簡單的事情可以做很多事! 如果你點擊活動廣告,你會注意到網址尾端會有一些額外的“代碼”。 類似:“?utm_source=XXXXX” 「XXXXX」是對放置連結的位置的描述,以便活動商追蹤來源。 但這僅用於追蹤數據。 下次當你要分享其他人的網站或內容時,使用相同的“程式碼”看看