易怀源

导航

PHP开发APP接口(九)

APP版本升级

版本升级分析以及数据表分析
版本升级接口开发

本节课:
掌握版本升级分析
学会设计版本升级数据表

Web升级:只需要把最新的代码直接放到服务器替换源代码
APP版本升级:
流程===》
开启APP:
请求初始化接口init.php
->
打开app
->
监测是否更新
->
是就更新,更新之后回到首页
->
否直接回到首页


初始化接口参数
app_id    客户端id1、安卓pas。设备号,是何种设备
version_id     版本号

/**
 *version_upgrade 版本升级信息表
 */

CREATE TABLE `version_upgrade` (
    `id` smallint(4) unsigned NOT NULL AUTO_INCREMENT,
    `app_id` smallint(4) unsigned NOT NULL DEFAULT '0' COMMENT '客户端设备id 1安装pad',
    `version_id` smallint(4) unsigned NOT NULL DEFAULT '0' COMMENT '大版本号',
    `version_mini` mediumint(8) unsigned NOT NULL DEFAULT '0' COMMENT '大小版本号',
    `version_code` varchar(10) DEFAULT NULL COMMENT '版本标识1.2',
    `type` tinyint(2) unsigned DEFAULT NULL COMMENT '是否升级:1升级 0不升级 2强制升级',
    `apk_url` varchar(255) DEFAULT NULL,
    `upgrade_point` varchar(255) DEFAULT NULL COMMENT '升级提示',
    `status` tinyint(2) DEFAULT NULL,
    `create_time` int(11) DEFAULT NULL,
    `update_time` int(11) DEFAULT NULL,
    PRIMARY KEY (`id`)
)ENGINE = InnoDB AUTO_INCREMENT = 1 DEFAULT CHARSET = utf8;

CREATE TABLE `app`(
    `id` smallint(4) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键',
    `name` varchar(10) DEFAULT NULL COMMENT 'app类型名称 如:安卓手机',
    `is_encryption` tinyint(1) NOT NULL DEFAULT '0' COMMENT '是否加密 1加密 0不加密',
    `key` varchar(20) NOT NULL DEFAULT '0' COMMENT '加密key',
    `image_size` text COMMENT '按json_encode存储',
    `status` tinyint(1) NOT NULL DEFAULT '1' COMMENT '状态 1正常 0删除',
    `create_time` int(11) NOT NULL COMMENT '创建时间',
    `update_time` int(11) NOT NULL COMMENT '更新时间',
    PRIMARY KEY (`id`)
)ENGINE = InnoDB AUTO_INCREMENT = 5 DEFAULT CHARSET = utf8;


版本升级接口开发:

掌握封装版本升级方法

首页接口开发(作业)
掌握如何开发版本升级接口
参数:app_id/version_id/did/version_mini/encrypy_did

传递方式$_GET/$_POST/$_SERVER(header头)
$_SERVER是一个包含了诸如头信息(header)、路径(path)、以及脚本位置(script locations)等信息的数组。

vim init.php
<?php
// var_dump($_SERVER);
require_once('./common.php');
require_once('./reponse.php');
class init extends Common{
    public function index(){
        //检查连接
        $this->check();

        //获取版本升级信息
        $versionUpgrade = $this->getversionUpgrade($this->app['id']);
        if($versionUpgrade){

            if($versionUpgrade['type'] && $this->params['version_id'] <$versionUpgrade['type']){
                $versionUpgrade['is_upload'] = $versionUpgrade['type']
            }else{
                $versionUpgrade['is_upload'] = 0;
            }
            return Response:show(200,'版本升级信息获取成功',$versionUpgrade);
        }else{
            Response:show(400,'版本升级信息获取失败');
        }

    }
}
?>

=================================================================
vim common.php
<?php
/**
 *处理接口公共业务
 */
require_once('./response.php');
require_once('./ndb.php');
class Common {
    public $params;
    public $app;
    public function check(){
        //客户端id
        $this->params['app_id']=$appId=isset($_POST['app_id'])?$_POST['app_id']:'';
        //版本号
        $this->params['version_id']=$versionId=isset($_POST['version_id'])?$_POST['version_id']:'';
        //小版本号
        $this->params['version_mini']=$versionMini=isset($_POST['version_mini'])?$_POST['version_mini']:'';
        //客户端设备号
        $this->params['did']=$did=isset($_POST['did'])?$_POST['did']:'';
        //加密后的did串
        $this->params['encrypt_did']=$encryptDid=isset($_POST['encrypt_did'])?$_POST['encrypt_did']:'';

        if(!is_numeric($appId) || !is_numeric($versionId)){
            return Response::show(401,'参数不合法');
        }

        //判定app是否需要加密
        $this->app = $this->getApp($appId);

        if(!$this->app) {
            return Response::show(402,'app_id不存在');
        }

        if($this->app['is_encryption'] && $encryptDid != md5($did . $this->app['key'])){
            return Response::show(403,'没有该权限');
        }

    }

    //获取app信息
    public function getApp($id){
        $sql = 'select * from app where id = '.$id.'and status = 1 limit';
        $connect = Ndb::getInstance()->connect();
        $result = mysql_query($sql,$connect);

        return mysql_fetch_assoc($result);
    }

    //获取版本升级信息
    public function getversionUpgrade($appId){
        $sql = 'select * from version_upgrade where app_id = '.$appId.'and status = 1 limit';
        $connect = Ndb::getInstance()->connect();
        $result = mysql_query($sql,$connect);

        return mysql_fetch_assoc($result);
    }
}

posted on 2016-06-03 12:46  易怀源  阅读(780)  评论(0编辑  收藏  举报