參考引用: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版本升級信息表';