起步软件技术论坛
搜索
 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 3564|回复: 16

[结贴] 如何强制更新app,不点更新就直接退出软件

[复制链接]

97

主题

580

帖子

1359

积分

金牌会员

Rank: 6Rank: 6

积分
1359
QQ
发表于 2017-10-23 08:59:55 | 显示全部楼层 |阅读模式
引用了appVersionChecker.js,现在里面的处理方式是检测更新后弹出yesnocancel对话框,然后一系列对应处理,我如果想改成okcancel,ok的时候更新操作,cancel的时候直接退出软件,不能再继续使用,这里的退出app要怎么实现呢?网上查了一下没查到明确有用的信息,找util文件里看有个navagator.app.exitApp(),但不能直接拿来用,引用了navagator也不好使,想要退出app要具体怎么操作呢?


传说中路过

17

主题

130

帖子

274

积分

中级会员

Rank: 3Rank: 3

积分
274
QQ
发表于 2017-10-23 10:19:26 | 显示全部楼层
这个有这么难吗  点击更新的时候 你就自动用cordova 的http下载呗  取消更新 就直接退出
回复 支持 反对

使用道具 举报

17

主题

130

帖子

274

积分

中级会员

Rank: 3Rank: 3

积分
274
QQ
发表于 2017-10-23 10:20:17 | 显示全部楼层
你还要考虑到没有网络的时候 你自动检测是否更新 不久没用了 所以 没有网 不给进app 可能会是你需要 需要检测是否有网络
回复 支持 反对

使用道具 举报

发表于 2017-10-23 11:53:36 | 显示全部楼层
APP退出就是使用
navagator.app.exitApp()

不过值支持Android 

ios无法使用代码关闭APP  ,只能按home键!

你写个按钮调用 navagator.app.exitApp()  不能退出吗?

qq:1912779713
WeX5教程--WeX5下载
回复 支持 反对

使用道具 举报

97

主题

580

帖子

1359

积分

金牌会员

Rank: 6Rank: 6

积分
1359
QQ
 楼主| 发表于 2017-10-24 16:08:01 | 显示全部楼层
54huige 发表于 2017-10-23 10:19
这个有这么难吗  点击更新的时候 你就自动用cordova 的http下载呗  取消更新 就直接退出 ...

取消更新 就直接退出   这个具体是怎么实现的
传说中路过
回复 支持 反对

使用道具 举报

97

主题

580

帖子

1359

积分

金牌会员

Rank: 6Rank: 6

积分
1359
QQ
 楼主| 发表于 2017-10-24 16:09:11 | 显示全部楼层
54huige 发表于 2017-10-23 10:20
你还要考虑到没有网络的时候 你自动检测是否更新 不久没用了 所以 没有网 不给进app 可能会是你需要 需要检 ...

没网的情况可以忽略了,app本身需要成功登陆才能使用功能,如果没网是无法正常使用app的,所以更不更新没意义了,无影响
传说中路过
回复 支持 反对

使用道具 举报

97

主题

580

帖子

1359

积分

金牌会员

Rank: 6Rank: 6

积分
1359
QQ
 楼主| 发表于 2017-10-24 16:52:24 | 显示全部楼层
liangyongfei 发表于 2017-10-23 11:53
APP退出就是使用
navagator.app.exitApp()

在versionChecker.js里我添加onCancel事件的处理,在里面用了navagator.app.exitApp()没反应啊直接,点取消按钮不能退出app,就是在安卓系统手机上试的
传说中路过
回复 支持 反对

使用道具 举报

发表于 2017-10-24 17:39:34 | 显示全部楼层
本帖最后由 liangyongfei 于 2017-10-24 17:40 编辑
carbinechun 发表于 2017-10-24 16:52
在versionChecker.js里我添加onCancel事件的处理,在里面用了navagator.app.exitApp()没反应啊直接,点取 ...

本地测试!一个简单的页面!按钮点击事件中执行
navigator.app.exitApp();
就可以退出APP的!


你写错了
不是 
navagator

而是
navigator


单词拼写问题!
qq:1912779713
WeX5教程--WeX5下载
回复 支持 反对

使用道具 举报

97

主题

580

帖子

1359

积分

金牌会员

Rank: 6Rank: 6

积分
1359
QQ
 楼主| 发表于 2017-10-25 16:15:51 | 显示全部楼层
liangyongfei 发表于 2017-10-24 17:39
本地测试!一个简单的页面!按钮点击事件中执行
navigator.app.exitApp();
就可以退出APP的!

修改了还是不执行。我反复调试了N次,现在在版本更新这竟然卡住了,好无语。我整理了一下,综合说一下我在版本更新这方面的操作,希望版主指点一下。我在index页面引用并修改了system/components/justep/versionChecker/versionChecker.js文件。
引用代码:
  1. var versionChecker = require("$UI/system/components/justep/versionChecker/versionChecker");
复制代码


index页面调用方法代码:
  1. Model.prototype.modelLoad = function(event){
  2.                 versionChecker.check();
复制代码
直接在modelload事件中一上来就进行版本检查。

versionChecker.js文件修改部分按由上到下的顺序修改了几处:
1、增加onCancel的事件处理
  1.                 this.versionMsg.on('onNo', function(event) {
  2.                         // 忽略
  3.                         this.ignore();
  4.                 }, this);
  5.                 this.versionMsg.on('onCancel', function(event) {
  6.                         //取消
  7.                         this.exitApp();
  8.                 }, this);
复制代码

2、修改checkAppVersion函数的条件判断
  1.         VersionChecker.prototype.checkAppVersion = function() {
  2.                 var self = this;
  3.                 if (window.cordova && cordova.getAppVersion) {
  4.                         cordova.getAppVersion.getVersionNumber(function(currentVersion) {
  5.                                 localStorage.setItem('currentVersion',
  6.                                                 currentVersion);               
  7.                                 if (self.appInfo[self.env]
  8.                                                                 && self.versionCompare(currentVersion,
  9.                                                                                 self.appInfo[self.env].version)
  10.                                                                 //&& window.localStorage
  11.                                                                 //&& localStorage.getItem('versionIgnore') !== self.appInfo[self.env].version
  12.                                                                 ) {
  13.                                                         self.versionMsg.show({
  14.                                                                 type : "YesNoCancel",
  15.                                                                 title : "版本更新",
  16.                                                                 message : self.appInfo[self.env].changeLog
  17.                                                         });
  18.                                                 }
  19.                                         });
  20.                 }
  21.         };
复制代码
在里面把localStorage.getItem('versionIgnore') !== self.appInfo[self.env].version这个对比去掉,想达到点击忽略后再次打开软件要继续验证版本更新的效果;localStorage.setItem('currentVersion',currentVersion)将当前版本号写入本地缓存,方便后续显示使用


3、修改ignore函数,添加安卓系统退出app操作
  1.         VersionChecker.prototype.ignore = function() {
  2.                 if (window.localStorage) {
  3.                         localStorage.setItem('versionIgnore',
  4.                                         this.appInfo[this.env].version);
  5.                         if(this.env == "androidApp"){
  6.                                 navigator.app.exitApp();
  7.                         }
  8.                 }
  9.         };
复制代码


4、添加exitApp函数,对应onCancel事件,里面添加安卓系统退出app操作
  1.         VersionChecker.prototype.exitApp = function(){
  2.                 if(this.env == "androidApp"){
  3.                         navigator.app.exitApp();
  4.                 }
  5.                
  6.         };
复制代码




现在遇到的问题:
1、版本更新包放到服务器上后首次打开软件会有版本更新提示,安卓手机点取消不会退出app;
2、版本更新包放到服务器上后首次打开软件会有版本更新提示,点忽略不会退出app;
3、版本更新包放到服务器上后首次打开软件会有版本更新提示,点忽略后再次打开app不再提示版本更新;
4、在checkAppVersion函数里添加的将当前版本号写入缓存的功能未实现,后续调用localStorage.getItem('currentVersion')值为null


总体感觉是修改了versionChecker.js文件但没生效,修改代码想要达到的功能都未实现,请版主指点一下,脑子混沌了快


传说中路过
回复 支持 反对

使用道具 举报

91

主题

13万

帖子

3万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
36183
发表于 2017-10-26 11:15:04 | 显示全部楼层
x5具体用的什么版本?
远程的联系方法QQ1392416607,添加好友时,需在备注里注明其论坛名字及ID,公司等信息
发远程时同时也发一下帖子地址,方便了解要解决的问题  WeX5教程  WeX5下载



如按照该方法解决,请及时跟帖,便于版主结贴
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|X3技术论坛|Justep Inc.    

GMT+8, 2025-7-1 02:24 , Processed in 0.064139 second(s), 24 queries .

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表