Appバージョンアップグレードスキーム
13668 ワード
参照先:Appバージョンアップグレードスキーム
シナリオ1:バックエンド処理ロジック-app/ipadアップグレードをデジタルバージョン番号で判断
入力パラメータ:
appid app応用タイプ:1.A商城android app、2.A商城android ipad、3.A商城ios appcur_version現在のappバージョンの数値番号、例えば99、必須
応答jsonパラメータ:
dataの下のフィールドは次のとおりです.
jsonの例:
サービス側の判断ロジック:
テーブル構造:
シナリオ2:バックエンド処理ロジック-androidとios app/ipadのアップグレードを考慮し、最新のオンラインバージョンの前のバージョンのアップグレードポリシーのみを入力
入力パラメータ:
応答jsonパラメータ:
dataフィールドが空でない場合:
状況1-dataが空の場合、クライアントはアップグレードする必要はありません.
ケース2-対応するバージョンのアップグレードポリシーがあります.
サービス側の判断ロジック:
テーブル構造:
シナリオ3-最新バージョンの情報をダウンロードし、クライアントがアップグレードするかどうかと論理的に強化するかどうかを判断する
入力パラメータ:
応答jsonパラメータ:
状況1-dataが空の場合、クライアントはアップグレードする必要はありません:{「code」:0、「msg」:「」、「data」:{}}
ケース2-最新バージョン情報:
クエリーレコード
クライアント判定ロジック:
update_typeテーブルのアップグレード方式、0はアップグレードしないで、1はオプションでアップグレードして、2は強制的にアップグレードしますデフォルトupdate_type = 0 cur_version < last_バージョン、update_type = 1 cur_version < min_バージョン、update_type = 2
テーブル構造
方案四:サーバー側の判断
入力パラメータ:
appid app応用タイプ:1.A商城、2.B商城、必須app_type端末タイプ,1.android app,2.andorid ipad,3.ios app ,4.ios ipad、cur_が必要ですバージョンクライアントの現在のappバージョン、例えば1.0.1,v 1.0.1、必須
応答jsonパラメータ:
dataフィールドが空でない場合:
応答例2:
サービス側の判断ロジック:
テーブル構造
シナリオ1:バックエンド処理ロジック-app/ipadアップグレードをデジタルバージョン番号で判断
入力パラメータ:
appid app応用タイプ:1.A商城android app、2.A商城android ipad、3.A商城ios appcur_version現在のappバージョンの数値番号、例えば99、必須
応答jsonパラメータ:
code
msg
data
dataの下のフィールドは次のとおりです.
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 ';
シナリオ2:バックエンド処理ロジック-androidとios app/ipadのアップグレードを考慮し、最新のオンラインバージョンの前のバージョンのアップグレードポリシーのみを入力
入力パラメータ:
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パラメータ:
code
msg
data
dataフィールドが空でない場合:
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, ,
状況1-dataが空の場合、クライアントはアップグレードする必要はありません.
{
"code": 0,
"msg": "",
"data": {}
}
ケース2-対応するバージョンのアップグレードポリシーがあります.
{
"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 ';
シナリオ3-最新バージョンの情報をダウンロードし、クライアントがアップグレードするかどうかと論理的に強化するかどうかを判断する
入力パラメータ:
appid app :1.A 、2.B ,
app_type ,1.android app,2.andorid ipad,3.ios app ,
応答jsonパラメータ:
code
msg
data
状況1-dataが空の場合、クライアントはアップグレードする必要はありません:{「code」:0、「msg」:「」、「data」:{}}
ケース2-最新バージョン情報:
{
"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_が必要ですバージョンクライアントの現在のappバージョン、例えば1.0.1,v 1.0.1、必須
応答jsonパラメータ:
code
msg
data
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": { } }
応答例2:
{
"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 ';