upApp.js 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130
  1. import store from '../store'
  2. import {getAppVersion} from '@/api/index.js'
  3. const iosAppStroeUrl =
  4. 'https://apps.apple.com/cn/app/%E6%BB%A1%E5%9B%AD%E6%98%A5%E7%BA%BF%E4%B8%8A%E5%95%86%E5%9F%8E/id1524593346';
  5. // 获取app是否需要升级
  6. export function getUpApp () {
  7. // 获取当前运行系统
  8. let hj = uni.getSystemInfoSync().platform;
  9. // 获取仓库app数据对象
  10. // let app = store.state.isShowIllegality;
  11. // 当前系统为安卓则显示数据
  12. if (hj === 'android') {
  13. // 设置默认显示数据
  14. // app = true;
  15. // store.commit('changeState', {
  16. // name: 'app',
  17. // value: app
  18. // });
  19. }
  20. console.log('开始升级');
  21. getAppVersion().then((res)=>{
  22. console.log(res,'回调');
  23. let r = res.data;
  24. plus.runtime.getProperty(plus.runtime.appid, function(wgtinfo) {
  25. console.log(r.version,'获取版本');
  26. // 保存线上版本号
  27. let version = r.version;
  28. // 获取线上版本
  29. const arr = r.version.split('.');
  30. // 获取当前系统
  31. const arr1 = wgtinfo.version.split('.');
  32. console.log(version,'升级数据2');
  33. console.log(arr,'升级数据3');
  34. console.log(arr1,'升级数据4');
  35. let up = false;
  36. for (let i = 0; i < arr.length; i++) {
  37. // 线上版本号
  38. const x = +arr[i];
  39. // 线下版本号
  40. const y = +arr1[i];
  41. // 判断当前版本是否为小于等于线上版本
  42. console.log(x,y,'循环');
  43. if (x >= y) {
  44. // 只有ios才需要显示
  45. // if (hj === 'ios') {
  46. // // 设置显示数据
  47. // // app = true;
  48. // // store.commit('changeState', {
  49. // // name: 'app',
  50. // // value: app
  51. // // });
  52. // }
  53. // 当版本较低时更新数据
  54. console.log(x,y);
  55. if(up==true){
  56. return;
  57. }
  58. if (x > y) {
  59. up = true;
  60. uni.showModal({
  61. title: '提示',
  62. content: '请更新应用',
  63. showCancel: false,
  64. success(e) {
  65. // if (hj === 'ios') {
  66. // plus.runtime.openURL(
  67. // iosAppStroeUrl
  68. // );
  69. // }
  70. if (hj === 'android') {
  71. // plus.runtime.openURL('http://lxscimg.liuniu946.com/lxscV' + version + '.apk');
  72. console.log(r.apk,'下載地址');
  73. downApp(r.apk);
  74. }
  75. }
  76. });
  77. }
  78. }
  79. }
  80. });
  81. }).catch((res)=>{
  82. console.log(res);
  83. })
  84. }
  85. // 下载app
  86. export function downApp (version) {
  87. let url = '';
  88. if(version.indexOf('http')>-1){
  89. url = version;
  90. }else{
  91. url = store.state.baseURL+version
  92. }
  93. console.log(url);
  94. plus.nativeUI.showWaiting('下载升级包...');
  95. plus.downloader
  96. .createDownload(url, {}, (d, status) => {
  97. if (status == 200) {
  98. installApp(d.filename); // 安装app
  99. } else {
  100. plus.nativeUI.alert('下载升级包失败!');
  101. }
  102. plus.nativeUI.closeWaiting();
  103. })
  104. .start();
  105. }
  106. // 安装app
  107. export function installApp (path) {
  108. plus.nativeUI.showWaiting('安装升级包...');
  109. plus.runtime.install(
  110. path, {},
  111. function() {
  112. plus.nativeUI.closeWaiting();
  113. uni.showToast({
  114. icon: 'none',
  115. title: '升级完成,准备重新载入'
  116. });
  117. setTimeout(_ => {
  118. uni.hideToast();
  119. plus.runtime.restart();
  120. }, 1000);
  121. },
  122. function(e) {
  123. plus.nativeUI.closeWaiting();
  124. plus.nativeUI.alert('安装升级包失败[' + e.code + ']:' + e.message);
  125. }
  126. );
  127. }