第284章 为了省这三十秒,我连注册都给砍了!
“设备id做临时账号……技术上没问题,但这意味着展会结束后,这些用户没有绑定手机号,我们留不住他们——”
“展会上不需要留存。”
王辰打断她。
“展会只需要做一件事——让他打通那个电话。他记住了这个体验,比记住一个账号有用一万倍。”
沈初微张了张嘴,又闭上了。
她想反驳,但想了两秒发现自己反驳不了。
展会场景下,每一秒都是黄金。砍掉注册流程省下来的二三十秒,就是多一个人愿意停下来体验的二三十秒。
“我去改。”
她回到工位,打开代码编辑器,开始重写注册模块。
把手机号验证替换成设备uuid自动生成。把注册页面整个跳过。启动后直接进入主界面。
改了两个小时。编译。测试。启动即用,零输入零等待。
“过了。”
第三个问题解决。
“继续。”
沈初微重新站到“展位”前,引导王辰完成扫码、下载、安装、启动。一切顺畅。
然后到了拨号环节。
王辰在iphone上点了拨号按钮。
屏幕上的绿色拨号键被按下去,然后——
转圈。
白色的加载圆圈在屏幕中央转。
一秒。两秒。三秒。四秒。
五秒。
屏幕上什么都没有。只有一个转动的白色圆圈。
第五秒的时候,通话接通了。
阿哲那边的htc响了。
但这五秒——
沈初微看着王辰手上的iphone屏幕,心沉了下去。
“五秒白屏。”
王辰放下手机。
“展会现场,观众拿着手机按下拨号键,然后看到五秒钟的白屏转圈。”
沈初微的声音有点涩。
“他会觉得应用卡了。或者觉得是骗人的。”
“3g网络的物理握手延迟。”
阿哲从后面说。
“tcp三次握手加上p2p穿透协商,最快也要三到四秒。运营商的事,代码层面压不下去。”
“我知道压不下去。”
沈初微说。
“但观众不知道这是3g的锅。他只看到白屏。白屏等于垃圾。”
她之前设计的那套“伪回调”进度条方案浮上了脑海。
那套方案是阿哲给的——不碰底层,在应用层取过去50次连接的平均耗时生成模拟进度条。
前70%在两秒内快充,后30%跟真实握手时间做线性匹配。
“进度条方案可以用。”
沈初微快速说。
“我之前做了一版,在iphone上跑过,动画流畅。在等待连接的时候给用户看一个进度条——哪怕是假的——也比白屏转圈强一百倍。”
她把iphone上的进度条演示跑了一遍。
从拨号按钮按下的瞬间开始,一个蓝色的进度条从左往右推进。前两秒推到70%,速度流畅,给用户一种“马上就好”的心理暗示。后面的30%减速,跟随真实的握手进度缓慢推进。
整个等待过程中,用户看到的不是空白的转圈,而是一个正在稳步前进的进度条——有方向感,有确定性。
iphone上的效果很好。
然后她拿起阿哲那台htc desire,跑了同一套进度条。
进度条动了。
但不对劲。
那个蓝色的条在前进的过程中,出现了肉眼可见的抖动——不是那种平滑的推进,而是一顿一顿的,像是帧率不够。
沈初微的脸色变了。
“安卓的渲染机制跟ios不一样。”
她咬了一下嘴唇。
“iphone的core animation天然支持六十帧的平滑动画。安卓这边……htc desire用的是高通那颗老处理器,渲染性能不够,帧率掉到三十帧以下了。”
阿哲起身走过来看了一眼htc屏幕上那个抖动的进度条。
沉默了一秒。
“操。”
他回到座位前坐下来。
“调帧率这种脏活你让我来?”
“你写的底层接口,你不调谁调?”
“我写的底层接口是给通话用的,不是给你画动画用的。”
“你不帮我调这个帧率,明天安卓用户看到的就是一个抽搐的进度条。你觉得这像是一家科技公司做出来的东西?”
阿哲盯着她看了两秒。
然后他骂了一句粗话,拉过htc desire,打开调试模式。
四十分钟。
他把安卓端的进度条渲染逻辑从ui线程里抽出来,单独开了一个轻量级的绘制线程,手动控制帧率和插值算法。
沈初微重新跑了一遍。
htc屏幕上,蓝色进度条平滑推进。
没有抖动,没有卡顿。
“过了。”
第四个问题解决。
王辰在旁边一直没说话。
这时候他开口了。
“最后一个问题。”