upApp.js 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123
  1. import store from '../store/index.js'
  2. // iosStore地址
  3. const getUpAppUrl = 'https://itunes.apple.com/cn/lookup?id=1524593346'
  4. // 请求升级获取数据地址
  5. const iosAppStroeUrl =
  6. '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';
  7. // 下载升级地址
  8. const domAppUrl = 'http://manyuanchun.liuniu946.com/mycV';
  9. // 获取app是否需要升级
  10. export function getUpApp() {
  11. // 获取当前运行系统
  12. let hj = uni.getSystemInfoSync().platform;
  13. // 获取仓库app数据对象
  14. let app = store.state.isShowIllegality;
  15. // 当前系统为安卓则显示数据
  16. if (hj === 'android') {
  17. // 设置默认显示数据
  18. app = true;
  19. store.commit('changeState', {
  20. name: 'app',
  21. value: app
  22. });
  23. }
  24. return new Promise(function(resolve, reject) {
  25. uni.request({
  26. url: getUpAppUrl,
  27. method: 'POST',
  28. data: {},
  29. success: res => {
  30. let r = res.data;
  31. plus.runtime.getProperty(plus.runtime.appid, function(wgtinfo) {
  32. // 保存线上版本号
  33. let version = r.results[0].version;
  34. // 获取线上版本
  35. const arr = r.results[0].version.split('.');
  36. // 获取当前系统
  37. const arr1 = wgtinfo.version.split('.');
  38. for (let i = 0; i < arr.length; i++) {
  39. // 线上版本号
  40. const x = +arr[i];
  41. // 线下版本号
  42. const y = +arr1[i];
  43. // 判断当前版本是否为小于等于线上版本
  44. if (x <= y) {
  45. // 只有ios才需要显示
  46. if (hj === 'ios') {
  47. // 设置显示数据
  48. app = true;
  49. store.commit('changeState', {
  50. name: 'app',
  51. value: app
  52. });
  53. }
  54. // 当版本较低时更新数据
  55. if (x < y) {
  56. uni.showModal({
  57. title: '提示',
  58. content: '请更新应用',
  59. showCancel: false,
  60. success(e) {
  61. if (hj === 'ios') {
  62. plus.runtime.openURL(
  63. iosAppStroeUrl
  64. );
  65. }
  66. if (hj === 'android') {
  67. // 新页面打开下载
  68. plus.runtime.openURL(domAppUrl + version + '.apk');
  69. // 自动安装
  70. // downApp(version);
  71. }
  72. }
  73. });
  74. }
  75. // 返回升级成功提示
  76. resolve('upData')
  77. return;
  78. }
  79. }
  80. // 返回不需要升级提示
  81. resolve('noUp')
  82. });
  83. },
  84. });
  85. });
  86. }
  87. // 下载app
  88. export function downApp(version) {
  89. plus.nativeUI.showWaiting('下载升级包...');
  90. plus.downloader
  91. .createDownload(domAppUrl + version + '.apk', {}, (d, status) => {
  92. if (status == 200) {
  93. installApp(d.filename); // 安装app
  94. } else {
  95. plus.nativeUI.alert('下载升级包失败!');
  96. }
  97. plus.nativeUI.closeWaiting();
  98. })
  99. .start();
  100. }
  101. // 安装app
  102. export function installApp(path) {
  103. plus.nativeUI.showWaiting('安装升级包...');
  104. plus.runtime.install(
  105. path, {},
  106. function() {
  107. plus.nativeUI.closeWaiting();
  108. uni.showToast({
  109. icon: 'none',
  110. title: '升级完成,准备重新载入'
  111. });
  112. setTimeout(_ => {
  113. uni.hideToast();
  114. plus.runtime.restart();
  115. }, 1000);
  116. },
  117. function(e) {
  118. plus.nativeUI.closeWaiting();
  119. plus.nativeUI.alert('安装升级包失败[' + e.code + ']:' + e.message);
  120. }
  121. );
  122. }