• 欢迎加“百元导航”为主页,windows8风格,0.3s极速加载
  • 王柏元的博客专用搜索引擎:极客人,就用“极客搜”!
  •    3年前 (2015-04-21)  软件开发 |   2 条评论  528 
    文章评分 2 次,平均分 5.0

    学了一个月的安卓,写了几个小程序,总是觉得缺少点什么。看到一般市场上的软件都提供软件更新服务,极客人想自己也有个虚拟主机,是不是可以自己搭建一个软件更新服务器呢?百度了一下“依托虚拟主机为自制APP提供软件更新服务”,可惜找遍整个百度也没找到解决方案,所以一穷二白,自己干。

    要想实现软件更新,肯定有个服务器端发布的最新软件版本号与用户端当前使用的版本进行比对。如果版本号相同,则提示用户“当前为最新版本”;如果服务器上发布的最新版本高于用户使用的,则提示“版本更新”,并提供下载功能,下载完毕之后自动执行安装。要想获取最新版本号,必须读取数据库,如果直接用用户加密码的方式直接连接数据库的话,这无疑不安全,因为如果反编译或者破解了你的软件,你的数据库将会任人宰割。所以,我想到的解决方案是,自己在服务器端利用PHP做一个API,使用API请求的方法获取最新版本号和版本描述及下载地址。在奋斗几个星期后,下面是我的具体实现步骤:

    依托虚拟主机为自制APP提供软件更新服务(一)——使用PHP制作API

    1.新建软件数据库表,添加软件ID、版本号、下载地址、版本描述等列;

    SQL语句如下:

     

    建立的数据库表名为:mysoftware,结构如图:

    依托虚拟主机为自制APP提供软件更新服务(一)

    2.PHP调用数据库返回JSON格式字符串

    我在自己的虚拟主机根目录新建了命名为“api”文件夹,在“api”文件夹下建立两个php文件:update.php和db_connect.php。

    其中db_connect.php是连接数据库的PHP文件,里面记录了连接数据库的数据库名、用户名、主机、密码、编码格式,代码如下:

     

    你可以访问该PHP的URL测试改文件是否正确。

    update.php是返回JSON字符串的PHP文件。它的作用是调取软件数据库表内的内容,并通过GET方法返回数据。

    其代码如下:

     

    在这个文件里,通过”http://wangbaiyuan.cn/api/update.php?id=1”GET方式接受传值,然后调用了db_connect.php文件连接的数据库,执行$string = "select * from my_software where sw_id=".$id;语句,然后对结果进行解析返回标准的JSON格式字符串。其中jsons_encode函数你可以参考我之前的一篇文章:PHP用json_encode转换数组中文乱码进行理解

    下面我制作成功后访问http://wangbaiyuan.cn/api/update.php?id=1的网页内容:

    使用PHP制作的API

    {"sw_id":"1","sw_name":"BY通讯录","sw_version":"1.2","sw_url":"http://wangbaiyuan.cn/api/software/Contactss_1_2.apk","sw_description":" 1.BY通讯录,是王柏元自主开发的APP,作安卓开发入门试验之用;\n 2.调用在自己虚拟主机上的数据库搭建的API,实现了版本更新功能;\n 3.使用一些新的安卓技术。"}

    看到这段字符串你可能大脑就会兴奋了,你可能能想到下面就是根据不同平台对JSON数据进行解析的工作了

    依托虚拟主机为自制APP提供软件更新服务(二)——安卓解析API数据

    在下一节我将通过安卓示例,向大家讲解对JSON数据进行解析为自制APP提供软件更新服务,查看下一节

    代码下载

    相关下载

     

    本文已在版权印备案,受著作权法律保护,未经允许不得转载!如需转载请联系作者或访问版权印获取授权,如果你觉得这篇文章对你有用,可以点击下面的“赞助作者”打赏作者!

    转载注明原文出处:王柏元的博客>>http://wangbaiyuan.cn/virtual-hosts-provide-app-update-services-a.html

    关于
    记录生活,镌刻心路;泼洒文墨,分享技术!王柏元的博客致力于IT经验交流,并原创翻译引进外文文章,打开IT国际化视野

    发表评论

    格式
    1. 为什么不用 友盟

      zph224 评论达人 LV.1 2年前 (2015-07-07) [0] [0]
      • @zph224没用过,这个不是可以自己写一个么,反正代码比较简单,就没必要用第三方平台了

        极客人 博 主 2年前 (2015-07-07) [0] [0]

    登录

    忘记密码 ?

    您也可以使用第三方帐号快捷登录

    切换登录

    注册