Onelong

分享知识,与你一起进步......
RSS icon Home icon
  • 一些经验小结

    post by onelong / 2016-7-29 19:54 Friday [工作]
    1、Android网络使用了我修改的基于okhttp的volley,在以往的开发都是用httpclient,但是这次改了,一路过来感觉性能和效率都不错,基于队列的请求,在并发方面得到了很好的控制,也就是不容易崩溃。得益于volley的单例,在退出页面的时候及时的关闭无用的请求,在响应上体验更加好,同时也可以减轻服务器因为误操作的负担,iOS也封装了类似东西。
    2、数据传输全程加密,虽然加密算法简单粗暴,至少不是明文。所以接口都用了数字指纹检验,保证数据在传输过程中不被篡改。
    3、本地敏感数据采用AES加密,本来我修改了一套c++的加密算法,在android5上容易出现崩溃,后来因为偶尔崩溃而又没有测试手机,放弃了。c++的加密虽然也是使用AES的cbc模式,但是结合app签名+手机的硬件信息+时间随机数,进行敏感数据加密,保证每次加密密文都不一样。没有做失效控制。
    4、留下的遗憾,没有验证https,没有采用随机AES加密的方式。随机加密安全性会更高,希望下次有机会再用。
    5、客户端本地存储密码,session过时后,下次请求自动重新登录。本地存储密码是不安全的,虽然加密了,理论上应该存储token,cookie之类的东西。
    6、iOS本地敏感数据采用keychain+AES存储,我知道在还有更高级别的存储方式,但是没有使用。
    7、iOS网络采用AFN+json,后面还配置过AFN的并发数,优化性能。
    8、客户端接口都是json2json的方式,所有服务器通讯都有日志,服务器和服务器之间也有日志,方便以后排查异常。
    9、客户端本地采用bugly收集异常崩溃信息,同时作为测试发布平台。
    10、客户端提交较多的硬件信息到服务端,方便做用户统计,但是没有统计用户的行为,因为当前项目并不是大众化的产品,所以没有接入相关的统计sdk。
    11、 自动化测试,这次没有搞,原因比较简单,因为我们的key都是用中文的,Apple的自动化测试工具支持得不好,所以就放弃了。希望下次有机会去做这方面的尝试,包括自动发布方向的东西。很多人说到热更新,我还是保留了观望的态度,理论上这些都是可以尝试的,对于一个用户量一般的app,没有必要折腾,毕竟头发掉了,有时候再也长不出来了。 

    引用地址:
     

    我要评论