热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

得物前端唤端业务场景和技术精讲

得,物,前端,唤,端,业务,场

原创 苏文康-得物技术

前言

当你在刷朋友圈时突然看到一个潮鞋广告,正是你非常喜欢、一直想买的那款而且价格美丽,于是你兴奋地点击广告直接打开了购物App,并且直接进入刚刚看到的潮鞋详情页,你只需要直接点击购买就能得到这双你期待已久潮鞋,这流程如丝般顺滑!

你正在疯狂追的爱豆在微博发了一款联名潮玩内容,还是独家发售,贴文中就有网页链接,你点击后直接打开购物平台进入了与爱豆联名同款的潮玩详情页,迫不及待的下单拥有一款时尚的潮玩!

我今天要和大家分享的是得物唤端技术,关于唤端网上已经有很多优秀的文章了,这里不会复读机式的把URL Scheme协议、Universal Link协议等再一遍遍唠叨了,这样可能你也会觉得毫无新意。

唤端分类

 

1. 剪切板式还原

场景1:

每当大促时节,由于线上广告载体平台大量封禁链接,导致电商平台只能采用发送文本的方式邀请亲朋好友给自己助力或者分享好物。其他用户复制整条信息,打开得物App,客户端检测到剪切板中有特定信息的内容,就能打开特定的页面。我们把这种方式称为剪切板式还原。

场景2:

除了转发给好友通过复制内容还原,还有一个场景也同样可以用到剪切板,那就是新用户拉新!当你在某个第三方投放了一个拉新活动,用户点击下载App时,会遇到第三方平台屏蔽URL Scheme和Universal Link的情况,那么此时你既不能打开应用市场也不能打开得物App,我们难道就只能眼睁睁的流失大量的潜在新用户吗?此时,剪切板还原不失为一个备选方案。可以提示用户点击按钮复制还原文案到剪切板,然后让用户手动去应用市场下载得物App,那么当用户下载完成后打开App,也可以实现场景还原的效果,只是链路变长了,体验感不太友好,不过有路走总比无计可施要好得多。

2. 链接式还原

当用户在站外点击链接加载h5页面,如果已经安装了得物App,那么可以直接打开得物App并且还原用户在站外关联商品详情页或者列表页等,我们也都知道实现此功能使用的无非就是通过Url Scheme(通用)、Universal Link(iOS>=9专属)【1】、Chrome Intent【2】(在Android系统中的Chrome >= 25浏览器中使用)、APP Links【3】(Android版的Universal Link)等特殊链接传参实现,这里就不对URL Scheme、Universal Link展开赘述了,因为这些协议是网上罗列最全最详细的方案,我把这类唤端分类为链接式还原

3. 服务端辅助式还原

如果是新用户,则没有下载过得物App,那么他就只能先去应用市场下载了后再打开,我们先假设下载APP没有使用到APP Links 【4】以及Chrome Intent【5】技术,那么当用户下载完成以后打开得物App时,也能还原到站外相关页面。分明用户从站外跳转到应用市场或者Android系统直接下载安装包,到用户打开得物App,这条链路已经断了呀,得物App是怎么知道需要还原到某个特定页面的呢?答案是服务端辅助式还原!

在用户跳转到应用市场或者直接下载安装包前,前端通过接口把用户的设备指纹以及需要打开得物App时还原的页面参数传给服务端,当用户打开刚下载的应用时,客户端通过调接口也传相应的设备指纹给服务端,接口通过一系列的跨端设备指纹判断到是同一用户,下发给客户端新用户就可以跳转到在站外看到的相关页面。

实践问题:

按照上一段的三个分类分别评价三种方式的优劣。

剪切板式还原:

优点:

  • 应用还原场景比较广泛,不管是在从站外召回老用户,还是拉新下载打开得物 App 都可以在站内直接还原场景。
  • 兼容性强,剪切板无需区分iOS和Android或者其它系统,在跨端场景中都可以使用。

缺点:

  • 数据容易丢失。剪切板中的内容很容易被手机内的其它 App 污染或者清空。
  • 无唤端能力。用户需要复制粘贴,然后再手动打开得物 App 才能够还原场景。

链接式还原:

优点:

  • 相应时间极速,场景还原流程如丝般顺滑。用户在站外点击链接就可直接打开得物App场景还原,减少了用户的操作流程,才能最大程度的留住潜在用户。

缺点:

  • 兼容性太差。

a.由于各流量平台经常会封禁链接式还原的技术,导致在非商业环境中不能正常的实现唤端,更不用说还原了。

b. 不同系统、不同版本对于链接跳转的方式也有差异。如Universal Link不支持iframe形式触发,不支持自动触发等。

服务端辅助式还原:

优点:

  • 兼容性较强。无需区分iOS和Android或者其它系统,在跨端场景中都可以使用。

缺点:

  • 无唤端能力,需要手动打开 App。
  • 跨端设备指纹的准确性非常考验技术团队的以往经验及能力。由于通过js直接获取到的站外浏览器信息有限,所以还需要通过其它途径尽可能多的采集数据,不断积累优化才能生成一个准确性高的设备指纹,团队的相关经验和能力决定着设备指纹的冲突率高低。
关键埋点

有了以上技术原理,通过观察一些关键埋点,可以更好的及时优化流程,各种方式的唤端或还原的成功率是最重要的指标。对于拉新,我们更关注的是唤端率,而对于召回,我们更关注的是召回率

  • 站外前端触发唤端事件的同时上报触发事件埋点
  • App打开检查到有场景还原链接时上报埋点
  • 打开 WebView 时再次上报埋点
  • 成功还原会场后上报一个埋点

通过这样四个埋点形成一个漏斗,统计这四个埋点可得出唤端在哪一步流失率最大,进而有针对性的给出相应策略。

神奇的设备指纹

对于剪切板和链接式作为前端开发应该都不陌生,即使作为普通的用户对剪切板式的还原也已经非常熟悉了。服务端辅助式还原,则因为“缺少”必要的完整链路居然可以进行还原有时会让我们觉得有些“神奇”。

手机中有一个M App很久没使用了,也许是因为手机内存羞涩导致手机有点卡,又或许是你不想看到应用商场一直提示你升级M,所以你干脆直接卸载了它。过了一段时间突然又需要用到M App,你又去应用商城下载安装回来。神奇的是,M App没有让你输入账号、验证码/密码,居然直接登录了你卸载前的账号。更神奇的是,你新安装的同属于M家的App,居然也默认登录了你的账号!

上面这个例子在原生App中非常容易做到,因为客户端可拿到设备中的许多信息,从而根据一定的算法生成唯一的设备指纹,再把账号与设备指纹绑定即可,你的这台设备就成了一个稳定账号,所以不用再繁琐的输入账户、验证码/密码了。

得物唤端技术现状以及未来展望

得物发展初期考虑到复杂的URL Scheme兼容性问题,选择了第三方SDK接入,能力仅限于以上提到的链接式还原,当新用户下载得物打开App时并不能进行场景还原,降低了新用户的体验感。同时遇到针对性的媒体唤端兼容性问题时,还需要跟第三方沟通,增加了解决问题的链路时间,也需要我们的开发人员花费大量时间成本去配合定位、解决问题。

面对得物App现在日益增长的投放业务需求,我们对唤端成功率有了更高的追求,也明显感觉到第三方的解决方案越来越吃紧,于是我们也开始逐步搭建自己的唤端技术平台,通过不断积累经验、学习别人优秀的唤端方案,期待努力早日完成得物自研唤端平台能力。

未来得物的唤端除了会支持URL Scheme、Universal Link常见的技术外,还会包括以上提到的剪切板、服务端辅助式还原。其中服务端辅助还原的难点就是跨端指纹,这也是我们正在攻克的主要技术难点,打通全部唤端还原场景!

总结

唤端原理其实很简单,在实际场景中的情况却很复杂,排除微信、微博等媒体平台对URL Scheme、Universal Link协议的控制,不同浏览器对协议的响应也可能会有差别,iOS、Android、HarmonyOS系统对协议也有着不同的兼容性问题。比如说在使用URL Scheme时,是使用a标签、还是iframe、还是location都需要根据环境去选择。唤端技术没有十全十美的解决方案,只能根据业务需求去选择一个最优方案。

参考链接:

【1】https://developer.apple.com/library/archive/documentation/General/Conceptual/AppSearch/UniversalLinks.html

【2】https://developer.chrome.com/multidevice/android/intents?spm=taofed.bloginfo.blog.1.707e5ac8c56BXh

【3】https://developer.android.com/studio/write/app-link-indexing?hl=zh-cn

【4】https://developer.android.com/studio/write/app-link-indexing?hl=zh-cn

【5】https://developer.chrome.com/multidevice/android/intents?spm=taofed.bloginfo.blog.1.707e5ac8c56BXh

*文/苏文康

关注得物技术,每周一三五晚18:30更新技术干货
要是觉得文章对你有帮助的话,欢迎评论转发点赞~


推荐阅读
  • 在软件开发过程中,经常需要将多个项目或模块进行集成和调试,尤其是当项目依赖于第三方开源库(如Cordova、CocoaPods)时。本文介绍了如何在Xcode中高效地进行多项目联合调试,分享了一些实用的技巧和最佳实践,帮助开发者解决常见的调试难题,提高开发效率。 ... [详细]
  • 二分查找算法详解与应用分析:本文深入探讨了二分查找算法的实现细节及其在实际问题中的应用。通过定义 `binary_search` 函数,详细介绍了算法的逻辑流程,包括初始化上下界、循环条件以及中间值的计算方法。此外,还讨论了该算法的时间复杂度和空间复杂度,并提供了多个应用场景示例,帮助读者更好地理解和掌握这一高效查找技术。 ... [详细]
  • NOIP2000的单词接龙问题与常见的成语接龙游戏有异曲同工之妙。题目要求在给定的一组单词中,从指定的起始字母开始,构建最长的“单词链”。每个单词在链中最多可出现两次。本文将详细解析该题目的解法,并分享学习过程中的心得体会。 ... [详细]
  • Android中将独立SO库封装进JAR包并实现SO库的加载与调用
    在Android开发中,将独立的SO库封装进JAR包并实现其加载与调用是一个常见的需求。本文详细介绍了如何将SO库嵌入到JAR包中,并确保在外部应用调用该JAR包时能够正确加载和使用这些SO库。通过这种方式,开发者可以更方便地管理和分发包含原生代码的库文件,提高开发效率和代码复用性。文章还探讨了常见的问题及其解决方案,帮助开发者避免在实际应用中遇到的坑。 ... [详细]
  • DRF框架中Serializer反序列化验证机制详解:深入探讨Validators的应用与优化
    在DRF框架的反序列化验证机制中,除了基本的字段类型和长度校验外,还常常需要进行更为复杂的条件限制校验。通过引入`validators`模块,可以实现自定义校验逻辑,如唯一字段校验等。本文将详细探讨`validators`的使用方法及其优化策略,帮助开发者更好地理解和应用这一重要功能。 ... [详细]
  • 在Android 4.4系统中,通过使用 `Intent` 对象并设置动作 `ACTION_GET_CONTENT` 或 `ACTION_OPEN_DOCUMENT`,可以从相册中选择图片并获取其路径。具体实现时,需要为 `Intent` 添加相应的类别,并处理返回的 Uri 以提取图片的文件路径。此方法适用于需要从用户相册中选择图片的应用场景,能够确保兼容性和用户体验。 ... [详细]
  • 利用树莓派畅享落网电台音乐体验
    最近重新拾起了闲置已久的树莓派,这台小巧的开发板已经沉寂了半年多。上个月闲暇时间较多,我决定将其重新启用。恰逢落网电台进行了改版,回忆起之前在树莓派论坛上看到有人用它来播放豆瓣音乐,便萌生了同样的想法。通过一番调试,终于实现了在树莓派上流畅播放落网电台音乐的功能,带来了全新的音乐享受体验。 ... [详细]
  • 当前,众多初创企业对全栈工程师的需求日益增长,但市场中却存在大量所谓的“伪全栈工程师”,尤其是那些仅掌握了Node.js技能的前端开发人员。本文旨在深入探讨全栈工程师在现代技术生态中的真实角色与价值,澄清对这一角色的误解,并强调真正的全栈工程师应具备全面的技术栈和综合解决问题的能力。 ... [详细]
  • 探索JavaScript倒计时功能的三种高效实现方法及代码示例 ... [详细]
  • 整合百度UEditor编辑器于ASP后端的实现步骤与技巧
    随着微软停止对XP系统的支持,公司已全面升级至Windows 7。早期网站创建时使用的编辑器仅兼容IE6浏览器,而如今系统更新后,原有的编辑器已无法满足新环境的需求。本文详细介绍了如何将百度UEditor编辑器整合到ASP后端,包括实现步骤和实用技巧,确保网站在新系统下仍能高效运行并提供良好的用户体验。 ... [详细]
  • Android工程师最容易遇到4个瓶颈是什么?附带学习经验
    一些感悟穷人的一次失败,为了还债可能一辈子都翻不了身,为还债一辈子送外卖。你将不再会有精力去思考和投机。穷人的失败可能断送了他所有暴富的机遇和时间&# ... [详细]
  • Android常见漏洞漏洞名称:Log敏感信息泄露漏洞描述: 程序运行期间打印了用户的敏感信息,造成泄露修改建议: 建议禁止隐私信息的log  ... [详细]
  • Vue开发实例目录总索引
    作者简介作者名:编程界明世隐简介:CSDN博客专家,从事软件开发多年,精通Java、JavaScript,博主 ... [详细]
  • 本指南介绍了如何在ASP.NET Web应用程序中利用C#和JavaScript实现基于指纹识别的登录系统。通过集成指纹识别技术,用户无需输入传统的登录ID即可完成身份验证,从而提升用户体验和安全性。我们将详细探讨如何配置和部署这一功能,确保系统的稳定性和可靠性。 ... [详细]
  • (一)前言:二次开发编辑器neditor(基于百度编辑器ueditor):界面相对于ueditor会更美观.(二)问题描述:最近在公司项目中遇到一个比较奇葩的问题。neidito ... [详细]
author-avatar
流云清动_438
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有