通过网络共享共享文件 api 仅在 IOS 15 上部分工作
Sharing files over webshare api only partially working on IOS 15
对于我正在构建的网络应用程序,我需要集成文件共享功能。自 IOS 15 发布以来,这终于成为可能。但是,我只让它部分工作。当我通过电子邮件或消息共享文件时,它工作正常。但是当我尝试与 whatsapp、signal 或 threema 共享时,它只会共享标题,而不是实际文件。我没有在控制台中看到任何错误或任何失败的网络请求。
const audioResponse = await fetch(sound.downloadUrl);
const fileBuffer = await audioResponse.arrayBuffer();
const fileArray = [
new File([fileBuffer], name + '.mp3', {
type: 'audio/mpeg',
lastModified: Date.now(),
}),
];
if (
window.navigator.canShare &&
window.navigator.canShare({ files: fileArray })
) {
navigator
.share({
files: fileArray,
title: name,
text: 'File share test',
})
.then(() => {
console.log('Success!');
})
.catch(console.error);
}
我找到了解决方案。问题是 navigator.share
中的标题 属性 这导致 IOS 上的某些应用认为我想共享文本而不是文件。
非常令人沮丧,因为这在其他浏览器中工作正常,但至少现在可以工作。
以下作品:
navigator
.share({
files: fileArray,
})
对于我正在构建的网络应用程序,我需要集成文件共享功能。自 IOS 15 发布以来,这终于成为可能。但是,我只让它部分工作。当我通过电子邮件或消息共享文件时,它工作正常。但是当我尝试与 whatsapp、signal 或 threema 共享时,它只会共享标题,而不是实际文件。我没有在控制台中看到任何错误或任何失败的网络请求。
const audioResponse = await fetch(sound.downloadUrl);
const fileBuffer = await audioResponse.arrayBuffer();
const fileArray = [
new File([fileBuffer], name + '.mp3', {
type: 'audio/mpeg',
lastModified: Date.now(),
}),
];
if (
window.navigator.canShare &&
window.navigator.canShare({ files: fileArray })
) {
navigator
.share({
files: fileArray,
title: name,
text: 'File share test',
})
.then(() => {
console.log('Success!');
})
.catch(console.error);
}
我找到了解决方案。问题是 navigator.share
中的标题 属性 这导致 IOS 上的某些应用认为我想共享文本而不是文件。
非常令人沮丧,因为这在其他浏览器中工作正常,但至少现在可以工作。
以下作品:
navigator
.share({
files: fileArray,
})