upApp.js 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143
  1. import confige from '@/config/app.js'
  2. import {getAppVersion} from '@/api/api.js'
  3. const getIosUpAppUrl = 'https://itunes.apple.com/cn/lookup?id=6476127203'
  4. const iosAppStroeUrl =
  5. 'https://apps.apple.com/cn/app/%E7%A5%9E%E8%8B%B1%E4%BC%98%E9%80%89/id6476127203';
  6. // 获取app是否需要升级
  7. export function getUpApp () {
  8. // 获取当前运行系统
  9. let hj = uni.getSystemInfoSync().platform;
  10. // 获取仓库app数据对象
  11. if (hj === 'ios') {
  12. uni.request({
  13. url: getIosUpAppUrl,
  14. method: 'POST',
  15. data: {},
  16. success: res => {
  17. console.log(res)
  18. let r = res.data;
  19. isUp(r, hj)
  20. },
  21. fail: res => {
  22. // store.commit('changeState', true);
  23. console.log(res, 'shib');
  24. }
  25. });
  26. // 设置显示数据
  27. return
  28. }
  29. // 当前系统为安卓则显示数据
  30. if (hj === 'android') {
  31. getAppVersion().then((res)=>{
  32. let r = res.data;
  33. isUp(r, hj)
  34. }).catch((res)=>{
  35. console.log(res);
  36. })
  37. }
  38. }
  39. function isUp(r, hj) {
  40. plus.runtime.getProperty(plus.runtime.appid, function(wgtinfo) {
  41. let version = '';
  42. let arr = '';
  43. if (hj == "android") {
  44. // 保存线上版本号
  45. version =r.version;
  46. // store.commit('setappversion', r.version);
  47. // 获取线上版本
  48. arr = r.version.split('.');
  49. }
  50. if (hj == "ios") {
  51. // 保存线上版本号
  52. version = r.results[0].version;
  53. // store.commit('setappversion', version);
  54. // 获取线上版本
  55. arr = r.results[0].version.split('.');
  56. }
  57. // 获取当前系统
  58. const arr1 = wgtinfo.version.split('.');
  59. for (let i = 0; i < arr.length; i++) {
  60. // 线上版本号
  61. const x = +arr[i];
  62. // 本地版本号
  63. const y = +arr1[i];
  64. // 判断线上版本是否小于本地版本
  65. console.log(x, y, '数据');
  66. if (x < y) {
  67. console.log('数据隐藏');
  68. // 设置显示数据
  69. store.commit('changeState', false);
  70. return
  71. }
  72. // 判断线上版本是否大于本地版本
  73. else if (x > y) {
  74. uni.showModal({
  75. title: '提示',
  76. content: '请更新应用',
  77. showCancel: false,
  78. success(e) {
  79. if (hj == "android") {
  80. downApp(r.apk);
  81. }
  82. if (hj == "ios") {
  83. plus.runtime.openURL(
  84. iosAppStroeUrl
  85. );
  86. }
  87. }
  88. });
  89. return
  90. }
  91. // 判断是否本地版本等于线上版本
  92. else if (x == y && i == arr.length - 1) {
  93. store.commit('changeState', true);
  94. return
  95. }
  96. }
  97. });
  98. }
  99. // 下载app
  100. export function downApp (version) {
  101. let url = '';
  102. if(version.indexOf('http')>-1){
  103. url = version;
  104. }else{
  105. url = confige.HTTP_REQUEST_URL+version
  106. }
  107. console.log(url);
  108. plus.nativeUI.showWaiting('下载升级包...');
  109. plus.downloader
  110. .createDownload(url, {}, (d, status) => {
  111. if (status == 200) {
  112. installApp(d.filename); // 安装app
  113. } else {
  114. plus.nativeUI.alert('下载升级包失败!');
  115. }
  116. plus.nativeUI.closeWaiting();
  117. })
  118. .start();
  119. }
  120. // 安装app
  121. export function installApp (path) {
  122. plus.nativeUI.showWaiting('安装升级包...');
  123. plus.runtime.install(
  124. path, {},
  125. function() {
  126. plus.nativeUI.closeWaiting();
  127. uni.showToast({
  128. icon: 'none',
  129. title: '升级完成,准备重新载入'
  130. });
  131. setTimeout(_ => {
  132. uni.hideToast();
  133. plus.runtime.restart();
  134. }, 1000);
  135. },
  136. function(e) {
  137. plus.nativeUI.closeWaiting();
  138. plus.nativeUI.alert('安装升级包失败[' + e.code + ']:' + e.message);
  139. }
  140. );
  141. }