APP设置
1.打开工具
Android Studio -> Tools -> App Links Assistant
2.Add URL intent filter
输入host、path,及选择处理跳转事件的Activity。
也可在AndroidManifest.xml中直接添加:
<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="xxx.github.io" android:path="/api" />
<data android:scheme="https" android:host="xxx.cn" android:path="/api" />
</intent-filter>
3.Add logic to handle the intent
选择第2步选择的Activity -> Insert Code,Android Studio会自动在该Activity的OnCreate()及OnNewIntent()方法中添加处理逻辑。
4.Associate website
确认Site domain即为第2步输入的域名,选择对应的签名文件,点击"Generate Digital Asset Links file"生成JSON文件,提供给Server进行配置。配置好之后可点击"Link and Verify"进行验证。
注:此处需要访问Google,对Android Studio进行网络设置:Preference -> Appearance & Behavior -> System Settings -> HTTP Proxy -> 配置科学上网工具相应的代理地址及端口,例:
5.Test on device or emulator
服务器验证通过后,可输入URL进行测试,例:https://xxx.github.io/api?data=123
注:若要配置多个domain,需写在同个intent filter中,用多行<data></data>区分
Server设置
1.配置JSON
将APP提供的assetlinks.json放置在domain/.well-known/目录下,并确保Google可以通过domain/.well-known/assetlinks.json访问到该文件内容。
2.编辑访问页面
<html>
<head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><meta name="viewport" content="width=device-width; initial-scale=1.0; "><title>Document</title></head>
<body>
<p><h2>App link Test</h2></p>
<p><a href="https://xxx.github.io/api?data=encrypted_data">click this link</a></p>
</body>
</html>
Test app links
1.检查APP配置(Intent Filter)
- android:scheme attribute with a value of http or https
- android:host attribute with a domain URL pattern
- android.intent.action.VIEW category element
- android.intent.category.BROWSABLE category element
2.检查Server配置(Digital Asset Links files)
https://digitalassetlinks.googleapis.com/v1/statements:list?source.web.site=https://domain.name:optional_port&relation=delegate_permission/common.handle_all_urls
例:
https://digitalassetlinks.googleapis.com/v1/statements:list?source.web.site=https://xxx.github.io&relation=delegate_permission/common.handle_all_urls
3.检查通过URL是否可以唤起APP
adb shell am start -a android.intent.action.VIEW \
-c android.intent.category.BROWSABLE \
-d "http://domain.name:optional_port"
例:
adb shell am start -a android.intent.action.VIEW \
-c android.intent.category.BROWSABLE \
-d "https://xxx.github.io/api?data=123"
4.检查APP状态
通过以下命令查看APP状态
adb shell dumpsys package domain-preferred-apps
或
adb shell dumpsys package d
在"App linkages for user 0:"找到应用,查看状态。
Package: com.android.vending
Domains: play.google.com market.android.com
Status: always : 200000002
若Status为always,表示配置成功;若为ask,表示配置为deep link方式;若为undefined,表示配置错误:
官网中提到:Make sure you wait at least 20 seconds after installation of your app to allow for the system to complete the verification process.
这个是非常重要的信息!!需要确保在安装应用时,设备可以访问Google!否则系统无法进行App Links的校验,相当于普通的Deep Link,唤起APP时会出现选择框。
参考资料:
https://developer.android.com/studio/write/app-link-indexing
https://developer.android.com/training/app-links/verify-site-associations#web-assoc