前天,微信发布了红包照片,反响还是挺强烈的,不过看到论坛里大多数都是在讨论果照和抓包,并没有人关注到微信这个功能具体的实现方式。今天这阵子热潮也已经过去了,不如我们就来聊聊这个功能的技术干货。
其实微信这个功能在 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 ![]() 预先开发的,整那么多没用的 |
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 还可以,开发功能就不太好。当时没有抓包,要不然可以看看他是否有离线包更新 |