升级检测 - wap2app教程

wap2app项目的发行方式及对应的升级模式:

  • 发行成原生安装包,类似5+ App安装包,需开发者自己处理升级更新;
  • 发行到流应用平台,,流应用有内置的升级逻辑,开发者只需要将最新版本提交到流应用平台即可,无需单独开发.

本文主要讲解发行成原生安装包的升级检测实现,给出一种实现示例(仅供参考,开发者可以自定义逻辑实现),主要分为两个部分:

  • 客户端:App启动时,向服务器上报当前版本号,根据服务器响应结果决定是否提醒用户升级
  • 服务端:保存App最新版本号,根据客户端上报的版本号,比对后决定是否需要升级,若需升级则返回升级信息(rease notes、更新包地址等);

接口约定

如下数据接口约定仅为示例,开发者可以自定义接口参数。

请求地址:http://www.example.com/check/update

请求方法:GET

请求数据:

  1. {
  2. "appid": plus.runtime.appid,
  3. "version": plus.runtime.version
  4. }

响应数据:

  1. {
  2. "status":1,//升级标志,1:需要升级;0:无需升级
  3. "title":"wap2app版本更新",
  4. "note":"修复bug1;\n修复bug2;",//release notes
  5. "url":"http://www.example.com/wap2app.apk"//更新包下载地址
  6. }

Tips:若应用已经是最新版本,无需升级,则服务端仅需返回status字段(并将值设为0),其它字段无需返回;

客户端实现

在app.js的onLaunch事件中,发起升级检测请求,如下:

  1. /**
  2. * 当wap2app初始化完成时,会触发 onLaunch(全局只触发一次)
  3. * @param {Object} options
  4. */
  5. onLaunch:function(options){
  6. //TODO wap2app其它初始化代码
  7. /************升级检测代码开始********** */
  8. var ua = navigator.userAgent;
  9. //Html5Plus环境,但不是流应用环境
  10. if(ua.indexOf('Html5Plus')>-1&& ua.indexOf('StreamApp')==-1){
  11. var url ="http://www.example.com/check/update";//检查更新地址
  12. var req ={//升级检测数据
  13. "appid": plus.runtime.appid,
  14. "version": plus.runtime.version
  15. };
  16. wap2app.ajax.get(url, req,function(rsp){
  17. if(rsp && rsp.status){
  18. //需要更新,提示用户
  19. plus.nativeUI.confirm(rsp.note,function(event){
  20. if(0==event.index){//用户点击了“立即更新”按钮
  21. plus.runtime.openURL(rsp.url);
  22. }
  23. }, rsp.title,["立即更新","取  消"]);
  24. }
  25. });
  26. }
  27. /************升级检测代码结束********** */
  28. }

服务端实现

开发者可以根据根据M站的开发语言,自己实现升级检测逻辑,如下是一个php示例代码:

  1. $appid = $_GET['appid'];
  2. $version = $_GET['version'];//客户端版本号
  3. $rsp = array('status'=>0);//默认返回值,不需要升级
  4. if(isset($appid)&& isset($version)){
  5. if($appid=="__W2A__m.example.com"){//校验appid
  6. //这里是示例代码,真实业务上,最新版本号及relase notes可以存储在数据库或文件中
  7. if($version !=="1.0.1"){
  8. $rsp['status']=1;
  9. $rsp['title']="应用更新";
  10. $rsp['note']="修复bug1;\n修复bug2;";//release notes,支持换行
  11. $rsp['url']="http://www.example.com/wap2app.apk";//应用升级包下载地址
  12. }
  13. }
  14. }
  15. exit(json_encode($rsp));