I built a PWA (Progressive Web App) to trace shortened URL back to its original URL. (You can find it here.) I don’t want to copy a URL and paste it into my app. I want to use the Android’s sharesheet to send any link in Chrome straight to my app. How do I do that?
Google provides good documentation on this. We need to add a share_target
section in manifest.json
and then declare that our PWA can act as a share target. Most of the properties in this section can be thought of as attributes on a <form>
element with the same name. For example, { "action": "/share", "method": "POST" }
is like <form action="/share" method="POST">
.
params
subsection let us change parameter names if we already have a convension of naming search parameters in GET requests or form fields in POST requests. Otherwise, we can keep them in their original names. One caveat is Android doesn’t use url
parameter so when sharing a URL it comes through the text
parameter. In my app I need to coalesce these two parameters to get the input from the user.
Is there more? Yes! Twitter makes a great PWA and we can check their manifest.json
. Here’s the beautified version of the share_target
section:
"share_target": { "action": "compose/tweet", "enctype": "multipart/form-data", "method": "POST", "params": { "title": "title", "text": "text", "url": "url", "files": [{ "name": "externalMedia", "accept": [ "image/jpeg", "image/png", "image/gif", "video/quicktime", "video/mp4"] } ] }}
It has a files
subsection under the params
section. This is part of the Web Share Target Level 2. We can accept files from sharesheet and we can assign a file to different parameter name based on MIME type or file extension. My app doesn’t need this capability but it’s good to know what’s possible.
If you like my post, you can subscribe through email or RSS/Atom. That makes sure you won’t miss my future posts.
Top comments (0)