这是一个比较详细的教程
客户端的检测代码+服务端的php代码就可以检测了!
需要注意的是,检测更新在真机调试的情况下是没有效果的,一定要发行原生安装包 安装在手机测试才有效果
1.客户端app.js添加检测代码
/************升级检测代码开始********** */
var ua = navigator.userAgent;
//Html5Plus环境,但不是流应用环境
if(ua.indexOf('Html5Plus') > -1 && ua.indexOf('StreamApp') == -1) {
var server = "http://****.com/c***.php"; //检查更新地址
var req = { //升级检测数据
"appid": plus.runtime.appid,
"version": plus.runtime.version,
"imei": plus.device.imei,
"plus":plus.os.name
};
//注释部分是wap2app封装的post请求。示例使用get请求
wap2app.ajax.get(server, req, function(rsp) {
if(rsp && rsp.status) {
//需要更新,提示用户
plus.nativeUI.confirm(rsp.note, function(event) {
if(0 == event.index) { //用户点击了“立即更新”按钮
plus.runtime.openURL(rsp.url);
}
}, rsp.title, ["立即更新", "取 消"]);
}
});
}
/************升级检测代码结束********** */
2.可能刚接触wap2app封装的人不知道把检测代码添加到app.js里的哪个位置,那我就把我已经添加好检测代码的app.js全部代码发出来吧
App({
options: {
debug: false
},
/**
* 当wap2app初始化完成时,会触发 onLaunch
*/
onLaunch: function() {
console.log('launch');
/************升级检测代码开始********** */
var ua = navigator.userAgent;
//Html5Plus环境,但不是流应用环境
if(ua.indexOf('Html5Plus') > -1 && ua.indexOf('StreamApp') == -1) {
var server = "http://****.com/c***.php"; //检查更新地址
var req = { //升级检测数据
"appid": plus.runtime.appid,
"version": plus.runtime.version,
"imei": plus.device.imei,
"plus":plus.os.name
};
//注释部分是wap2app封装的post请求。示例使用get请求
wap2app.ajax.get(server, req, function(rsp) {
if(rsp && rsp.status) {
//需要更新,提示用户
plus.nativeUI.confirm(rsp.note, function(event) {
if(0 == event.index) { //用户点击了“立即更新”按钮
plus.runtime.openURL(rsp.url);
}
}, rsp.title, ["立即更新", "取 消"]);
}
});
}
/************升级检测代码结束********** */
},
/**
* 当wap2app启动,或从后台进入前台显示,会触发 onShow
*/
onShow: function() {
console.log('show');
},
/**
* 当wap2app从前台进入后台,会触发 onHide
*/
onHide: function() {
console.log('hide');
}
});
Page('__W2A__www.xxxx.com', { //首页扩展配置
onShow: function() {
},
onClose: function() {
}
});
3.服务端那边是一个PHP文件
官方文档那边有验证客户端appid的,被我去掉了
代码如下:
<?php
error_reporting(E_ALL^E_NOTICE^E_WARNING);
header('Content-Type:text/html;charset=utf-8');
function down(){
$appid = $_GET['appid'];
$version = $_GET['version'];
$os= $_GET['plus'];
$imei= $_GET['imei'];
$rsp = array('status' => 0);
if (isset($appid) && isset($version)) {
if($version !== "1.1"){ //最新版本号
$rsp['status'] = 1;
$rsp['title'] = "Hello 版本更新";
$rsp['note'] = "本次更新了,此为自定义内容";
if($os == 'Android'){
$rsp['url'] = "http://***.com/***.apk"; //安卓安装包地址
}else{
$rsp['url'] = "https://itunes.apple.com/cn/app/xxx"; //苹果点击更新后跳转的地址,可以是自己的网页的,也可以是苹果商店的
}}}exit(json_encode($rsp));}
$data=down($getdh);
echo $data;
4.服务端那边php文件里的【最新版本号】要大于之前安装包的版本号才会检测更新
- 要改的地方也就客户端app.js里的检测地址、服务器端PHP的版本号、安卓下载地址,苹果点击更新按钮后跳转的地址、更新弹窗提示文字。