upgrade.js 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  1. /**
  2. * @Descripttion: app下载更新
  3. * @Version: 1.0.0
  4. * @Author: lgen
  5. */
  6. // import config from '@/lgen-config.js'
  7. // const { upType=0 }=config.upgrade;
  8. class Upgrade{
  9. // 检测平台
  10. checkOs(apkUrl){
  11. uni.getSystemInfo({
  12. success:(res) => {
  13. if(res.osName=="android"){
  14. if(upType==1 && packageName){
  15. plus.runtime.openURL('market://details?id='+packageName)
  16. }else{
  17. this.downloadInstallApp(apkUrl)
  18. }
  19. }else if(osName=='ios' && appleId){
  20. // apple id 在 app conection 上传的位置可以看到 https://appstoreconnect.apple.com
  21. plus.runtime.launchApplication({
  22. action: `itms-apps://itunes.apple.com/cn/app/id${appleId}?mt=8`
  23. }, function(err) {
  24. uni.showToast({
  25. title:err.message,
  26. icon:'none'
  27. })
  28. })
  29. }
  30. }
  31. })
  32. }
  33. // 下载更新
  34. downloadInstallApp(apkUrl){
  35. const dtask = plus.downloader.createDownload(apkUrl, {}, function (d,status){
  36. // 下载完成
  37. if (status == 200){
  38. plus.runtime.install(plus.io.convertLocalFileSystemURL(d.filename),{},{},function(error){
  39. uni.showToast({
  40. title: '安装失败',
  41. icon:'none'
  42. });
  43. })
  44. }else{
  45. uni.showToast({
  46. title: '更新失败',
  47. icon:'none'
  48. });
  49. }
  50. });
  51. this.downloadProgress(dtask);
  52. }
  53. // 下载进度
  54. downloadProgress(dtask){
  55. try{
  56. dtask.start(); //开启下载任务
  57. let prg=0;
  58. let showLoading=plus.nativeUI.showWaiting('正在下载');
  59. dtask.addEventListener('statechanged',function(task,status){
  60. // 给下载任务设置监听
  61. switch(task.state){
  62. case 1:
  63. showLoading.setTitle('正在下载');
  64. break;
  65. case 2:
  66. showLoading.setTitle('已连接到服务器');
  67. break;
  68. case 3:
  69. prg=parseInt((parseFloat(task.downloadedSize)/parseFloat(task.totalSize))*100);
  70. showLoading.setTitle('正在下载'+prg+'%');
  71. break;
  72. case 4:
  73. // 下载完成
  74. plus.nativeUI.closeWaiting();
  75. break;
  76. }
  77. })
  78. }catch(e){
  79. plus.nativeUI.closeWaiting();
  80. uni.showToast({
  81. title: '更新失败',
  82. icon:'none'
  83. })
  84. }
  85. }
  86. }
  87. export default new Upgrade()