在某些場(chǎng)景下亭珍,用戶希望點(diǎn)擊短信中的一個(gè)URL(類似:http://www.johnny-s.cn/2017/09/08/android-handler/)打開(kāi)已安裝的某個(gè)App欺劳。
在安卓6.0之前,點(diǎn)擊URL需要跳轉(zhuǎn)到一個(gè)選擇對(duì)話框頁(yè)面航夺,用戶選擇用哪個(gè)App打個(gè)這個(gè)鏈接,類似這樣崔涂。
2015年谷歌I/O大會(huì)阳掐,谷歌宣布Android M(6.0)支持 App Links (Deep Link)的方式直接從鏈接打開(kāi)Native App,這將對(duì)Android的用戶體驗(yàn)造成深遠(yuǎn)的影響冷蚂,試想一下缭保,用戶點(diǎn)擊一個(gè)web網(wǎng)站(http 或者 https)直接打開(kāi)了Native App,Amazing蝙茶。
會(huì)有人問(wèn)艺骂,那6.0一下的機(jī)型怎么辦,現(xiàn)在Android 6.0以上的機(jī)型已經(jīng)占市場(chǎng)超過(guò)70%的份額隆夯,其他的30%只好委屈一下多一步彈框的選擇了钳恕。
回到正題,具體怎么讓App 有 Deep Link的功能蹄衷,這個(gè)谷歌的官方接入文檔忧额,有視頻有文字,一般人都可以看懂愧口。
https://developer.android.com/studio/write/app-link-indexing (需翻墻)
那么接下就說(shuō)一下怎么使用Android Studio(2.3以上)使App具有Deep Link功能睦番。
- 點(diǎn)擊菜單欄 Tools->App Links Assistant 進(jìn)入設(shè)置頁(yè)面
App Links Assistant
打開(kāi)Open URL Mapping Editor 點(diǎn)擊綠色的+號(hào)URL Mapping Editor
輸入一個(gè)Host 和 點(diǎn)擊之后啟動(dòng)的Activity。這里我用GitHub Pages作為自己的Host耍属,具體Github Pages是什么請(qǐng)自行Google托嚣。
2.點(diǎn)擊Select Activity 選擇acitivty之后AS會(huì)在此Activity中創(chuàng)建幾行代碼大咱,作用是可以接收點(diǎn)擊URL傳來(lái)的值。(我現(xiàn)在用的AS 3.1.3 只能在Java類中添加代碼注益,Kotlin類需要自己寫(xiě))
3.第三部很關(guān)鍵碴巾,能否實(shí)現(xiàn)Deep link就看這步
最關(guān)鍵的一步
在Site domain中輸入自己的域名,谷歌要求域名必須支持HTTPS 輸入自己的包名丑搔,點(diǎn)擊Generate Digital Asset Links File 將生成一個(gè).json文件厦瓢,將此文件放到域名根目錄下的.welll-known/assentlinks.json位置,需要注意的是啤月,.開(kāi)頭的文件夾為隱藏文件夾需要在根目錄下加配置文件 _config.yml 中添加
include: [".well-known"]
以上都就緒了煮仇,點(diǎn)擊https開(kāi)頭的URL就可以在瀏覽器訪問(wèn)到assentlink.json里的內(nèi)容了。
最后一定要點(diǎn)擊Link and Verify 按鈕谎仲,點(diǎn)擊之后會(huì)在AndroidManifest.xml中的intent-filter中添加 autoVerify = true
<activity
android:name=".activity.MainActivity"
android:screenOrientation="portrait">
<intent-filter android:autoVerify="true">
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data
android:scheme="https"
android:host="privatejohn.github.io" />
</intent-filter>
</activity>
這只成功可在這里驗(yàn)證 https://developers.google.com/digital-asset-links/tools/generator (需翻墻)
4.最后點(diǎn)擊Test App Links進(jìn)行驗(yàn)證 或者 自己在短信里造一個(gè)URL進(jìn)行驗(yàn)證
到現(xiàn)在為止理論上已經(jīng)沒(méi)問(wèn)題了浙垫,但是,當(dāng)你進(jìn)行驗(yàn)證的時(shí)候郑诺,選擇彈框還是出來(lái)了夹姥,為什么呢?
打開(kāi)AS的logcat 過(guò)濾關(guān)鍵字 verification
明明自己可以訪問(wèn)到域名的.well-known/assetlink.json辙诞,但是為啥Android系統(tǒng)不行辙售,先有谷歌后有天,谷歌面前有堵強(qiáng)飞涂。機(jī)智的我打開(kāi)了手機(jī)的SS旦部,然后就成功了。
我試著安裝了其他的應(yīng)用较店,亞馬遜士八,愛(ài)奇藝,百度等梁呈,只要是沒(méi)翻墻的情況下都驗(yàn)證失敗婚度,坑啊。
所以告訴大家一個(gè)不信的消息捧杉,谷歌的App Links功能在中國(guó)GG陕见。這幾天我喜歡的陳一發(fā)兒涼了,也歡聲笑語(yǔ)打出GG.
如果誰(shuí)有好的解決辦法可以留言告訴我味抖。