一次难忘的PopLayer 之旅

简介: 在云栖Teachday活动第二十八期上,淘宝无线开发工程师梨月带了题为《PopLayer 之旅》的精彩分享。分享中,她对PopLayer的起源、实现原理、工作方式等一一进行了仔细介绍;在分享结尾,梨月还分享了PopLayer在双十一计划内外的使用状况,精彩不容错过。

在云栖Teachday活动第二十八期上,淘宝无线开发工程师梨月带了题为《PopLayer 之旅》的精彩分享。分享中,她对PopLayer的起源、实现原理、工作方式等一一进行了仔细介绍;在分享结尾,梨月还分享了PopLayer在双十一计划内外的使用状况。


PopLayer的起源

PopLayer最早起源于2014年双十一,最初为应对启动仪式而设计,采用Native方式开发,需要加载到手淘双十一版本才能使用,开发之后只能使用一次,不存在复用价值;在2014年双十二时,采用了hybid的解决方案,通过在详情页上嵌入Webview,需要进行活动时,直接调用Webview,在其上再写一些对应的前段代码即可,在腊八节和三八节实现了复用;在2015年6月,引入了名为Poplayer的中间件,动态监听页面切换,切换到新页面时,再进行判断该页面是否具有相应的配置以及是否需要展示相应的活动,动态地添加Webview,实现了所有的场景一次投入重复使用。

17d7f77436563ec5f7a18fe385825da2d532dffd  

总结来说,PopLayer可以在任意Activity ( ViewController ) 上附着的一个透明的View,它可以通过H5或Weex快速完成活动功能开发;活动是通过配置的形式投放出去的,所以在无需发版的情况下,通过运营后台直接就可以将活动发布出去;并且PopLayer它可以在不影响常态业务功能的同时,增强Native页面本身的交互能力。

 

PopLayer的实现方式

下面将从UI结构、用户交互、能力扩展、生命周期四部分来介绍PopLayer的实现方式。

UI结构

6864b2dc540784bbba14419bbcb403aa23a3a15f 

 

首先在UI结构上,在手淘的扫码页投放了一个活动的入口,其实我们不希望去篡改下面的Native页面的任何一个UI,所以是修改扫码页面它原有的UI和逻辑,不侵入到它这个页面中去,而是在页面上方覆盖了一个全屏的Poplayer View,该View是透明的,因此H5或Weex的开发可以在任意的位置部署它的业务逻辑。

用户交互

61acc34c9e3ca7cfed0d2c8b2bb31893823f11ac 

其次,由于是在全屏的页面上覆盖了View,用户在进行操作的时候,如何让用户的操作还可以按照原来的路径去响应呢?这就涉及到用户的交互,事实上默认是不捕获任何用户行为的,而是将所有的用户事件都会传到Native页面,由Native响应;但是在我有一些入口,比如现在点击领取双十一红包这也是一个Poplayer的入口,希望通过点击之后进入AR活动页面,此时需要在点击到这个位置的时候,从H5的逻辑进入到AR活动页面去,此时可以设置一个阈值,假设设置的阈值为0.8,按钮这边区域的Alpha值是1,当该Alpha大于所设的阈值时,就可以捕获了该用户事件的操作,然后交与Poplayer View去处理,下一步跳转到对应的AR互动页面上;对于Alpha小于0.8,也就是用户操作位置的不透明度小于设置的阈值,用户行为透传给Native处理,例如,此处点击返回按钮依旧会返回上一级页面。

能力扩展

 a37325802321188032612a22dd019b3df9684a99

那么Poplayer是怎么对Native的能力进行扩展的呢?首先,H5或Weex提供了动态能力;其次我们可以进行任意Native View的跟随,如图片跟随,补充原有的Native UI界面,例如,有些运营活动希望的不仅仅是运营活动,还希望可以进行Native元素进行互动;想过年不打烊的活动中,利用图片跟随方案,我们在首页是个icon的位置进行了一场打地鼠的互动活动,很好的增强了首页icon的交互性、趣味性。除了Native View的跟随外,类似的,我们也可以将整个PopLayer View作为跟随的元素来做营销互动。

生命周期

9050eeea2e883c89b6df4d8ae109b599433836d7 

下面来谈一下Poplayer的触发方式。上文有提到,可以通过监听页面切换来判断在新的页面上是否有活动需要展示,因此页面切换是最常用的,大多数场景都采用这一方式去触发;在有的情况下,例如,在首页并不是用户切换到该页面就弹出活动,而是用户点击某个按钮或滑动到某个位置等操作,才弹出某个活动,这时可以通过Native触发,然后发送自定义消息来触发Poplayer的弹出;第三种触发方式是通过拦截Poplayer协议来触发Poplayer的弹出。

与触发对应的是关闭机制,Poplayer关闭方式包括两种情况:一是当首页有一个Poplayer,从首页切换到其他页面时,会关闭首页的Poplayer;其次Poplayer还为H5、Weex提供了Close API,它们可以通过调用该API来关闭Poplayer。

 

Poplayer的应用场景和技术意义

下面来看一下Poplayer的常见应用场景以及其技术意义。

4a3b5ed11e7dcecc9e46d9fb0805bca2ad9108a4 

目前一些活动,如元旦、饿货节、造物节、双十一等,每一个活动都会有一个揭幕式。现在所有的首页揭幕都是通过Poplayer完成的。Poplayer支持混合开发,它可以利用Native完成稳定的功能,又可以利用Poplayer完成多变的业务。例如搜索关键字案例,搜索还是完成稳定搜索这个功能,而像搜索秋裤时,会弹出弹幕浮层的效果。这个效果是由Poplayer完成的;同时,Poplayer支持复杂的交互,像马总敲钟的案例,在首页右上方有一个马总的头像,用户点击马总头像时,可以进去和马总共同敲开市钟,赢取大红包;此外,Poplayer可以支持Native元素的替换,并且能与之互动;最后,Poplayer支持静默逻辑,在某个页面投放一个页面空白的Poplayer,可以在用户无感知的情况下开启定位或传感器功能。

Poplayer的技术意义

90cb3d33acbc7f28d3b7673fde3f80d4aa1f3fb2 

有了Poplayer之后,运营人员可以很方便地投放运营活动,它最大的技术意义在于分离了稳定的产品与临时业务,使得在活动开发的过程中可以兼顾稳定产品和临时业务之间的逻辑,大大加速活动开发的效率;另外,虽然手淘任一页面都不属于我们团队,但可以在任意页面投放Poplayer,所以每个页面都会成为我们的一个营销入口;同时,当有一些新的产品想法时,可以对新产品试水,这是因为贸然地去做Native开发,代价会很大。通过在详情页投放Poplayer,在页面右侧出现一个问号,点击可进入H5页面,再对以前的买家调研,进行产品的评估。

 

Poplayer在双十一

最后谈一下Poplayer在双十一的应用。

af88899f469b0be3b5caae4dee666b036c46f572 

在2015年双十一时,只计划使用在四个活动中使用Poplayer:一是首页的揭幕式;二是AR活动的抽奖;三是搜索红包;四是首页的红包雨。有了Poplayer这个技术产品之后,为这类的营销活动创造了可能;并且在计划外也得到了应用。在15年双十一时,有一个突发状况,本来红包雨已是最后一场,但由于文案的错误,对用户显示为两个小时后还有一场。因此,只能硬着头皮再上一场红包雨,这个突发情况整体从发现再到设计解决方案以及最后的开发上线,总共花费时间不超过两个小时;也就是说Poplayer给我们提供了急速交付能力,使得我们可以很好地处理线上的突发情况。

创造可能

7167879637f3f103aa03cece77bd91a3a6bdfd4e 

现在来谈一下搜索红包,因为搜索红包当时相当于是把搜索给玩坏了,用户反响很好的一个活动。搜索红包分为命令红包和关键字红包,命令红包是平台和商家提供的红包,个人用户我们也可以去生成CC密令去发放红包。搜索命令先是在搜索页面去搜索一个命令,然后搜索完之后转到红包领取页面进行红包的领取,并且可以将这个活动分享给朋友。

另一个关键字红包,可以搜索如肥皂、冰箱等关键字时,在搜索结果页展现出一个关键字特效,特效结束后,也是会引流到店铺去领红包。搜索红包的设计链路比较长,它涉及到三张Native的页面,搜索页、搜索结果页和店铺首页,并且当时在手淘、天猫等6个客户端都投放了该活动。它的主要链路首先在搜索关键词页,搜索某一个命令或关键词,点击搜索之后,转到搜索结果页,此时会发送一条弹出Poplayer的消息,然后在搜索结果页上面弹出一个Poplayer,这个Poplayer里面承载的业务逻辑是一个中转页的逻辑,在其中会进行判断,如果搜索的关键词是平台命令或商家命令,然后再跳转到H5页面上去领取平台或商家提供的红包;如果判断是个人生成的个人命令,会跳转到H5去领取CC红包;如果是一个关键字,首先会在搜索结果页展示关键字的特效,特效结束后会跳转到店铺,然后在店铺里利用Poplayer进行抽奖。可以看到,整个搜索红包的链路非常长,如果不采用Poplayer,而是直接采用Native来做的话,可能会影响原本搜索到进店的整个逻辑;并且该搜索到店的过程是手淘用户一个主流程,如果出现差错,必然会导致故障的出现,整体的风险也较高。

采用Poplayer来开发这样一个搜索红包的方案的话,其实Native并不需要动用太多的代码,它只需要在搜索时给Poplayer发一条消息即可,其他逻辑都是在Poplayer内完成,因此对主链路其实没有太大的影响,所以风险也很小。即使在搜索红包活动中出现问题,也可以快速下线,不会影响之前的搜索到进店整体的逻辑和流程。

极速交付

c575e4879e5489d231ec25148c4cd9ad3e434d17 

除了计划内上线的活动外,还在计划外上线了8个活动,例如从首页引流到站内、临时脑爆一些玩法以及处理线上突发情况。这些临时活动全部是在48小时之内交付的,并且这8个活动差不多是有3个两个小时内交付的,最快的临时活动做到半个小时上线,而且做到临时活动无故障无线上Bug,其中有活动QPS峰值达到两百多万,但是它依然很稳定。因此,可以看到Poplayer将稳定业务和活动业务分离开之后,可以大大加速活动业务的开发,并且可以让开发者轻装上阵,风险极小,可以很轻便地去投放运营活动。

相关文章
|
前端开发 安全 JavaScript
【实训项目】“我来拿”APP设计
【实训项目】“我来拿”APP设计
128 0
|
9天前
|
缓存 NoSQL JavaScript
布谷直播软件源码开发搭建技术教程
直播软件源码开发搭建技术教程干货分享!
|
前端开发 NoSQL 中间件
初次接触氛围系统架构,聊聊我这三个月的理解
本文主要介绍了作者对于氛围中心的业务理解。从氛围的概念出发,阐述了氛围系统的必要性,然后展示了配置端的数据写入、调用端的配置读取等氛围系统的架构细节,最后作者提出了一些对于氛围中心未来的想法和思考。
201 0
初次接触氛围系统架构,聊聊我这三个月的理解
|
消息中间件 Serverless 程序员
【体验有奖】用 Serverless 开个小卖部!
当前,Serverless 技术已经被广泛应用,Serverless = FaaS + BssS 的概念已经深入人心。本场景由函数计算和消息队列 MNS 联合打造,通过函数计算的快速部署能力,开发者可免费体验用 Serverless 技术 1步搭建自己的小卖部订单系统,感受 Serverless 架构的魅力。
【体验有奖】用 Serverless 开个小卖部!
|
Serverless
【活动已结束】重温童年的“五子棋”,赢取专属阿里云 Serverless 证书和众多好礼
当古老的“五子棋”遇上最新最火热的Serverless,会擦出什么样的火花?一起来动手体验,赢取你的专属阿里云Serverless证书,更有众多好礼等你来抽。
【活动已结束】重温童年的“五子棋”,赢取专属阿里云 Serverless 证书和众多好礼
|
6月前
|
弹性计算 Serverless 程序员
大咖与小白的日常:教你用Serverless每天自动发土味情话
今天介绍如何用Python结合阿里云Serverless函数计算每天定时给男/女朋友发天气预报和情话,让他/她明白程序员也有浪漫。欢迎大家学习。
100 0
|
6月前
|
小程序
大咖与小白的日常:三分钟搭建线上五子棋小程序
童年回忆杀来了:如何快速搭建一套无广告纯净版线上五子棋小程序?
|
存储 安全 物联网
阿里云用后体验及心得体会
阿里云用后体验及心得体会
|
存储 Serverless 程序员
实操教学|如何用Serveless3分钟做好邀请函?
实操教学|如何用Serveless3分钟做好邀请函?
225 0
实操教学|如何用Serveless3分钟做好邀请函?
|
弹性计算 人工智能 移动开发
我与云开发的故事
分享在云开发当中的开发感受,心得体验,以及成长经验!
462 0
我与云开发的故事
下一篇
无影云桌面