参考引用:App版本升级方案php
入参数:android
appid app应用类型:1.A商城android app、2.A商城android ipad、3.A商城 ios app
cur_version 当前app版本数字号,如99,必须ios
响应json参数:sql
code msg data
data下字段以下:json
1.最新app版本数字号 :new_version,如100,必须 2.用于展现的app版本号 : app_version,如v1.0.1,必须 3.apk或app store下载url : down_url,必须 4.更新文案 : update_desc,必须 5.是否可更新 : is_update,1须要更新,0无需更新,必须 6.是否强制更新 : force_update,1强升、0无需强升,必须 7.apk大小:app_size,单位字节,必须 8.apk文件md5值:apk_md5,字符串,可选
json示例: 后端
{ "code": 0, "msg": "", "data": { "new_version": 100, "app_version": "v1.0.1", "down_url": "http://www.nfangbian.com/app.apk", "update_desc": "优化app体验", "is_update": 1, "force_update": 0, "app_size": "1000000", "apk_md5": "" } }
查询最新版本信息 SQL: select * from t_app_upgrade where appid=1 and is_delete=0 order by new_version desc limit 1; 1. 默认值is_update = 0, force_update = 0 2. 若是cur_version < new_version,则is_update = 1 3. 若是cur_version < min_version,则force_update = 1 4. 若是cur_version >= min_version,则force_update = 0 5. 若是cur_version == new_version,则is_update = 0
CREATE TABLE `t_app_upgrade` ( `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '自增ID', `appid` tinyint(4) unsigned NOT NULL DEFAULT 0 COMMENT 'app应用类型:1.A商城 android app 、2.A商城 android ipad、3.A商城 ios app', `app_name` varchar(20) NOT NULL DEFAULT '' COMMENT 'App名称,如A商城', `update_desc` varchar(155) NOT NULL DEFAULT '' COMMENT '更新文案', `app_version` varchar(20) NOT NULL DEFAULT '' COMMENT '当前app版本,用于展现的,如v1.0.1', `new_version` int(10) unsigned NOT NULL DEFAULT 0 COMMENT '数字版本号,最新版本按这个倒序排便可,例如100就表明是v1.0.1版本', `min_version` int(10) unsigned NOT NULL DEFAULT 0 COMMENT '适合最小版本号,如80', `down_url` varchar(255) NOT NULL DEFAULT '' COMMENT 'apk或者app store下载地址', `apk_size` int(10) unsigned NOT NULL DEFAULT 0 COMMENT 'apk文件大小,单位字节,对ios值为空', `apk_md5` varchar(50) NOT NULL DEFAULT '' COMMENT 'apk文件md5值,对ios值为空', `is_delete` tinyint(1) NOT NULL DEFAULT 0 COMMENT '是否删除 0-正常 1-删除', `create_time` int(10) NOT NULL DEFAULT 0 COMMENT '建立时间', `update_time` int(10) NOT NULL DEFAULT 0 COMMENT '修改时间', `delete_time` int(10) NOT NULL DEFAULT 0 COMMENT '删除时间', PRIMARY KEY (`id`) USING BTREE, UNIQUE KEY `appidversionno` (`appid`,`cur_version`) USING BTREE ) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8 ROW_FORMAT=COMPACT COMMENT='app升级信息表';
入参数:服务器
appid app应用类型:1.A商城 android app、2.A商城 ios app,3.A商城 android ipad、4.A商城 ios ipad, 必须 app_version 当前app版本号(非数字版本),如v1.0.0 或者 1.0.0,为了兼容,服务端接收到v开头的版本,自动去掉大小写的v字母,必须
响应json参数:app
code msg data
data字段不为空状况下:ide
1. 原样返回的app版本号 : app_version,如v1.0.1,必须 2. app下载url : down_url,必须 3. 更新文案 : update_desc,必须 4. 更新方式: update_type,0可选更新,1强制更新,必须 5. apk大小:app_size,单位字节,对andorid必须,对ios值为空 6. apk文件md5值:apk_md5,字符串,可选
{ "code": 0, "msg": "", "data": {} }
{ "code": 0, "msg": "", "data": { "app_version": "1.0.0", "down_url": "http://www.nfangbian.com/app.apk", "update_desc": "优化app体验", "update_type": 0, "app_size": "1000000", "apk_md5": "" } }
1. 查询指定版本的信息SQL: select * from t_app_upgrade02 where appid=1 and app_version='1.0.1' and is_delete=0 limit 1; 2. 若是没有查询到记录则不作更新,返回data为空对象 3. 若是查询到记录,则再查询 select * from t_app_upgrade02_lastinfo where appid=1 and is_lastversion=1 and is_delete=0 limit 1;同时拼接1和3返回的记录放入data对象中
CREATE TABLE `t_app_upgrade02` ( `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '自增ID', `appid` tinyint(4) unsigned NOT NULL DEFAULT 0 COMMENT 'app应用类型:1.A商城 android app、2.A商城 ios app、3.A商城 ios ipad、4.A商城 android ipad', `app_version` varchar(20) NOT NULL DEFAULT '' COMMENT '指定的app版本号,1.0.1', `update_type` int(10) unsigned NOT NULL DEFAULT 0 COMMENT '更新方式,0可选更新,1强制更新', `is_delete` tinyint(1) NOT NULL DEFAULT 0 COMMENT '是否删除 0-正常 1-删除', `create_time` int(10) NOT NULL DEFAULT 0 COMMENT '建立时间', `update_time` int(10) NOT NULL DEFAULT 0 COMMENT '修改时间', `delete_time` int(10) NOT NULL DEFAULT 0 COMMENT '删除时间', PRIMARY KEY (`id`) USING BTREE, UNIQUE KEY `appidversion` (`appid`,`app_version`) USING BTREE ) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8 ROW_FORMAT=COMPACT COMMENT='android和ios app升级表'; CREATE TABLE `t_app_upgrade02_lastinfo` ( `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '自增ID', `appid` tinyint(4) unsigned NOT NULL DEFAULT 0 COMMENT 'app应用类型:1.A商城 android app、2.A商城 ios app、3.A商城 ios ipad、4.A商城 android ipad', `last_version` varchar(20) NOT NULL DEFAULT '' COMMENT '最新app版本号,1.0.1', `is_lastversion` tinyint(4) unsigned NOT NULL DEFAULT 0 COMMENT '是否最新版本记录,0历史版本记录,1最新版本记录,对于同一个appid和last_version的is_lastversion值为1的只有一条', `app_name` varchar(20) NOT NULL DEFAULT '' COMMENT 'App名称,如商城A', `update_desc` varchar(155) NOT NULL DEFAULT '' COMMENT '最新版本的更新文案', `down_url` varchar(255) NOT NULL DEFAULT '' COMMENT '若是应用类型是android则为apk下载地址,若是应用是ios则为app store下载地址', `apk_size` int(10) unsigned NOT NULL DEFAULT 0 COMMENT 'apk文件大小,单位字节,仅对android有效', `apk_md5` varchar(50) NOT NULL DEFAULT '' COMMENT 'apk文件md5值,仅对android有效', `is_delete` tinyint(1) NOT NULL DEFAULT 0 COMMENT '是否删除 0-正常 1-删除', `create_time` int(10) NOT NULL DEFAULT 0 COMMENT '建立时间', `update_time` int(10) NOT NULL DEFAULT 0 COMMENT '修改时间', `delete_time` int(10) NOT NULL DEFAULT 0 COMMENT '删除时间', PRIMARY KEY (`id`) USING BTREE, UNIQUE KEY `appidversion` (`appid`,`last_version`) USING BTREE ) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8 ROW_FORMAT=COMPACT COMMENT='android和ios app版本信息表';
入参数:优化
appid app应用类型:1.A商城、2.B商城,必须 app_type 终端类型,1.android app,2.andorid ipad,3.ios app ,必须
响应json参数:
code msg data
{ "code": 0, "msg": "", "data": { "last_version": "1.0.0", "min_version": "", "down_url": "http://www.nfangbian.com/app.apk", "update_desc": "升级文案", "update_type": 0, "app_size": "1000000", "apk_md5": "" } }
sql: select * from t_app_upgrade03_lastinfo where appid=1 and app_type=1 and is_lastversion=1 and is_delete=0 limit 1;
update_type表升级方式,0不升级,1可选升级,2强制升级
CREATE TABLE `t_app_upgrade03_lastinfo` ( `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '自增ID', `appid` tinyint(4) unsigned NOT NULL DEFAULT 0 COMMENT 'app应用类型:1.A商城、2.B商城、3.C商城', `app_type` tinyint(4) unsigned DEFAULT 0 COMMENT '终端类型,1.app,2.ipad', `last_version` varchar(20) NOT NULL DEFAULT '' COMMENT '最新app版本号,1.0.1', `is_lastversion` tinyint(4) unsigned NOT NULL DEFAULT 0 COMMENT '是否最新版本记录,0历史版本记录,1最新版本记录,对于同一个appid和last_version的is_lastversion值为1的只有一条', `min_version` varchar(20) NOT NULL DEFAULT '' COMMENT 'App客户端版本小于这个版本则强升', `app_name` varchar(20) NOT NULL DEFAULT '' COMMENT 'App名称,如A商城', `update_desc` varchar(155) NOT NULL DEFAULT '' COMMENT '最新版本的更新文案', `down_url` varchar(255) NOT NULL DEFAULT '' COMMENT '若是应用类型是android则为apk下载地址,若是应用是ios则为app store下载地址', `apk_size` int(10) unsigned NOT NULL DEFAULT 0 COMMENT 'apk文件大小,单位字节,仅对android有效', `apk_md5` varchar(50) NOT NULL DEFAULT '' COMMENT 'apk文件md5值,仅对android有效', `is_delete` tinyint(1) NOT NULL DEFAULT 0 COMMENT '是否删除 0-正常 1-删除', `create_time` int(10) NOT NULL DEFAULT 0 COMMENT '建立时间', `update_time` int(10) NOT NULL DEFAULT 0 COMMENT '修改时间', `delete_time` int(10) NOT NULL DEFAULT 0 COMMENT '删除时间', PRIMARY KEY (`id`) USING BTREE, UNIQUE KEY `appidversion` (`appid`,`last_version`,`app_type`) USING BTREE ) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8 ROW_FORMAT=COMPACT COMMENT='android和ios app最新版本信息表';
入参数:
appid app应用类型:1.A商城、2.B商城,必须
app_type 终端类型,1.android app,2.andorid ipad,3.ios app ,4.ios ipad,必须
cur_version 客户端当前app版本,如1.0.1,v1.0.1,必须
响应json参数:
code msg data
1. 升级方式: update_type,0无需更新,1可选更新,2强制更新,必须 2. 最新app版本号 : app_version,如1.0.1,必须 3. app下载url : down_url,android是apk地址,ios是appstore地址,必须 4. 更新文案 : update_desc,必须 5. apk大小:app_size,单位字节,对andorid必须,对ios值为空 6. apk文件md5值:apk_md5,字符串,可选 状况1-客户端兼容一下,若是data为空则客户端无需升级:{ "code": 0, "msg": "","data": { } }
{ "code": 0, "msg": "", "data": { "update_type": 0, "app_version": "1.0.0", "down_url": "http://www.nfangbian.com/app.apk", "update_desc": "优化app体验", "app_size": "1000000", "apk_md5": "" } }
1. 把接收的app版本换算成权重,$cur_version = '1.0.1'; $last_versionno=versionToWeight($cur_version);//100000001 //只支持三段式、四段式的,每段最多4位 function versionToWeight($version) { $tmp = explode(".", $version); switch(count($tmp)) { case 1: $number = $tmp[0]; break; case 2: $number = $tmp[0]*10000+$tmp[1]; break; case 3: $number = $tmp[0]*100000000+$tmp[1]*10000+$tmp[2]; break; case 4: $number = $tmp[0]*1000000000000 + $tmp[1]*100000000+$tmp[2]*10000+$tmp[3];; //不支持 break; default: $number = 0; //不支持 break; } return $number; } 2. 查询最新版本记录: select * from t_app_upgrade04 where appid=1 and app_type=1 and is_delete=0 order by last_versionno desc limit 1; 3. update_type表升级方式,0不升级,1可选升级,2强制升级 默认值update_type = 0 若是cur_version版本在强升白名单内(在php中配置),则update_type = 2 若是cur_version < last_version,则update_type = 1 若是cur_version < min_version,则update_type = 2
CREATE TABLE `t_app_upgrade04` ( `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '自增ID', `appid` tinyint(4) unsigned NOT NULL DEFAULT 0 COMMENT 'app应用类型:1.A商城、2.B商城、3.C商城', `app_type` tinyint(4) unsigned DEFAULT 0 COMMENT '终端类型,1.android app,2.andorid ipad,3.ios app ', `last_version` varchar(20) NOT NULL DEFAULT '' COMMENT '最新app版本号,1.0.1', `last_versionno` bigint(20) NOT NULL DEFAULT 0 COMMENT '最新app版本号,1.0.1对应的权重值,值越大的为最新版本', `min_version` varchar(20) NOT NULL DEFAULT '' COMMENT 'App客户端版本小于这个版本则强升', `app_name` varchar(20) NOT NULL DEFAULT '' COMMENT 'App名称,如A商城', `update_desc` varchar(155) NOT NULL DEFAULT '' COMMENT '最新版本的更新文案', `down_url` varchar(255) NOT NULL DEFAULT '' COMMENT '若是应用类型是android则为apk下载地址,若是应用是ios则为app store下载地址', `apk_size` int(10) unsigned NOT NULL DEFAULT 0 COMMENT 'apk文件大小,单位字节,仅对android有效', `apk_md5` varchar(50) NOT NULL DEFAULT '' COMMENT 'apk文件md5值,仅对android有效', `is_delete` tinyint(1) NOT NULL DEFAULT 0 COMMENT '是否删除 0-正常 1-删除', `create_time` int(10) NOT NULL DEFAULT 0 COMMENT '建立时间', `update_time` int(10) NOT NULL DEFAULT 0 COMMENT '修改时间', `delete_time` int(10) NOT NULL DEFAULT 0 COMMENT '删除时间', PRIMARY KEY (`id`) USING BTREE, UNIQUE KEY `appidversion` (`appid`,`app_type`,`last_version`) USING BTREE ) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8 ROW_FORMAT=COMPACT COMMENT='app版本升级信息表';