相信大家今天都知道了支付宝集五福的活动,对于二次使用这种运营模式的行为我暂不做评价,毕竟大家都是程序员。

我这次和大家聊聊这块的技术点,以及如何用

Python 来做点事情。所有技术点到为止不做深究。

1、Hybrid + 缓存机制

很多人可能更关注怎么快速集齐五福。但若你是一枚程序员,有没有考虑过整个集五福的技术是如何设计的?其次这几个页面到底是不是用原生开发的,如果是原生为什么没有更新版本,如果不是那又是用什么开发的以及如何做到如此流畅?

答案是

Hybrid ,来灵活的完成复杂的运营活动。

Hybrid

可能有的人比较陌生,我在很早的一篇文章 微信新功能「微信指数」 大数据、小程序 中也提到过这块的技术。通俗的来讲这是一套原生 Native  +

动态语言的混合编程框架。

当然这次只提

Native +  H5 的混合开发,不涉及其他动态语言 Weex 、RN 之类的。

如果你是一名移动应用开发者,相信你对

WebView 应该不陌生。这个 View 的内部是通过 WebKit 内核对 html 以及 js 做一个解析和展示,同时由于它是一个 Native 的

View,所以它与生俱来的必然可以和Native 进行交互。

再回到支付宝的集五福,这个页面就是一个

h5  的页面(判断方式:Dump 当前页面发现只是一个 WebView 组件)。

H5

页面已经正常加载了,那么哪个操作会和 Native 交互?

“扫一扫”,因为涉及到了相机而这个又是硬件设备上的部件,所以无论如何这个

扫一扫 都会调用 Native 的  AR 组件去完成扫一扫的操作。

因此我们看到的集五福是一个

H5 页面,而 AR 扫一扫则是 Native 的页面。

2、WebView 和 Native 的交互

这时候问题就来了,如何实现

WebView 和 Native 的交互?

其实

WebView 在最初设计的时候就提供了一个 setJSInterface 接口用来设置 Native 暴露给 H5 的接口。但这种方式很难维护而且它会将当前

Hybrid 的接口都暴露给前端页面。

还有一种方式是通过

console.log()。

熟悉

WebView 的读者应该知道这么一个类WebViewChromeClient ,在这个类里面有一个方法onConsoleMessage(),这个方法会在 JS

调用 console.log 的时候被调用,参数则是 log 信息。

所以我们可以通过格式化的

log 来完成 H5 -> Native 的数据传递,如果 Native -> H5 则可以通过注入一个 JSBridge 来完成。

3、缓存机制

如果我们要使用

Hybrid 的技术,那么为了提升用户体验缓存机制是必不可少的。这也是为什么支付宝的集五福不会像我们用微信打开一个页面那么慢,它几乎是瞬间打开。

我们可以将这个运营活动想成一个

H5 App,这个 H5App 里面包含了 html、js、css 这些静态资源。同时重写 WebView 的 onShouldInterceptRequest

来拦截加载的 url 返回一个离线的数据。

上面这种时序图就展示了下原生的加载和缓存机制的一些区别,这中间还有更多的逻辑,比如域名的校验、离线包的安全校验等等的。

虽说集五福是一个

H5 页面,但更确切的来说它算是一个 H5App ,通过加载一些缓存的页面来提升用户体验,以及完成更高效的版本维护。

4、Python 做点事情

这块就不着重讲解了,原理清楚了我相信大家都能做点东西出来。源码直接去我的

Github,先表明一点这块我没花太多精力去实践,所以看到源码的别回来揍我就好。

本文内容转载自网络,本着传播与分享的原则,来源/作者信息已在文章顶部表明,版权归原作者所有,如有侵权请联系我们进行删除!

python春节集五福_集五福?用 Python 做点事情吧! Python集五福教程相关推荐

  1. python统计图作息规律统计分析_借鉴柳比契夫时间统计法,用Python做了个时间管理工具TMTask...

    很久以前,我读过格吕宁一本很神奇的书--<奇特的一生>,俄国生物学家柳比契夫的传奇故事和他的时间统计法. 先来体会一下这位老人家有多牛. 柳比歇夫生前发表了七十来部学术著作.其中有分散分析 ...

  2. python动态语言双刃性_动态语言的灵活性是把双刃剑:以 Python 语言为例

    原标题:动态语言的灵活性是把双刃剑:以 Python 语言为例 本文有些零碎,总题来说,包括两个问题:(1)可变对象(最常见的是list dict)被意外修改的问题,(2)对参数(parameter) ...

  3. 32岁了学python来的及吗_为什么每个人都应该在2020年学习Python?

    如今每个人都在谈论 Python,包括那些曾经对 Python 嗤之以鼻的人.本文作者 Javinpaul 原是一名 Java 狂热粉,他以前还曾号召大家学习 Java 而不是 Python.如今他的 ...

  4. python好用的软件_【分享|10款超好用的辅助Python的软件,初学者请查收!】- 环球网校...

    [摘要]在这个科学技术高速发展的时代,越来越多的人都开始选择学习编程软件,那么首先被大家选择的编程软件就是python,也用在各行各业之中,并被大家所熟知,所以也有越来越多的python学习者关注Py ...

  5. python print end报错_下面代码的输出结果是 for i in Python: print(i,end= )_学小易找答案...

    [单选题]关于Python字符串,以下选项中描述错误的是 [单选题]以下程序的输出结果是: lcat =["狮子","猎豹","虎猫",&q ...

  6. is在python中是什么意思_【IT专家】关键字:is和=在python中有什么区别

    本文由我司收集整编,推荐下载,如有疑问,请与我司联系 关键字: is 和 = 在 python 中有什么区别 关键字: is 和 = 在 python 中有什么区别 [ 英 ]What is the ...

  7. aws集群重启_使用自动伸缩组在AWS中运行安全数据库集群

    aws集群重启 当您必须在AWS上运行可扩展应用程序时,您的数据库也必须是可扩展的. 扩展无状态应用程序层更容易,在无状态应用程序层中,每个节点几乎都是一次性的-即使3节点集群中的一个节点发生故障,您 ...

  8. 第五期_信息收集《Metasploit Unleashed Simplified Chinese version(Metasploit官方文档教程中文版)》

    翻译者说明1:本文为Metasploit Unleashed中文版翻译.原文链接:https://www.offensive-security.com/metasploit-unleashed/ 翻译 ...

  9. python执行txt中代码_【技术分享】文件解压之过 Python中的代码执行

    预估稿费:200RMB 投稿方式:发送邮件至linwei#360.cn,或登陆网页版在线投稿 一.前言 Python中负责解压压缩文件的代码实现上并不安全,存在目录遍历漏洞,攻击者可以利用该漏洞覆盖_ ...

  10. python代码设置超参数_超参数调优总结,贝叶斯优化Python代码示例

    本文介绍超参数(hyperparameter)的调优方法. 神经网络模型的参数可以分为两类,模型参数,在训练中通过梯度下降算法更新: 超参数,在训练中一般是固定数值或者以预设规则变化,比如批大小(ba ...

最新文章

  1. SprintBoot中JPA的使用
  2. 专访Docker大牛:说服传统应用程序使用者是Docker面临的最大难题
  3. javascript-封闭函数的定义与使用
  4. 问题四十九:怎么用ray tracing画supertoroid(超级圆环)
  5. 微信大改版,更新前必看的4个东西
  6. js打印插件_使用 Nodejs 开发一个 commitlint-release 插件
  7. 卫星通信(SATCOM)设备的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告
  8. 了解工作分解结构(WBS)
  9. css里的小图标怎么加入,前端页面如何引入小图标?CSS字体的另类使用方式!
  10. C++ 设置字体颜色
  11. 腾讯将创办腾讯云启商学院,马化腾任荣誉院长
  12. opengles之3D模型加载(obj模型文件)
  13. 东北工学院 计算机 姚岚,东北的大学最强十校,工科是真强,2所211大学无缘前十...
  14. Kubernetes(K8s)Events介绍(上)
  15. 【Android】使用后端云Bmob实现登录、注册
  16. 微信小程序获取当前定位 超简单
  17. UGUI sprite editor九宫切图用法
  18. DC-DC 保护调试经验
  19. 新电脑的正确打开方式——(近万字图文并茂详细分步骤讲解)【万一那天你就有新电脑了呢】包括个性化·等你来解锁哦
  20. 电子邮箱注册格式是什么?电子邮箱格式怎么写?

热门文章

  1. 20. ROUTINES
  2. altium中错误报告类型_Python 官方团队在打包项目中踩过的坑
  3. Ubuntu下使用valet搭建laravel生产环境
  4. 幼儿园择校记-海淀清河附近的家长看过来喽!
  5. 计算机硬件安装过程带图,电脑硬件组装全过程之一--CPU安装图解
  6. server2019远程服务器ipv4地址_windows服务器下指定IP地址远程访问服务器的设置方法...
  7. Android调用WPS第三方App打开PDF文档,一直停留在首页,提示正在加载文档类型
  8. 论坛发帖系统(参考答案)
  9. 小白必看 进制转换程序的实例及各种坑
  10. Leetcode——24. 两两交换链表中的节点