给产品经理讲技术 | 如何让app市场为你的app提示更新

我是创始人李岩:很抱歉!给自己产品做个广告,点击进来看看。  

前言:前几天有位产品同学留言说想了解下安卓ios应用市场的更新检查的原理流程,这篇文章就是回应这位上帝的声音。

u=106320779,981960171&fm=21&gp=0

【相关推荐】

给产品经理讲技术丨当我们谈论动画的时候,我们在谈论什么

给产品经理讲技术丨App开发中,关于图片资源不得不知的秘密

给产品经理讲技术丨究竟什么是渲染?

给产品经理讲技术丨机器配置很好,为什么还是卡?

给产品经理讲技术 | 聊聊同步、异步和回调

给产品经理讲技术丨GitHub是什么?别想歪!

给产品经理讲技术丨大伙常见的存储设备简介

给产品经理讲技术丨分辨率越高就越清晰吗?

给产品经理讲技术丨需求如何赶不上版本发布

一早醒来,尼玛通知栏里的软件市场又提示有20个软件需要更新了,身患强迫症的我必须把这20个软件都更新了才能安心起床!

这种情况想必大家经常遇到,你有没有想过这些市场软件是如何得知手机上的软件需要更新的呢?

在安卓平台上,每一款应用对应的apk,都会对应一个版本号,这个版本号定义在源码的AndroidManifest.xml文件中,文件的位置和部分内容如下:

1

2

可以看到这个文件是用超文本标记语言(XML)格式书写的,比较易读。“package”这个属性定义了apk的包名,比如微信的包名为com.tencent.mm,那么微信的源码里,这个属性就会被这样定义“package=com.tencent.mm”。“android:versionName”属性定义了apk的版本名称,版本名称一般会直接显示给用户,所以可读性比较强,比如最新的微信6.3版本(2015年12月28日发布),这个属性为“android:versionName=6.3.8.56_re6b2553”,这个名字可以在一些市场的应用简介内看到。如图:

3

“android:versionCode”字段是我们今天的主角,它的值是一个整数,表示当前工程源码生成的apk的版本号。在安卓的世界中,有这么一个“潜规则”,包名(packageName)相同的两个安装包,版本号(versionCode)的值大的那个apk就是新版本。微信6.3版本的版本号(versionCode)对应的值为680。

好了,现在我们知道了判断两个包名相同的apk哪个是新版本的“潜规则”,当前的市场软件检查更新的流程就可以分析出来了:

第一步,市场软件会提取出用户手机上所有已安装文件的包名和对应的版本号。

第二步,通过网络协议(http等)将第一步取得的数据上报到市场软件的后台服务器。

第三步,后台服务器通过客户端上报的信息,在当前在市场上架的apk中,查找出比用户手机上已安装的apk的版本号高的相同包名apk。

第四步,服务器将第三步中查找到的apk数据通过网络协议(http等)返回给手机。

第五步,市场软件获取到服务器返回的数据后,更新提示出现了。

在IOS平台上,每个app也有一个对应的版本名,但是没有版本号的概念,不过好在IOS app的分发市场只有App Store一家(越狱的请无视),所以只要版本名与市场上对应app的版本名不同,就可以判断手机上的版本可以更新了。

现在,你知道如何让市场为你的软件提示更新了吧?

欢迎添加微信公众号:给讲技术

欢迎添加微信公众号:给产品经理讲技术

 

 

|

随意打赏

提交建议
微信扫一扫,分享给好友吧。