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

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

文章目录

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

上一篇:gradle编译出错:Execution failed for task ':app:compileTestDebugJava'.


下一篇:在线直播系统源码,当前版本号页面呈现