zoukankan      html  css  js  c++  java
  • 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);
        }
    }

  • 相关阅读:
    求求你规范下你的代码风格
    为啥用ip不可以访问知乎,而百度却可以?
    漫画:htts是如何保证一台主机把数据安全发给另一台主机
    如何从亿量级中判断一个数是否存在?
    广播路由算法 :我是如何优雅着把悄悄话带给其他人的
    什么?你不知道0.0.0.0和255.255.255.255这两个地址是干嘛的?
    一篇文章带你学会Linux三剑客之一:awk
    你真的了解 i++, ++i 和 i+++++i 以及 i+++i++ 吗?
    通俗易懂讲解TCP流量控制机制,了解一下
    一文读懂拥塞控制
  • 原文地址:https://www.cnblogs.com/eis13/p/5555902.html
Copyright © 2011-2022 走看看