专栏名称: java那些事
分享java开发中常用的技术,分享软件开发中各种新技术的应用方法。每天推送java技术相关或者互联网相关文章。关注“java那些事”,让自己做一个潮流的java技术人!《java程序员由笨鸟到菜鸟》系列文章火热更新中。
目录
相关文章推荐
芋道源码  ·  SpringBoot3.4.0 结构化日志详解 ·  昨天  
芋道源码  ·  MySQL数据实时同步到Elasticsea ... ·  2 天前  
芋道源码  ·  300 秒到 4 秒,如何将 MySQL ... ·  2 天前  
芋道源码  ·  SpringBoot CORS ... ·  2 天前  
51好读  ›  专栏  ›  java那些事

开发像微信这样的APP的难点和重点

java那些事  · 公众号  · Java  · 2018-06-11 16:15

正文

原文:http://www.techug.com/post/how-to-develop-weixin.html



文章有点长,但是看完肯定有巨大收获,特别是针对想从事互联网行业想开发一个自己APP的人,这是我从自己多年外包和自己开发产品累计研发成本过千万的情况下得出的经验。


先说结论

腾讯开发微信花的成本应该超过10个亿,真的技术难度很大,如果交给一个全栈工程师去做,可能要做1万年。下面详细的讲解和分析为什么成本这么高,都高在哪里。

本人之前就是做APP软件外包行业的,前后外包的APP开发上线过上百款,涉及领域从电商,教育,金融,物联网,医疗都有。去年开始转型,开始真正的开发了一款属于自己公司的互联网产品,期间真正的体验了一把给自己做产品跟做外包的巨大差别,也能足够说明为什么腾讯开发微信成本如此之高。

腾讯的微信开发成本高,大致可以分为这几种原因,以下会一一详细说明:

  1. 功能的反复修改造成成本庞大,研发的过程中可能会不断的推翻之前的想法。

  2. 不同手机不同操作系统版本号,手机型号兼容性问题调试

  3. 庞大用户基数情况下的高并发问题的处理

  4. 有些功能不是你想开发就开发(比如消息推送),还要跟第三方手机厂商洽谈才能做,简单来说可能要给第三方厂商钱。


1. 功能的反复修改造成成本庞大,研发的过程中可能会不断的推翻之前的想法。

我以前做外包公司的时候,大部分客户APP项目的开发成本都在50万以内,以二三十万之间的价格比较多,以最基本的注册登录功能为例。一般这种二三十万开发的注册登录安卓,IOS,加上后台的开发总耗时一般在2到3个工作日(3个工程师一起协同办公的情况下),包括写代码和调试bug的时间。遇到繁琐或者客户要求比较高的,可能反复改动下来总耗时一般不超过一周。

而我们真正在给自己做一个APP作为自己的互联网产品去运营的时候,我们光一个注册登录,就改了不下100次,前后总耗时保守估计超过50个工作日,花在光一个注册登录上的工程师的工资成本保守估计超过10万。

那么是什么原因造成了我们给自己做APP产品的时候,要改100次以上,前后耗时要50个工作日,同时光一个简单的注册登录工资成本要花十几万呢?

给大家简单看一下注册登录页面,说说这里面的门道。

乍一看之下我们的注册登录页面功能,支持手机短信注册登录,邮件注册登录,微信授权登录,国际短信注册,仿佛也没什么复杂的。

但是其实这里面的门道非常非常复杂,我挑几个典型事情说一下。

现在APP很流行做QQ或者微信的授权登录,因为做了授权登录后,用户可以更低成本的跳过注册流程直接使用你APP的服务,这样提高了APP用户的使用率。

但是这么做,是不是绝对的是好事呢?

这么做或许对用户来说是好事,但是对APP平台方来说不一定是什么好事。这么做会导致一个很蛋疼的问题,就是你获取不到用户资料(用户的手机号),微信授权登录的时候,微信并不会把用户的手机号或者是微信号给你,只会给你一个用户的微信昵称。这个东西并不能联系到用户本人。

那么用户的手机号有多重要呢?拿到用户的手机号,可以很大程度上提高用户留存率!你们应该经常收到探探,王者荣耀,淘宝之类APP的短信,这些短信都是通过各种方式召回唤醒你这个暂时流失的老用户,或者是提醒你出了什么新功能新活动鼓励你去消费。

你只要一段时间不上线,探探就会给你发最近2小时又有几个美女小姐姐喜欢了你,让你过来看看。而王者荣耀会给你发什么诸葛亮新皮肤上线了之类的短信,召回和唤醒用户让用户去玩。

如果没有用户手机号,那就无法发送短信的,那就根本就做不到这一点。这是一种重要的提高用户活跃度和留存率的方式。

哪怕就是不为了提高用户的留存,如果用户反馈了什么问题和bug亟待解决,你也无法通过手机联系到用户去帮他解决问题。因为微信授权登陆你是什么有效的用户资料都拿不到的。

我们开始先是把微信授权登录按钮做的很大很显眼,后来就发现超过90%的用户都是用微信授权登录,不用手机号或邮箱注册。于是我们觉得这样很操蛋,不行,要想办法把微信的按钮搞的不是那么显眼。那么这个按钮到底放到哪里也很讲究,太小了用户找不到的话,可能也会导致注册率降低,很多人嫌麻烦可能就不注册了。太大了呢,就全是微信授权登录的。

那么就要不断的去尝试到底放在什么位置刚好,既希望用户通过手机号或邮箱来注册,同时希望他忽略微信。但是如果他一定要找微信又能找得到。

可能这么一个东西就够你调整五六次反复去尝试。

同时很多人可能做了微信授权登录又让用户首次的时候必须要强制绑定手机,这种机制也可能会引发用户反感,繁琐的流程可能会导致用户放弃注册或卸载APP。那么如何去设计注册登录提高注册率,每个细节都成了一个很值得琢磨和尝试的问题。

同时又比如说短信注册这块,你的APP支持不支持国际短信可能难度又差了N倍。如果你有海外用户的话,那么可能你还需要国际短信注册。同时又可能有些短信通道发送短信速度过慢,或者特定条件下无法发送出去,到达率低等。那么这时候还要设计一套机制来保证短信的发送率和到达率。

比如一般的短信通道是不接召回短信的,那么你还要有路子搞到能发召回短信的通道。以我们自己的产品为例,光短信通道就对接了3家,在不同的条件下用不同的通道来发送短信,搞这么复杂的目的是为了保证短信的发送速度和到达率以及其他的一些特殊情况。

光一个注册流程诸如此类的细节问题就不低于十几种。每种解决起来背后都要经过大量的尝试和成本。每一个文案,每一个按钮摆放的位置,颜色,都是经过大量的实验得出的结果,而不是拍脑袋得出的。

那么这么做有什么用呢?

我之前跟很多其他运营APP的公司聊过,很多人的下载到注册率只能达到70到80%,低的只有60%,我们一开始的下载和注册率也只能达到75%到80%之间。而经过一系列长期的优化,现在可以达到95%左右的下载到注册率。稳步提升了15%左右的注册率。

这意味着,如果同样的100万人下载我的APP,原来只有75到80万会注册成功去尝试我后续的APP服务,并可能长期留下来成为我的用户。而现在100万用户里会多出来15万人尝试并成为我的用户。

你说我这时间和精力花得值不值?

虽然回过头来在看,如果我们在研发的过程中想法不出现偏差,直接是像素级抄袭别人的东西那成本肯定低得多,因为不同自己思考为什么,也不存在反复推翻自己的过程。好比我原来注册登录花了十几万,那如果是有现成的抄袭的话可能2万成本就能搞定。但是你要想清楚,每个产品的特点都不是不一样的,不同APP的用户特性也决定了注册登录页面设计成什么样子才合适,别人的不一定适合你。

Ps:有兴趣的人可以研究下知乎的注册登录页面,也是暗藏玄机,任何大公司的APP产品,可以说注册登录页面几乎每年都在优化。其目的都是不断的尝试进一步提高产品的下载到注册率。你们多下载几个大公司的APP就知道了。

我们作为一个小公司,光一个注册登录都做了十几万,而一个大公司可能光琢磨一个注册登录反复修改下来成本花上百万也正常。而我们之前做外包项目呢?一个注册登录撑死跟客户收个5000块,一般两三天搞完。这些细节有成本有预算去考虑吗?

而且这还只是一个注册登录,一个用户体验称得上好的软件既要平衡用户体验又要把用户引导像你需要的程度,那就需要每个功能都反复斟酌尝试。用户体验要好这六个大字,花多少钱都不为过,所以这也就是我前面说的,大公司的APP可能每个功能都是改过几百次上千次的。

别人都说,大繁至简,但是在这里我想说一句,大简也至繁。

2.不同手机不同操作系统版本号,手机型号兼容性问题调试

微信作为一个国民级应用,在不同手机上的兼容性是做的很好的。但是这不代表这件事简单,大家肯定经常发现各类APP在手机上出现闪退,卡死,黑屏的情况。一般越是小公司做的东西越可能会这样。

IOS还好,国内光主流的安卓机型就有几百款,如果你要你的软件在每款手机上都能完美运行,不出现太多的闪退。那光把测试机型买齐就要上百万。买齐了后任何一个功能都要在不同品牌,不同操作系统版本号的手机上去测试。

又可能你的APP在华为P8上不会闪退,但是可能华为P9就会闪退,甚至可能打都打不开。也就是说不光是跨厂商,即使是同一个厂商生产的不同机型都可能会出现不同的问题。但是用户可不管你那么多,你APP如果频繁闪退,面临的必然是被卸载的结局。

还有一点很重要的要告诉大家的是,相对于买齐各类手机来测试的硬件成本来说,这个成本只是九牛一毛,真正高昂的是测试人员和你测出来后还要修复bug的程序员的工资成本。你不可能测出来bug不修吧?

一般大公司的产品,背后可能光测试人员都几十个人,每年发工资几百万甚至上千万。

小的APP开发商无法很好的做到这点,一般也就搞个十几台手机测试就了不起了,有些甚至只在自己一个人的手机上测试一下。所以也就导致了闪退频发。并不是你把功能代码写完了,就万事大吉了。各种兼容性问题如果要解决好,绝对是够你喝一壶。

3.庞大用户基数情况下的高并发问题的处理

这个问题前面的人说的都很多了,我就不说太多。简单来说同样一个功能,你1万日活和1亿日活的时候,会导致功能实现方式和成本上根本的变化。

微信在例如搜索等功能的研发成本上,并不是简单的一个付出了多少人员工资成本的问题。微信作为腾讯系的核心产品,里面用到的技术并不一定仅仅来自于微信团队自身的积累。腾讯在开发其他产品上的技术完全可以支援和嫁接过来,那么之前研发别的产品上的技术研发成本在微信里相当于是不需要走弯路了。

但是不是每个公司都有技术可以拿过来嫁接的,别人有不代表你有。

完全不可同日语。当然很多小公司一般根本不会遇到这个问题,所以也不需要考虑。

4.有些功能不是你想开发就开发(比如消息推送),还要跟第三方手机厂商洽谈才能做,简单来说可能要给第三方厂商钱。







请到「今天看啥」查看全文