upApp.js 3.5 KB

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