各位老师好,请教一个问题,在钉钉手机端,h5应用引入程序时,有个文件下载的功能,后端提供了一个下载地址,然后验证功能时,发现安卓手机会跳转到浏览器进行文件下载,但是苹果手机点击后,无法下载,一直报网络错误,大概猜测是钉钉内不支持跳转到外部浏览器,而钉钉的内置浏览器又不支持文件下载,我验证过如下三种方法:
// 第一种,验证结果 安卓正常,ios失败
const link = document.createElement('a'); ios不支持
link.href = `下载url`;
link.target = '_self';
link.download = 'download'
link.style.display = 'none'
document.body.append(link)
link.click()
// 第二种,使用钉钉内置方法downloadFile
// 这种方法后面查看钉钉官方文档 均不支持
// dd.biz.util.downloadFile({url: url,
onSuccess: function(result) {
console.log('result',result);
},
onFail: function(err) {
console.log('err',err);
}})
// 第三种 使用钉钉内置方法openLink
// 这种方法安卓可以 ios依旧不行
dd.biz.util.openLink({url: `url`})
请问各位老师 钉钉移动端是否有兼容苹果和安卓的下载方法呢 或者能让程序跳出钉钉内置浏览器 到手机默认浏览器下载的方法呢 如果我的理解或者描述有问题 也还原各位老师同行提出,谢谢!
测试页面: 点击按钮 helloworld之后 会触发上面的附件下载逻辑:
安卓测试下载结果:
ios测试测试下载结果:
简单来说,是因为:
安卓手机跳转到外部浏览器后可以正常下载文件
而iOS设备由于限制,跳转的仍是钉钉内置浏览器,而钉钉内置浏览器又不支持文件下载
所以才出现这种现象。
有几种解决方法:
在H5页面内部引入文件下载组件
比如使用a标签或者iframe方式将文件下载链接引入H5页面内,此时能 bypass iOS设备的限制,实现下载。
跳转到提供商的下载APP
如果可以,可以将用户跳转到文件提供商的APP进行下载。iOS上也能正常使用。
提交钉钉反馈,请求修复内置浏览器
由于这是钉钉内置浏览器的一个已知问题,可以提交反馈给钉钉官方,请求修复。
在后端提供下载链接,弹出原生界面
在后端提供下载链接时,可以使用安卓和iOS的原生插件,弹出原生下载界面进行下载。
综上,针对iOS设备无法下载附件的问题,推荐方案1将下载链接引入H5页面内部进行下载,或者方案2跳转到第三方DOWNLOAD APP进行下载。
当您在钉钉子应用中引入H5应用,并在iOS设备上下载附件时,遇到网络错误的问题,可能有以下几个原因和解决方法:
iOS网络权限:确保您的iOS设备允许H5应用在钉钉中访问网络。请检查并确认钉钉的网络权限已经开启。您可以在设备的"设置"中找到钉钉应用,检查是否允许其使用网络。
钉钉版本更新:检查您的钉钉应用是否是最新版本。有时旧版本的钉钉可能存在网络相关的问题。尝试升级到最新版本,以获取修复可能存在的问题的更新。
网络连接问题:如果iOS设备无法正常连接到互联网,下载附件时会报网络错误。确保您的iOS设备连接到一个可靠的网络,例如Wi-Fi或移动数据网络。如果可能,请尝试切换到其他网络连接方式,看是否能够解决问题。
服务器配置:有时候,下载附件的问题可能是由于服务器配置问题导致的。请确保H5应用所引用的附件文件在服务器上正确配置了适当的访问权限和MIME类型。
验证附件链接:检查H5应用中下载附件的链接是否正确。尝试在Web浏览器中手动访问该链接,以验证附件是否可以被正常下载。如果在浏览器中也无法下载附件,那么需要检查服务器端的设置和附件文件本身。
您好,这个问题可能是由于苹果手机的Safari浏览器的安全策略导致的。在iOS 14中,Safari浏览器默认禁止了非同源应用程序下载文件。因此,您需要在H5应用中添加一个下载链接,该链接将用户引导到Safari浏览器中进行下载 。
如果您不想让用户跳转到Safari浏览器中进行下载,您可以使用钉钉提供的biz.util.downloadFile接口来实现文件下载。这个接口可以在不打开Safari的情况下直接下载文件。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。