php 判断app版本更新,APP版本升级以及APP演示二

##版本升级接口开发及演示

学习要点:

1. 掌握如何封装 check 方法;

2. check 方法用于检测最新版本信息!

接口传递参数:

|||

|---|---|---|

| app_id | 客户端ID1、安卓pad |

| version_id | 版本号 |

| did | 客户端设备号 |

| version_mini | 小版本号 |

| encrypt_did | 加密后的 did 串 |

基本参数传递方式和获取方法

| 方式 | 获取 |

|---|---|

| get | $_GET |

| post | $_POST |

| header头 | $_SERVER |

$_SERVER 是一个包含了诸如头信息(header)、路径(path)、以及脚本位置(script location)等信息的数组

###**检测APP发送数据**

*模拟APP发送POST请求页面:/var/www/app/init.html*

~~~html

设备号:

版本号:

小版本号:

APP类型:

encrypt_did:

~~~

*获取POST请求数据页面:/var/www/app/init.php*

~~~php

/**

* 处理版本升级

*/

require_once('./common.php');

class Init extends Common {

public function index() {

$this->check();

}

}

$init = new Init();

$init->index();

~~~

*处理接口公共业务:/var/www/app/common.php*

~~~php

require_once('./response.php');

require_once('./db.php');

/**

* 处理接口公共业务

*/

class Common {

public $params;

public $app;

public function check() {

$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'] : '';

$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不存在');

}

// 该设备需要加密,并且对设备号did连上加密key进行加密的结果不等于encrypt_did,则没有权限

if($this->app['is_encryption'] && $encryptDid != md5($did . $this->app['key'])) {

return Response::show(403, '没有该权限');

}

}

// 获取设备信息

public function getApp($id) {

$sql = "select * from `app` where id = " . $id . " and status = 1 limit 1";

$connect = Db::getInstance()->connect();

$result = mysql_query($sql, $connect);

return mysql_fetch_assoc($result);

}

}

~~~

###**判断是否升级APP**

*common类里增加获取版本信息的方法*

```

// 获取版本信息

public function getversionUpgrade($appId) {

$sql = "select * from `version_upgrade` where app_id = " . $appId . " and status = 1 limit 1";

$connect = Db::getInstance()->connect();

$result = mysql_query($sql, $connect);

return mysql_fetch_assoc($result);

}

```

*修改init.php首页文件*

```

require_once('./common.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['version_id']) {

// 要升级

$versionUpgrade['is_upload'] = $versionUpgrade['type'];

} else {

// 不升级

$versionUpgrade['is_upload'] = 0;

}

return Response::show(200, '版本升级信息获取成功', $versionUpgrade);

} else {

return Response::show(400, '版本升级信息获取失败');

}

}

}

$init = new Init();

$init->index();

```

JS JSP ASP .NET J2AM API接口和返回的版本 目前所有版本的JS JSP ASP .NET J2AM 都是提供源代码的,对于一些脚本语言来说,直接解压缩之后就可以使用了,不需要什么安装步骤。另外一些需要编译的语言,则提供了编译用的 shell 文件(Linux/Unix 下使用)和 bat 文件(Windows 下使用),或者直接提供编译好的进制库文件。 不过为了让读者能够更清楚如何安装,我们还是对每种语言的安装都做详细的讲解,你可以在安装列表里找到你感兴趣的语言的安装方法。 示例 如果你已经把 JS JSP ASP .NET J2AM 安装好了,那么接下来就让我们开始第一个小程序吧。按照惯例,第一个演示程序几乎总是 HelloWorld,我们也不想打破这个惯例,不过对于 PHPRPC 来说,有服务器端就要有客户端,否则我们就没有什么好演示的啦,所以我们的第一个演示程序实际上是两个,一个是服务器端,另一个是客户端。我们都先用 PHP 语言来写好了。 服务器端 view plaincopy to clipboardprint? <?php include ("php/phprpc_server.php"); function HelloWorld() { return 'Hello World!'; } $server = new PHPRPC_Server(); $server->add('HelloWorld'); $server->start(); ?> 客户端 view plaincopy to clipboardprint? <?php include ("php/phprpc_client.php"); $client = new PHPRPC_Client('http://127.0.0.1/server.php'); echo $client->HelloWorld(); ?> 对于服务器端程序,我们应该将它命名为 server.php(这是因为客户端调用时用的是这个名字,而不是 PHPRPC 的什么规定),然后把它放在本地 Web 服务器的根目录下,并保证服务器可以正常运行 PHP 程序,之后在浏览器或命令行下运行客户端程序,你就可以看到结果了。 这两个程序几乎简单到无需解释的地步,所以如果你已经明白它们的意思,那么就可以直接跳过下面的解释,继续看后面的例子。 服务器端第 1 句是将 它的服务器端程序包含到你的程序里,之后的 2 - 4 句是定义一个远程调用的函数,你会发现它与本地函数没有任何区别。第 5 句是创建服务器端对象,第 6 句是添加要发布的方法,这里添加的就是刚刚定义的 HelloWorld 函数,在 PHP 中,添加的发布方法是函数名的字符串表示,在其它语言中可能略有不同。第 7 句是启动服务。 客户端就更简单了,第 1 句是将 它的客户端程序包含到你的程序里。第 2 句是创建客户端对象,其中的参数就是服务器端的地址。第 3 句是对远程方法(函数)的调用,之后通过 echo 将它显示出来。如果顺利的话,执行后你就会看到输出的 Hello World!。 上面的例子是发布的是函数,下面我们来看一下类中的静态方法如何发布: view plaincopy to clipboardprint? <?php include ("php/phprpc_server.php"); class Hello { static function HelloWorld() { return 'Hello World!'; } } $server = new PHPRPC_Server(); $server->add('HelloWorld', 'Hello'); $server->start(); ?> 这个服务器端只要它的名字与发布的地址与上面那个发布函数的例子一样的话,上面的那个客户端就可以得到同样的结果,也就是说,在客户端看来是没有任何区别的。 它并不是只可以在 PHP 中使用,它同样支持其它语言的服务器和客户端,而且还可以无差别的相互调用。 现在我们来看一下如何在 Java 中调用这个 PHP 的服务器方法: view plaincopy to clipboardprint? import org.phprpc.*; interface IHello { public String helloWorld(); } public class HelloWorld
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值