正文
3. 热修复技术:线上严重故障的救命稻草!
这个技术主要是解决应用上线之后,在主干流程上发现严重BUG,例如闪退或者数据加载出错等问题。以前遇到的这样的问题,就只能紧急修复并发版,一面安排运营安抚用户,另一面祈祷各大市场赶快帮忙通过审核,相当的狼狈。现在有了热修复技术,可以通过在应用启动的时候,从网上下载一段代码到本地,替换掉本地有问题的代码,从而达到无需发版就能修复严重BUG的效果,有效的保证产品的稳定性。
推荐几个常用的热修复解决方案:
1. iOS平台下阿Bang同学的JSPatch相当的靠谱,微信都在用。
2. Android平台下阿里维护的AndFix也是个不错的选择。
4. Andriod的兼容与适配
Android开发最繁琐地方,莫过于适配各种屏幕尺寸和兼容各种厂商修改过的系统了。建议上线前优先适配主流机型,上线后重点适配你应用的用户使用最多的机型,并结合前面提到的闪退收集和热修复技术,保证应用的稳定性。
5. iOS的内测分发与审核
iOS应用做有一定规模的内测分发是一件挺麻烦的事情,如果你用的是99美元的开发者账户,就只能通过一个个的添加测试用户手机的UDID,才能进行呢测。更好的办法是申请一个299美元的企业开发者账号,使用这个账号的证书打包的应用可以自由分发,再结合一些分发平台(fir.im或者蒲公英等),可以非常方便进行千人规模的内测,获得更多的用户反馈。
但是,申请企业开发者账号是需要提供企业的邓白氏编码才能申请,然而由于国内很多第三方苹果市场对企业开发者账号的滥用(所谓的免越狱安装应用,就是靠使用企业开发者账号打包实现的),导致苹果对大陆地区企业账号审核的越来越严格,一度淘宝上一个企业开发者账号都炒到了10W+,所以有一定规模内测需求的项目,初期就开始申请企业开发者账号吧,因为一般需要一两个月才能搞定。
6. 客户端和服务端都可以做的功能,大多数情况下建议在服务端实现
项目推进的过程中,经常会遇到有些功能客户端也可以做,服务端也可以做的情况,这种情况下,大多数时候建议在服务端实现,这样有两个好处:
1. 核心逻辑只在服务端实现一次,不用在两个客户端平台都开发一遍,节省开发时间。
2. 如果有BUG,可以在服务端即时修改,而不需要重新发版。
举个例子,查看附近的人列表里,每条记录都有个距离的数值,这个距离在客户端计算也行,在服务端计算也行,但是在服务端计算并将结果直接返回给客户端可以保证数据的一致性,一方面减少由于客户端选用的GIS库不同,导致iOS算出来是1.81km,Andorid算出来是1.82km的诡异情况;另一方面如果计算出错,只要在服务器调整距离的算法,客户端自动就可以正确显示了。
二、微信&HTML5 开发常识
1. 微信授权登录
微信提供的应用授权登录作为目前最流行的第三方登录方式,基本已经成为应用的标配了,而相应的微信服务号提供的Web授权登录,也已经成为微信HTML5应用获取用户信息的利器,但是这里有一个坑,就是默认情况下,应用授权登录的返回的用户唯一标识(即OpenID)与Web授权登录
返回的OpenID不一致,哪怕是同样的应用名称也是如此。解决办法
是将你的服务号绑定到微信开放平台下,这样两种授权的返回信息中,会多一个统一的
UnionID字断,用做用户的唯一标识。但是
UnionID
不能用于发送消息模版的需求,所以最终每个微信授权的用户,需要同时保存
OpenID和
UnionID,才能顺利的完成打通和后续的业务处理。
另外微信的授权登录有两个模式,基础授权和高级授权。前者的好处是用户无感知,但是只返回
OpenID和UnionID;后者需要额外跳转一次页面进行授权,但是能拿到包括昵称、性别、城市等在内的完整的用户信息。这里有一个优化的技巧是当用户登录的时候,先使用基础授权登录的方式获取用用户的
OpenID和UnionID,然后在你的用户信息中查询,如果该用户存在,则直接完成登录;
如
果该用户不存在,再跳转到高级授权登录,获取完整的用户信息并保存,这样这个用户再下次登录的时候,就不需要使用高级授权登录了,直接通过
基础授权即可无跳转的完成登录。
2. 防欺诈提示