APP版本升級
版本升級分析以及數據表分析
版本升級接口開發
本節課:
掌握版本升級分析
學會設計版本升級數據表
Web升級:只須要把最新的代碼直接放到服務器替換源代碼
APP版本升級:
流程===》
開啓APP:
請求初始化接口init.php
->
打開app
->
監測是否更新
->
是就更新,更新以後回到首頁
->
否直接回到首頁
初始化接口參數
app_id 客戶端id一、安卓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,'版本升級信息獲取失敗');
}
}
}
?>php
=================================================================
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);
}
}
mysql