javascriptwhatsappnavigatorweb-share

Sharing files over webshare api only partially working on IOS 15


For a webapp I'm building I need to integrate file sharing capabilities. This is now finally possible since the IOS 15 release. However, I only got it partially working. When I share the file with email or messages it works fine. But when I try to share with whatsapp, signal or threema it will only share the title, not the actual file. I don't see any errors in the console or any failed network requests.


    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);
    }

Solution

  • I've found the solution. The issue was the title property in navigator.share This lead certain Apps on IOS to believe that I wanted to share the text and not the file.

    Pretty frustrating since this works fine in other browsers but at least it's working now.

    The following works:

    navigator
            .share({
                files: fileArray,
            })