前天,微信发布了红包照片,反响还是挺强烈的,不过看到论坛里大多数都是在讨论果照和抓包,并没有人关注到微信这个功能具体的实现方式。今天这阵子热潮也已经过去了,不如我们就来聊聊这个功能的技术干货。
其实微信这个功能在 iOS 上的实现方式无外乎下面两种:
1. 计划中的功能需求,客户端提前完成功能,提前上架,等待服务端下发数据展现。
2. 临时功能需求,客户端完全不知情,但是拥有线上修改 UI 和逻辑的能力,可以通过服务端下发数据和代码来完成新功能。
上面第一种应该是最常见的,但是对于第二种实现方式,是否有可能已经微信这次的这样做的可能性有多少,大家不妨来说说自己的想法。
楼主的想法比较多,一会就更新,先听听大家的意见~
1
bullettrain1433 2016-01-28 14:18:45 +08:00
第二种应该就是 JSPatcher 吧
|
2
Ison 2016-01-28 14:20:50 +08:00
这个问题之前也有考虑过
个人觉得可行方案是微信采用了单元化的 UI 设计模式(暂且这么叫吧) 把 UI 最基本要素都模块化了 然后通过后台传的参数对模块进行拼凑 然后就实现了动态更新界面的效果了 个人愚见。。。 |
3
pljhonglu 2016-01-28 14:37:42 +08:00
应该是模块化+后台配置
像春节红包这种功能应该是预先开发的 |
4
SourceMan 2016-01-28 14:44:14 +08:00
已有的功能隐藏 + 服务器功能开关
上次是限时公测,各数据获取完成,下线 发现 bug (可抓包等等),修复,发布 6.3.10 版本 |
5
jayzjj000 OP 妈蛋 APPEND 的内容竟然不能使用 Markdown
|
7
jayzjj000 OP @bullettrain1433 没错,类似于 JSPatch 的实现方式,但是这个风险偏高,微信应该不会用才对。。。。结果他竟然用了。。。然后出了一堆 Bug
|
8
jayzjj000 OP @Ison UI 可以模块化来通过服务端下发,但是逻辑无法服务端下发,比如说点击评论被屏蔽,出来一个要付钱才能评论的弹层。
|
9
jayzjj000 OP @pljhonglu 但是 Bug 真的多,真的多。。。从来没见过微信有这么多 Bug ,都可以算得上是故障了吧。。。感觉按微信这种谨慎的态度来说,太奇怪
|
10
yemenchun1 2016-01-28 15:09:52 +08:00 via iPhone
if time > someTime {
function( ) } 难道不是这样吗…… |
12
jayzjj000 OP @yemenchun1 也有其他方法可以实现
|
13
jayzjj000 OP 😂好不容易装个逼,一下子就沉底了,不嗨森
|
14
yuchting 2016-01-28 15:18:32 +08:00
感觉,这次红包图片的活动策划加技术功能都很渣渣,都已经涉黄了。微信变成基础服务后,任何细微的功能的调整和新活动的放出,恐怕都会招致负面效果吧。
|
15
dapang1221 2016-01-28 15:23:10 +08:00 via Android
我觉得应该是预先开发,从低版本用不了这个功能这一点就能看出来。。。
|
16
dai269619118 2016-01-28 15:27:59 +08:00
黑科技是指远超越现今人类科技或知识所能及的范畴,缺乏目前科学根据并且违反自然原理的科学技术或者产品。
lz 不要知道了一个装逼的词汇 使劲用 |
17
jayzjj000 OP @dapang1221
同感,没有进行过部分人群的定投测试功能,就直接全量推送新功能了,感觉微信这次毁坏了我心里它一直谨慎小心的形象 @yuchting 动态下发支持多版本的开发量非常大,而且微信低版本的使用率应该不是非常高,抛弃低版本应该还是比较正常的 |
18
sxyclint 2016-01-28 15:29:43 +08:00
应该是预先开发的,然后在上一个版本预埋,之后通过云指令开启,这么做出错率低。另外 JSPatch 下发临时应付也是可以的,不过也只是临时用,下个版本更新就会替换掉,微信用 JSPatch 很正常吧,作者本身就在微信工作
|
19
jayzjj000 OP |
20
qinxi 2016-01-28 15:30:30 +08:00
我也想过怎么实现来着 但是我太菜 而且是后端的...唯一想到的就是脚本语言或者预先就有的功能被暂时关闭
|
21
yiciyuansky 2016-01-28 15:36:11 +08:00
不是说好的热更新 SDK 么。。。
|
22
jayzjj000 OP @yiciyuansky
难道被我猜对了,微信内部已经开始使用热更新 SDK 了么 |
23
hekunhotmail 2016-01-28 16:33:53 +08:00 1
预先开发的,整那么多没用的
|
24
yseternal 2016-01-28 17:25:45 +08:00
然而微信的这个功能是 11 月份开发完成的
|
25
xi_lin 2016-01-28 22:49:04 +08:00
肯定不是动态更新的
|
26
cassiuschen 2016-01-28 23:58:57 +08:00
说起来, JSPatch 不是被苹果审核给封了么……检查出来有 JSPatch 的不予通过
|
27
zhongdong 2016-01-29 09:16:33 +08:00
预开发的吧 老版本看不到的
|
28
pljhonglu 2016-01-29 10:15:50 +08:00
应该是从产品到开发到测试的一次重大失误,所以才提前下线了。
图片不上 HTTPS 实在不应该。。。 |
29
jayzjj000 OP @pljhonglu
这个失误真是 666 ,感觉整个需求开发测试回归的流程都没完全跑通,就直接全量用户了,太捉急了 @cassiuschen JSPatch 应该有好些上线的应用还在用,感觉是有些应用把 JSPatch 当做核心来用,所有页面都用 H5 下发, JSPatch 来搭建 Native 和 JS 的通道,所以才被苹果干死了 @xi_lin 求理由!!到现在还没个定论,感觉大牛们没有动起来啊 |
30
xi_lin 2016-01-29 14:13:31 +08:00
@cassiuschen 实践证明并没有被封
|
31
newbieo0O 2016-01-29 15:03:47 +08:00
5 怎么是 BUG 呢,产生随机金额的啊。
|
32
hqs123 2016-01-30 09:31:02 +08:00
技术贴,收藏学习下
|
33
yiplee 2016-01-30 14:02:03 +08:00
微信用的 JSPatch , JSPatch 的作者就在微信。
|
34
xiangheka 2016-02-17 16:37:25 +08:00
如果是 react-native 完全可以热更新, jsPatch 临时改 bug 还可以,开发功能就不太好。当时没有抓包,要不然可以看看他是否有离线包更新
|