Appバージョンアップグレードスキーム


参照先:Appバージョンアップグレードスキーム
シナリオ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は強制的にアップグレードします
  • デフォルトupdate_type = 0
  • cur_version < last_バージョン、update_type = 1
  • cur_version < min_バージョン、update_type = 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       ';