客戶端相關知識學習(六)之deeplink技術


Deeplink應用描述

Deeplink,簡單講,就是你在手機上點擊一個鏈接之后,可以直接鏈接到app內部的某個頁面,而不是app正常打開時顯示的首頁。不似web,一個鏈接就可以直接打開web的內頁,app的內頁打開,必須用到deeplink技術。

想要在h5頁面中喚起app的某個頁面也要用到該技術,兩個App之間完成橫向調用也是通過該技術

假如要從APP-F調用APP-T

1)APP-T要進行自定義scheme的配置(iOS是info文件,Android是activity),並進行參數處理的coding。

2)APP-F進行調用,首先判斷設備是否安裝APP-T。

3)如果未安裝,則跳轉到APP-T的web版應用(假設他提供web版)或者是跳轉到AppStore等應用市場進行下載。

4)如果已安裝,則調用APP-T配置好的URL SCHEME,直接打開APP-T的相關界面。

核心技術

URL SCHEMES簡介

核心的技術就是:URL SCHEMES,不論是IOS還是Android。

URL Schemes 有兩個單詞:

  • URL,我們都很清楚,http://www.apple.com 就是個 URL,也叫它鏈接或網址;

  • Schemes,表示的是一個 URL 中的一個位置——最初始的位置,即 ://之前的那段字符。比如 http://www.apple.com 這個網址的 Schemes 是 http。

就像給服務器資源分配一個 URL,以便我們去訪問它一樣,我們同樣也可以給手機APP分配一個特殊格式的 URL,用來訪問這個APP或者這個APP中的某個功能(來實現通信)。

APP得有一個標識,好讓我們可以定位到它,它就是 URL 的Scheme 部分。

URL Scheme 語法

URL SCHEMES值

我們可以像定位一個網頁一樣,用一種特殊的 URL 來定位一個應用甚至應用里某個具體的功能。而定位這個應用的,就應該這個應用的 URL 的 Schemes 部分,也就是開頭兒那部分。

不唯一性

但是需要注意的是應用的URL Schemes 並不唯一,也就是說一個應用可以“起多個名“,不同應用的URL Schemes也可能因為名字一樣發生沖突。

固定性

iOS系統級應用,有一些已經定義了URL Schemes,比如短信是 sms:、通話是tel:、iBooks是ibooks:,在定義自己APP的URL Schemes的時候要避免跟系統應用名稱一樣。

傳參

與URL一樣,URL Schemes也可以通過傳參打開特定的APP界面。

URL:http://images.google.com/images?q=關鍵字 

URL Schemes:weixin://dl/moments(打開微信朋友圈)

Scheme 鏈接痛點

在 ios 上會有確認彈窗提示用戶是否打開,對於用戶來說喚端,多出了一步操作。若用戶未安裝 APP ,也會有一個提示窗,告知我們 “打不開該網頁,因為網址無效”

傳統 Scheme 跳轉無法得知喚端是否成功,Universal Link 喚端失敗可以直接打開此鏈接對應的頁面

Scheme 在微信、微博、QQ瀏覽器、手百中都已經被禁止使用,使用 Universal Link 可以避開它們的屏蔽( 截止到 18年8月21日,微信和QQ瀏覽器已經禁止了 Universal Link,其他主流APP未發現有禁止 )

如何調用三種喚端媒介

 URL Scheme 還是URL ,只是 URL Scheme算是特殊的 URL。所以我們可以拿使用 URL 的方法來使用它們。

iframe

<iframe src="sinaweibo://qrcode">

在只有 URL Scheme 的日子里,iframe 是使用最多的了。因為在未安裝 app 的情況下,不會去跳轉錯誤頁面。但是 iframe 在各個系統以及各個應用中的兼容問題還是挺多的,不能全部使用 URL Scheme。

a 標簽

<a href="intent://scan/#Intent;scheme=zxing;package=com.google.zxing.client.android;end"">掃一掃</a>

使用過程中,對於動態生成的 a 標簽,使用 dispatch 來模擬觸發點擊事件,發現很多種 event 傳遞過去都無效;使用 click() 來模擬觸發,部分場景下存在這樣的情況,第一次點擊過后,回到原先頁面,再次點擊,點擊位置和頁面

所識別位置有不小的偏移,所以 Intent 協議從 a 標簽換成了 window.location。

window.location

URL Scheme 在 ios 9+ 上諸如 safari、UC、QQ瀏覽器中, iframe 均無法成功喚起 APP,只能通過 window.location 才能成功喚端。當然,如果我們的 app 支持 Universal Link,ios 9+ 就用不到 URL Scheme 了。而 Universal Link

在使用過程中,我發現在 qq 中,無論是 iframe 導航 還是 a 標簽打開 又或者 window.location 都無法成功喚端,一開始我以為是 qq 和微信一樣禁止了 Universal Link 喚端的功能,其實不然,百般試驗下,通過 top.location 喚端成功

了。

總結

APP要想被其他APP直接打開,自身得支持,讓自己具備被人打開的能力。(URL Schemes)

APP要想打開其他的APP,自身也得支持。(判斷設備是否安裝、各種跳轉的處理)

Deeplink從宏觀角度,需要有業界統一標准與規范,才有可能形成一定的氣候。

在統一的標准下,只有當APP接入到一定的量級,形成一個生態,我們暢想的那種APP間無縫銜接的場景才會真正實現。

一些常用APP的URL Schemes

知乎

回答 zhihu://answers/{id} 用戶頁 zhihu://people/{id}

微信

weixin://dl/scan 掃一掃 weixin://dl/feedback 反饋 weixin://dl/moments 朋友圈 weixin://dl/settings 設置 weixin://dl/notifications 消息通知設置 weixin://dl/chat 聊天設置 weixin://dl/general 通用設置 weixin://dl/officialaccounts 公眾號 weixin://dl/games 游戲 weixin://dl/help 幫助 weixin://dl/feedback 反饋 weixin://dl/profile 個人信息 weixin://dl/features 功能插件

騰訊微博:TencentWeibo://

淘寶:taobao://

支付寶:alipay://

微博:sinaweibo://

weico微博:weico://

QQ瀏覽器:mqqbrowser://

uc瀏覽器:ucbrowser://

海豚瀏覽器:dolphin://

搜狗瀏覽器:SogouMSE://

百度地圖:baidumap://

Chrome:googlechrome://

優酷:youku://

京東:openapp.jdmobile://

人人:renren://

美團:imeituan://

1號店:wccbyihaodian://

我查查:wcc://

有道詞典:ddictproapp://

點評:dianping://

微盤:sinavdisk://

豆瓣fm:doubanradio://

網易公開課:ntesopen://

名片全能王:camcard://

淘寶寶貝搜索:taobao://http://s.taobao.com/?q=[prompt]

淘寶店鋪搜索:taobao://http://shopsearch.t

參考

【基礎知識】現在很火的app上的deeplink技術,到底是什么?

通過H5(瀏覽器/WebView/其他)喚起本地app

H5喚起APP指南(附開源喚端庫)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM