方案一:后端处理逻辑 - 通过指定数字版本号判断 app/ipad升级

入参数:

appid app应用类型:1.A商城android app、2.A商城android ipad、3.A商城 ios app

cur_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升级信息表';

方案二:后端处理逻辑 - 考虑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版本信息表';

方案三-下发最新版本的信息,由客户端判断是否升级及强升逻辑

入参数:

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_version,则update_type = 1

如果cur_version < min_version,则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_version 客户端当前app版本,如1.0.1,v1.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版本升级信息表';

android app升级方案,App版本升级方案相关推荐

  1. 无懈可击 Android 内部升级

    code小生,一个专注 Android 领域的技术平台 公众号回复 Android 加入我的安卓技术群 作者:码农一颗颗 链接:https://www.jianshu.com/p/ebc5b4a3d2 ...

  2. 平板升级android版本号,App版本升级方案

    App版本升级方案小结 方案一:后端处理逻辑 - 通过指定数字版本号判断 app/ipad升级 入参数: appid app应用类型:1.A商城android app.2.A商城android ipa ...

  3. Android 系统级APP 升级方案 按键恢复出厂设置

    先敲黑板:(更多内容请关注专栏,支持原创) 概要:本文介绍内容有UBOOT BCB 系统级APP固化到固件 通过UBOOT完成按键触发恢复出厂设置,即恢复系统APP的方案 高质量文章导航 一.坐稳发车 ...

  4. flutter跨平台开发之App升级方案

    题记 -- 执剑天涯,从你的点滴积累开始,所及之处,必精益求精,即是折腾每一天. 重要消息 精通点的可以查看这里 精述 Flutter 从入门实践到开发一个APP之UI基础篇 视频 Flutter 从 ...

  5. 成品app直播源码中Android酷炫礼物动画实现方案(上篇)

    成品app直播源码中Android酷炫礼物动画实现方案(上篇) +在当下移动直播火爆的年代,如果你曾经使用过移动端直播应用,相信会被里面那令人惊叹的礼物动画效果迷住,比如像下面这样的效果. 从开发人员 ...

  6. Android APP全局黑白化实现方案

    作者:小帅 链接:https://zhuanlan.zhihu.com/p/587516253 来源:知乎 著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处. 在清明节时各大APP都 ...

  7. Android外部调起App方案

    背景 日常使用场景中经常需要从app外部唤起app,比如短信链接,浏览器页面点击按钮等.传统的方式都可以使用android系统自带的拦截url ,也就是schema方式,但这种方式在拦截生效时会弹出所 ...

  8. React Native App版本升级方案解析

    欢迎大家关注[跨平台开发那些事]公众号,定期推送跨平台开发技术实践. 源码已开源到Github,地址请点击:react-native-upgrade  欢迎大家star,fork..... App版本 ...

  9. 产品策划四:App升级系统策划方案

    没有哪一个app一个版本就可以将功能开发完全,满足用户所有的需求.而且在竞争激烈的互联网行业,和对手拼的是时间速度,用户也不会有耐心等待你长时间打磨一个产品.小步快跑,快速迭代也是移动app最流行的开 ...

最新文章

  1. 自定义checkbox,redio等
  2. OpenStack基金会的白金和黄金成员公司
  3. Zabbix的故障与恢复邮件设置
  4. Asp.Net MVC CodeFirst模式数据库迁移步骤
  5. 深入解析Windows系统两大进程
  6. Photoshop图像修饰工具
  7. 大地震!某大厂“硬核”抢人,放话:只要AI人才,高中毕业都行!
  8. 你的下一代iPhone何必是iPhone,苹果或将于2022年推出AR设备取代手机
  9. iphone11边框喇手问题_iPhone12手感如何 直角边框真的会割手吗?
  10. 计算机专业指南考试题6,计算机专业指南考试题.doc
  11. html获取视频时长,js获取本地视频时间长度
  12. 结构建模设计——Solidworks 2021SP5稳定版软件安装详细教程(安装踩坑记录全流程总结)
  13. c语言数据类型转换规律,c语言,数据类型转换
  14. Detected applied migration not resolved locally:
  15. UVC 摄像头驱动(二)描述符分析
  16. 腾讯信鸽集成华为厂商通道
  17. 深信服2008校园招聘笔试题
  18. 20个vue开源项目免费模板源码
  19. 加速度计和陀螺仪解析
  20. 访问修饰符有哪些?及作用范围

热门文章

  1. 【C#+Socker+SQL Server】实现可多人联机和对话的五子棋游戏 五:五子棋大厅窗体设计(附源码和资源)
  2. python apply函数的用法
  3. 多标签、多窗口文件管理工具 —— 百页窗
  4. IT项目管理之第4章 项目范围管理习题
  5. 手机安装python3.5_zzw_非root用户安装python3.5
  6. rust大量科技零件_并完美解决了业务瓶颈,Rust不是垃圾收集的语言
  7. 计算机存储标密文件,机关单位计算机保读密管理.doc
  8. DataGrip连接hive报错:[ 08S01] Could not open client transport with JDBC Uri: jdbc:hive2://hadoop102:1000
  9. 数据库:mysql基本增删查改
  10. Linux系统设置WiFi热点