AppLink
https://juejin.cn/post/7031143982960902157
https://developer.android.com/studio/write/app-link-indexing
唤醒App的几种方式
Deep Link
https://developer.android.com/training/app-links/deep-linking
URL Scheme
链接格式
1 | [scheme]://[host][:port]/[path]?[query] |
属性名 | 含义 |
---|---|
scheme | 协议名(由开发人员定义) |
host | 网络域名 |
port | 端口号 |
path | 页面路径 |
query | 请求参数 |
scheme only
1 | <!-- for deep-link --> |
在浏览器输入 ewallet:// 就能直接打开app
1 | ewallet:// |
scheme host
1 | <intent-filter> |
在浏览器输入
1 | com.great.jon://topic |
id=11 这个可以不写
ADB TEST
1 | adb shell am start -a android.intent.action.VIEW -d "replace your link here" |
Android系统级 Schemes
有一些已经定义了URL Schemes,比如短信是 sms:、通话是tel:、email是mailto:,在定义自己APP的URL Schemes的时候要避免跟系统应用名称一样
各大平台
简单查找了一下各大平台的 scheme,感兴趣的可以直接从手机浏览器中打开尝试一下。
QQ:
qq://
微信:weixin://
淘宝:taobao://
微博:sinaweibo://
百瓶:billionbottle://
页面调用方式
1 | window.location.href = schemeUrl; |
直接跳转链接即可,简单方便。
负面情况
- 目前没有办法区分多个 App 都注册了相同 scheme 的情况;
- 不支持从其他 App 中的 WebView 直接跳转到目标 App;
- Android 端微信,无法直接通过 scheme 唤起 App,可以通过引导或微信开放标签来解决;
- 只能通过
hidden
、blur
等事件监听到是否安装 App;
因此为了解决以上问题,iOS 和 Android 都有了自己的第二套解决方案,分别是 iOS 的 Universal Links,和 Android 的 App Links。
App Links
在 2015 年的 Google I/O 大会上,Android M 宣布了一个新特性:App Links。它可以让用户在点击一个普通 Web 链接的时候可以打开指定 App 的对应页面,前提是这个 App 已经安装并且经过了验证,否则会显示一个打开确认选项的对话框,目前只支持 Android M 以上系统。
App Links 的出现其实也是为了优化用户体验,在使用它唤醒 App 时会弹出一个对话框提示用户是否打开,缺点就是如果用户勾选了取消之后,可能之后就再也唤醒不了了。
工作方式及流程
配置 AndroidManifest.xml;
配置 json 文件;
1
2
3
4
5
6
7
8[{
"relation": ["delegate_permission/common.handle_all_urls"],
"target": {
"namespace": "android_app",
"package_name": "包名",
"sha256_cert_fingerprints": ["签名"]
}
}]将 json 文件上传到指定域名的 .well-known 路径下,文件名定义为 assetlinks.json;
验证 App Links,可使用 AndroidStudio 里的 App Links Assistant 中的 Test App Links 进行测试或者在短信中输入链接点击测试,如果直接唤起 App 没有弹出对话框选择则说明 App Links 验证成功;
总的来说与 Universal Links 的配置和验证很相似,差异不大。
https://developer.android.com/studio/write/app-link-indexing
http://www.androidchina.net/10135.html
第三方服务
微信相关的友情提示
微信已经成为大家日常必不可少的交流工具,用作推广 App 来说是再好不过的,但是微信内部通常是无法直接跳转至其他 App 的。那除了以上列出的技术方案,我们还可以如何去实现这个技术需求呢?
应用宝
如果你的页面需要能直接打开应用商店,可以把你的 App 上传到应用宝平台,因为应用宝和 AppStore 有合作,并且在内部实现了属于自己的一套流程,直接在微信中跳转应用宝的链接也是一个可选的方案。
微信开放标签
微信在 2020 年 5 月推出了微信开放标签功能,用于在微信浏览器内直接唤醒 App,也能通过携带参数直接进入 App 相应的页面,只要按照文档规定接入微信 SDK 就可直接使用该功能。
具体要求可以参考官方开放平台:微信官方文档( developers.weixin.qq.com/doc/oplatfo… )。
https://cloud.tencent.com/developer/article/1652487
deeplin VS AppLink
- Deep Links 是一种允许用户进入应用某个特定Activity的intent filter。点击这类链接时,系统可能会弹出一个选择列表,让用户在一堆能够处理这类链接的应用里(包括你的)选择一个来处理该链接。图一展示了这样一种情况:用户点击了一个地图相关的链接,系统弹出一个选择列表,让用户选择是要使用地图应用来处理,还是使用Chrome浏览器来处理。
- App Links 是一种基于你的网站地址且验证通过的Deep Links。因此,点击一个这样的链接会直接打开你的应用(如果已经安装),系统将不会弹出选择列表。当然,后续用户可以更改配好设置,来指定由哪个应用程序处理这类链接。
item | Deep Links | App Links |
---|---|---|
Intent URL Scheme | https, http,或者自定义 | 需为http或https |
Intent Action | 任意Action | 需为android.intent.action.VIEW |
Intent Category | 任意Category | 需为android.intent.category.BROWSABLE 和android.intent.category.DEFAULT |
链接验证 | 不需要 | 需要在网站上放置一个数字资产链接,并能够通过HTTPS访问 |
用户体验 | 可能会弹出一个选择列表给用户选择用哪个应用处理连接 | 没有弹框,系统直接打开你的应用处理网站连接 |
兼容性 | 所有Android版本 | Android 6.0及以上 |
https://juejin.cn/post/6844903954149539848
由于大部分应用,如微博、微信、第三方浏览器(包括Chrome),都不会将URL抛给系统处理(对scheme进行屏蔽),因此App Links生效的情况就很有限了,比如只能从记事本应用、短信应用这些进行跳转。一般商用实现的是打开系统浏览器,通过系统浏览器打开应用的对应页面。
作者:JinBeen
链接:https://juejin.cn/post/6844903954149539848
来源:稀土掘金
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。