前言
作为一个前端开发,我们应该都做过这样的需求
我们这个活动页面希望用户点击某个按钮的时候导流到我们的App,如果没有安装App跳转到下载落地页 --产品经理
一般来说面对这种需求大致的实现分为两种情况
- 手机浏览器中使用URL Scheme
- 微信浏览器可以考虑 微信开放标签
但是感觉这些都太寻常,难道就没有其他的解决方案,本着有事没事敲打一下GPT的原则,看下它能不能给出其他的解决方案,问了一下,哦吼!果然还真炸出一个新玩意 ---App Links
什么是App Links
一种由 Android 系统提供的深度链接技术,允许开发者将网页链接(HTTP/HTTPS URL)直接关联到移动应用中的特定内容。通过 App Links,用户点击链接时可以无缝跳转到应用内的对应页面,而不是打开浏览器。这种技术提升了用户体验,并加强了应用与网页之间的互联性 -- DeepSeek
哦!懂了就是一个深链接,使用的是(Http、Https)协议,可以通过这个链接跳转到应用的对应页面。
如何配置App Links
1、在应用中配置 Intent Filter
在 AndroidManifest.xml 文件中声明应用可以处理的 URL 模式。例如:
<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="www.example.com" android:pathPrefix="/example"/>
</intent-filter>
2、在网站中配置 Digital Asset Links
在网站的 .well-known 目录下放置 assetlinks.json 文件,声明应用与网站的关联关系。例如:
[{
"relation": ["delegate_permission/common.handle_all_urls"],
"target": {
"namespace": "android_app",
"package_name": "com.example.app",
"sha256_cert_fingerprints": ["SHA256_FINGERPRINT"]
}
}]
3、测试与验证
使用 Android Studio 或命令行工具验证 App Links 是否配置成功。
比如第一步中我们验证的协议是https,域名是www.example.com, 路径是/example,所以在浏览器中访问
https://www.example.com/example,如果手机安装了App就会唤起App,如果没有安装App就会跳转到对应的页面。
这3步操作下来,有一种IOS的Universal Link的既视感。
言归正传,为什么这么配置就能实现H5唤醒App呢?
App Links原理
App Links认证涉及到安卓系统的两个组件:Package Manager和Intent Filter Verifier。
PackageManager是一个无处不在的标准组建 - 它负责验证所安装的apk是否有效,授予app权限,另外还可以通过它知道系统上安装了些什么app。
而Intent Filter Verifier组件负责获取链接指向的JSON认证,解析它,验证它,然后将报告返回给PackageManger。
App Links认证在安装的时候就一次性完成。不必在每次点击链接的时候都阻塞网络。
与传统深度链接的区别
| 特性 | App Links | 传统深度链接 |
|---|---|---|
| 跳转方式 | 直接跳转到应用,无选择提示 | 弹出选择对话框(浏览器或应用) |
| 安全性 | 通过 Digital Asset Links 验证 | 无验证机制 |
| 实现复杂度 | 需要配置 Intent Filter 和 JSON 文件 | 只需配置 Intent Filter |
| 用户体验 | 更流畅,无中断 | 需要用户手动选择 |
哎,用户体验既然这么流畅,咋没怎么听说国内有这么用呢,肯定有什么猫腻吧。看来还得实操一下才能知道原因了。 此处省去实操的一对过程,哈哈哈哈。直接说结果吧。
实操结果
一顿操作下来,也是发现好几个大坑。
Digital Asset Links文件验证的坑
上面在App Links原理中提到了在第一次安装App的时候就会完成这个验证,实操过程中也是通过代理发现在App安装的时候会发出一个请求用来验证这个文件
这是请求是谷歌的域名,大家应该不难猜到了,这玩意国内网络访问不了,第一步路就封的死死的。
为了实操完整过程,加个梯子继续操作。
只有谷歌浏览器才能唤醒的坑
先是用三星手机自带的浏览器,访问了对应的链接发现没有唤起App,只是跳转到了链接对应的H5页面。
难道还是我配置有问题?灵光一现,是不是要用谷歌浏览器才可以。
换了用谷歌浏览器,果然成了!安装App的情况下会很丝滑的唤起App,如果没有安装App的情况下会跳转到链接对应的H5页面。
总结
App Links是谷歌2015年就发布的一个新特性,但是国内迟迟没得到很好的应用,整体实践下来有两个致命的原因
- App Links验证的时候需要访问外网的域名
- 需要使用谷歌浏览器