其他
DeepLink,链接app世界
本文作者
作者:九心
链接:
https://juejin.cn/post/7341720847880798235
本文由作者授权发布。
深层链接是指任何架构的 URI,可将用户直接转到应用中的特定部分。--Android官网 https://developer.android.com/training/app-links/deep-linking?hl=zh-cn
可以看到,DeepLink能做的不仅是唤起了当前应用,还跳转到应用中的特定部分。
QQ阅读签到中的换量 | 掌盟中广告页 |
注册URL Scheme(Android和iOS) 特殊Deeplink(支持Http和Https):Android中有App Links,iOS中则有Universal Links Deferred Deeplink(延迟深度链接):除了普通Deeplink的功能,还针对于未安装应用的场景,安装后,能够复原H5内的应用场景。
1、URL Scheme
Scheme:业务标识。 host:域名,用来指定对应的页面。 Path:页面路径,可用也可以不用。 query:携带的参数。
// 微信扫一扫,精度为1,打开闪光灯,这些参数是我编的 weixin://dl/scan?level=1&light=1
Scheme:weixin host:dl path:/scan query:level=1&light=1,我们可以查询到对应的参数扫码的精细度 level 和是否打开闪光灯 light。
不能处理未安装:用户未安装该应用的场景,不能响应。 不同应用可监听相同URL:这种情况需要交给用户自己选择。
2、Android App Links 和 iOS Universal Links
简单来说,他们都允许配置一个网站,在应用没有安装的时候,链接不会失效,会跳转自己App中配置的网站,而在链接中正常的时候,又回跳转到具体的业务场景。
应用未安装:针对应用未安装的情况,可以跳转到指定的网页,在网页中可以做特殊的处理。 不同应用可以监听同一URL:由于使用的是HTTP\HTTPS问题,避免了这样的情况。
3、H5链接
现在很多公司,都会选择使用H5链接做唤起起点。比如说下面的京东金融:
具体的一些流程我们可以查看这个链接:深度链接(Deeplink)技术助力APP运营,实现病毒式用户增长。
https://mp.weixin.qq.com/s/fWBDfd-7al7MsY0zwDn6dA
4、Deferred deeplink
小红书H5 | 小红书端内 |
打开H5 、下载小红书、 安装、启动后还原《10分钟美味早餐》的链接。本质上,Deferred deeplink 是前面技术的补充,目前主要的技术方案有:
剪贴板:点击下载的时候,将场景中的一些参数记录下,生成一条链接或者更为复杂得多口令码,启动的时候从剪贴板中读取参数。 设备指令模糊匹配:将当前网络的IP、系统、可以获取的ID信息记录下来,某个时间段可以匹配上的用户可以认为是同一个用户。
我们看看 Deferred deeplink 的技术流程:
5、其他技术方案
5.1 微信跳转
《微信跳转第三方应用文档》 https://developers.weixin.qq.com/doc/oplatform/Mobile_App/WeChat_H5_Launch_APP.html
5.2 ChromeIntent
《Chrome Intent使用规范》 https://developer.chrome.com/docs/android/intents?hl=zh-cn
《创建指向应用内容的深层链接》 https://developer.android.com/training/app-links/deep-linking?hl=zh-cn
1、在AndroidManifest文件中添加Intent过滤器
<activity
android:name="com.example.android.GizmosActivity"
android:label="@string/title_gizmos" >
<intent-filter android:label="@string/filter_view_http_gizmos">
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<!-- APPLinks URIs 是 "http://www.example.com/gizmos” -->
<data android:scheme="http"
android:host="www.example.com"
android:pathPrefix="/gizmos" />
<!-- note that the leading "/" is required for pathPrefix-->
</intent-filter>
<intent-filter android:label="@string/filter_view_example_gizmos">
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<!-- URI 是 "example://gizmos” -->
<data android:scheme="example"
android:host="gizmos" />
</intent-filter>
</activity>
2、读取Intent传递的书架
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Intent intent = getIntent();
String action = intent.getAction();
Uri data = intent.getData();
}
3、使用ADB测试Deeplink
$ adb shell am start
-W -a android.intent.action.VIEW
-d <URI> <PACKAGE>
URI:对应的 Deeplink 链接。 PACKAGE:App对应的包名。
上面的内容比较简单,都是复制的官方文档,建议查看官方文档。
最后推荐一下我做的网站,玩Android: wanandroid.com ,包含详尽的知识体系、好用的工具,还有本公众号文章合集,欢迎体验和收藏!
推荐阅读:
扫一扫 关注我的公众号
如果你想要跟大家分享你的文章,欢迎投稿~
┏(^0^)┛明天见!