在公司中使用 uni-app 进行移动端开发过程中涉及到检查更新功能的一些奇葩问题(主要是plus.runtime.openURL的使用)和大家进行分享一下。

文章目录

  • 1. 实现检查更新用的方法
    • 1.1 检查更新方法的改变原因
    • 1.2 关于 plus.runtime.openURL 的介绍
  • 2. 在使用中出现部分手机不兼容问题
    • 2.1 小米手机不兼容
    • 2.2 华为手机(鸿蒙系统)不兼容

1. 实现检查更新用的方法

1.1 检查更新方法的改变原因

​ 其实在一开始的功能实现中使用的是plus.downloader.createDownload,但由于没有进行过安卓插件的研究,无法实现在手机的通知栏中显示当前安装包的下载进度,而且在实际使用中出现切换当前开发的App至手机后台之后,会出现下载成功之后却不弹出安装提示的问题。

​ 为了解决这个问题,目前主要是通过plus.runtime.openURL的使用,来完成可查看进度条和不弹出安装提示的问题。

1.2 关于 plus.runtime.openURL 的介绍

详情介绍,肯定还是官网上来的更详细,下面直接上官网对应部分的截图啦,官网地址(https://www.html5plus.org/doc/zh_cn/runtime.html#plus.runtime.openURL)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-v1nfwkdr-1632993753711)(C:\Users\maogs\AppData\Roaming\Typora\typora-user-images\image-20210902185504405.png)]

2. 在使用中出现部分手机不兼容问题

plus.runtime.openURL 的使用中,主要遇到了两款手机的不兼容问题,下面讲一下解决思路

2.1 小米手机不兼容

最开始是通过 plus.runtime.openURL 方法来直接打开远端apk安装包的存放地址

// 弹出浏览器选项,选择手机上安装的其中一个浏览器进行App安装包的下载操作
plus.runtime.openURL(url);

​ 在打包进入测试流程之后,使用plus.runtime.openURL 更新app,发现小米手机出现报错“ 下载地址不可用,创建任务失败 ”,查了好多网站后发现,小米手机打开下载地址不是通过浏览器,使用的是手机系统自带的下载进行打开的。所以会对我们给定的下载地址不识别。

这个时候通过查阅H5官网上的 plus.runtime.openURL 方法的参数定义,通过使用指定下载地址的打开方式完成了小米手机的兼容。

// 使用手机上自带的浏览器进行App安装包的下载操作
plus.runtime.openURL(url, (error) => {this.showToast("更新失败," + error);
}, "com.android.browser");

2.2 华为手机(鸿蒙系统)不兼容

在实现了小米手机使用浏览器下载的不兼容问题后,对其他安卓机型进行测试都没有问题,以为没有问题时,在更新了鸿蒙系统的华为手机上发现原来的可以正常使用的下载功能不能使用了,然后检查更新使用的代码发现只在做兼容小米手机的时候做了修改。

因为两家手机厂商的使用用户占总比例较高,所以要完成两者的同时兼容

直接上代码

// 安装包下载地址(该地址属于自行设置的部分)
let url = updateInfo.url;
// 手机型号
let phoneModel = plus.device.model;
// 手机厂商
let phoneVendor = plus.device.vendor;
// 开始进行安卓更新包下载
this.showToast(ZsCommon.appName + "更新包开始下载");// 根据手机设备信息进行下载
if (phoneModel.match("mi") || phoneVendor == "Xiaomi") {// 使用手机上自带的浏览器进行App安装包的下载操作
plus.runtime.openURL(url, (error) => {this.showToast("更新失败," + error);
}, "com.android.browser");
} else {// 弹出浏览器选项,选择手机上安装的其中一个浏览器进行App安装包的下载操作
plus.runtime.openURL(url);
}

通过plus.device可以获取获取设备信息管理对象。

关于当前接口的更多信息,大家可以登录H5的官网去查看更多自己想要信息 https://www.html5plus.org/doc/zh_cn/device.html

使用uni-app实现使用浏览器下载功能时,安卓端部分机型不兼容问题(小米/华为)相关推荐

  1. 【h5】扫描二维码打开app或点击下载功能的实现

    背景: 有时候,会遇到这种需求,就是扫描二维码打开app,若是用户没有这个app则提示它跳转:或者,用户首次安装,通过扫描二维码进行跳转到应用商店,或直接下载apk.     用网页直接来调用app是 ...

  2. 解决浏览器下载文件时中文文件名乱码的问题

    解决浏览器下载文件时中文文件名乱码的问题 很多时候我们需要在后台为前端提供文件下载的功能,但是当文件名中有中文时我们不能直接将文件名返回,需要对中文的文件名进行处理后再返回. 一.文件下载contro ...

  3. 解决微信屏蔽内置浏览器下载功能

    现阶段,微信推广是传播信息速度最快的方法,见的最多的就是在海报上贴上微信二维码,让看到的人都能立刻了解到自己的产品,但是由于微信官方要维持一个绿色的环境, 因此对扫码推广有着非常苛刻的审查, 虽然没有 ...

  4. 怎么解决微信屏蔽内置浏览器下载功能

    做微信营销活动或者APK下载推广时候,域名经常被封,如何做到微信中正常使用呢?这就要借助一些工具来实现有效的操作. 之前公司有一个新的APP项目上线,让我们在项目首页做个二维码,然后用户用手机扫一扫就 ...

  5. Java实现浏览器下载功能

    1.jsp页面 @ResponseBody @RequestMapping(value= "download") public String download(HttpServle ...

  6. ie浏览器打开aspx文件乱码_ie浏览器下载文件时文件名乱码

    做一个文件下载功能时,用ie浏览器下载时文件名乱码,火狐和谷歌正常,修改后ie显示正常,修改方法如下: @RequestMapping(value = "fileDownload" ...

  7. 浏览器下载文件时一共发送2次请求,如何把“下载次数”只记录为1次?

    最近,个人官网实现了PDF下载功能,出于统计的考虑,增加了"下载次数"download_count这个字段. 但是,我今天突然发现,每次下载download_count都直接+2了 ...

  8. 使用Mac App Store更新、下载软件时出现未知错误的解决方法

    很多果迷在使用 Mac App Store 更新/下载软件时,可能都曾被"未知错误"困扰过,怎么解决也不行.然而,过一段时间不知道做了什么又自己好了.今天我们提供两个解决这个问题的 ...

  9. 浏览器下载文件时,总是中断然后重头开始重复下载的解决办法

    1. 问题: 最近使用chrome浏览器下载较大的文件时,下载过程中总是下载一部分后又重新下载,而且一直重连下载. 搜索解决方案 比如: 下载文件过程中遇见下载一半重新下载,而且一直重连下载 说是因为 ...

最新文章

  1. python ffmpeg模块,python执行ffmpeg
  2. MongoDB update修改器: 针对Fields的$修改器 $inc $set $unset
  3. IntelliJ IDEA 18 周岁,吐血推进珍藏已久的必装插件
  4. 贝叶斯机器学习:经典模型与代码实现!
  5. poj_2739 尺取法
  6. 堆(概念,数据结构中堆与内存堆区的区别 ,堆的基本操作)
  7. sqlserver note
  8. linux服务器怎么防,Linux服务器防攻击的各种方案
  9. PostgreSQL 连接的问题
  10. python调用java完整教程
  11. Maven无法加载ojdbc14.jar的解决方法
  12. 前端 - base64原理浅析
  13. python绘图工具reportlab介绍
  14. Spring Boot中使用JUnit5进行单元测试
  15. java可以开发安卓app吗,Java开发者必看
  16. Training!!!
  17. 水清冷冷:Photoshop CC2020/ PSCC2020 安装图文教程及学习
  18. 怎么判断机械表上满弦_腕表冷知识,知道两个以上算我输!
  19. eclipse中注释快捷键
  20. 动态ip代理:Python爬虫应用,八仙过海各显神通

热门文章

  1. 01Python基础_09异常
  2. SQL中变量的赋值-select
  3. 运用Hibernate-Tools自动生成Java类和schema时,出现not found while looking for property...异常...
  4. 判断iis是否已经安装
  5. PHP文件打包类和实例
  6. 解决paramiko获取远程脚本延时返回数据的问题
  7. 解决无法使用pip命令加载Python的扩展库问题
  8. 在使用postman中操作api接口测试403解决方法
  9. Spring的quartz定时器重复执行二次的问题解决
  10. Java中为什么需要反射?反射要解决什么问题?