谈一谈APP版本号问题

如题:谈一谈APP版本号问题服务器

为何要谈这个问题,周五晚上11~12点,被微信点名,说APP有错,无效的版本号,商城没法下单。
我正在准备收拾东西,周末回老家,结果看到这样问题,菊花一紧。
我擦,我刚加的版本号检查,在加版本号检查前,我还跟统计的妹妹仔细核对了近半年来全部的版本号,怎么还会有问题。
赶忙查,原来结果,看到了一个g1_2.5.5_65,在个人一再追问下说这个就是2.5.5的版本号。
而后我们来讲一说为何要加版本号检查,而后再说,为何会加出问题来,最后在讨论一下版本号规则。
题外话跟你们探讨一下version这样的参数怎么传递比较合理。微信

首先在APP发版过程当中,因为新的版本上有新的功能,有些须要和老的版本作兼容,因此很是有可能服务器端须要知道APP的版本号,
而服务器在升级服务和本身的API也必定有版本号的概念,虽然不少时候咱们可能注意不到,可是版本号这个必定是双方互相都存在的。
我就是在这样的一个情景下,咱们的新的功能要同时须要兼容新的老的APP,因此服务器须要知道全部APP的版本号,这是须要APP传给服务的参数。
同时服务器也须要在基于某个版本号好比2.8.5作版本号大小的判断。
好比说小于2.8.5的版本号,那么就是老的逻辑,而大于等于2.8.5的版本就是新的逻辑。这多是基于版本号的最简单的兼容逻辑了。ide

到这里有心的读者必定看出了说为何加个版本号也会加出问题来了,对这就是加个版本号检查也加出问题的缘由。
我在加检查前,不肯定咱们的版本号的规则,而后我找统计妹妹仔细统计了近半年的全部的版本号,获得的结果是咱们的版本号是x.x.x这样的号码,
x必定是数字,那这么看来没有问题,我就按这个规则解析比较,结果当遇到上边看到的g1_2.5.5_65这个版本号时,直接numberformatexception.
还好,咱们的处理很是之果断,在版本检查时出里任何异常,都提示用户版本太低,让用户升级。
但一样暴露出了咱们不少的问题,咱们的APP通过两年多的发版居然历来没有统一过版本号,甚至规则都没有统一过。
再次追问下去,说因为不一样的下载渠道和推送渠道,咱们会写上不一样的版本号,这个答案的结果我固然不满意。
心中可能是无奈也没有办法,因而乎推动版本号赶忙统一,至少在规则上能有一个能够统一解析的规则。
这里的一个事情作得好的就是至少咱们还有版本号,不管当时服务器使用没有使用版本号,至少APP是传了的。
须要注意的是,版本号这个东西不能随意写,也不能随意规划,这个须要统一规划,并且越快越早规划越好。post

那么这里就引出了第三个问题,版本号的规则问题,关于这个问题,我不想深刻探讨和研究。
百度“软件开发版本号规则”或者“软件开发版本号命名规范”讲的很是之详细,很是明白,很容易理解。
我想说的不管怎么样必定要指定一个本身能够统一解析的规则和规范,只要按照规则和规范必定能很好的处理版本号。
我比较推荐的使用的版本号有两种,
1是:主版本号.次版本号.修订版本号.日期版本号
2是:主版本号.次版本号.修订版本号.构建版本号
这样的一组号码,清晰明了,足够用了。网站

最后谈一谈版本号怎么传递比较合适,首先咱们不说APP,咱们作服务器端开发特别是RESTAPI时必定也遇到过说一个API的version问题,
网上不一样的人有不一样的看法,不一样的网站有不一样的实现方式,我说一下我知道的常见的几种方式:
一、在http header中传递,例如:header.set("version","2.8.5")
二、在使用url path的方式,例如:/www.xxx.com/order/v2.8.5/create
三、使用url query paramter的方式传递,例如:/www.xxx.com/order/create?v=2.8.5
四、使用form表单提交version,(这个貌似极其少见)例如:<form method="post|get" action="/order/create"><hiden name="version" value="2.8.5"/>...</form>
这个明白了以后那么APP给服务器传参,也无外乎这几种方式,具体使用哪一种中方式能够根据本身的喜爱而定。
貌似我在某一篇文章中看到说虽然使用url path的方式比较直观,有些大型的网站也在使用,可是REStful的规范说要在header中使用version才算正统。
这个就无所谓了,我感受都行,以前老大还跟我争执过这个,我说要加在url path中就是使用第二种方式,结果老大不一样意,说你这样未来要维护一堆的url,v1,v2会很麻烦。
说推荐第一种,我比较执拗的按第二种方式作了,后来另外一个同事也讨论起这事,所就按第二种方式比较好,这里老大的态度变了,说啥啥啥公司都是第二种,我们也第二种吧,
我内心那个委屈,特么,我早跟你说,你跟我还争个毛线,我作都作了,还在我伤口上撒盐。我跟老大争这些是否是未来作不了老大,悲催。
如今想一想第三种也很是棒,真的也很是不错的。url

好了今天,关于版本号讨论就说这么些吧。orm


欢迎你们评论发表意见或提出问题开发

相关文章
相关标签/搜索