PWA 接收分享需在 manifest.json 中正确配置 share_target 字段,声明 action、method 和 params,并确保 HTTPS、start_url 与 display: "standalone";页面需主动解析 GET 参数或 POST 表单数据,Chrome Android 支持图片文件分享,iOS Safari 不支持。

要让 PWA 接收其他应用分享的原始数据,核心是正确注册为系统级分享目标,并确保浏览器能将分享请求准确路由到你的页面。关键不在“调用 API”,而在声明能力 + 正确解析参数。
配置 manifest.json 声明分享目标
必须在项目根目录提供有效的 manifest.json,且包含 share_target 字段。这是系统识别你应用能否接收分享的唯一依据:
-
action:指定接收页面路径(如
/share-target),该路径需真实可访问、能响应 HTTP 请求 -
method:推荐用
GET(适合文本/链接)或POST(支持文件上传);若含files,必须为POST+enctype: multipart/form-data -
params:明确列出期望接收的字段名(如
"title": "title"),浏览器会按此映射 URL 参数或表单字段 - 确保
start_url和display: "standalone"存在,否则部分 Android 浏览器可能忽略 share_target
确保页面能被系统正确打开并解析数据
用户从其他 App 点击你的 PWA 后,浏览器会导航至 action 指定的路径,并附带参数(GET)或表单数据(POST)。你需要在该页面中主动提取:
- 对于
GET:用new URLSearchParams(location.search)解析 URL 查询参数 - 对于
POST:服务端需接收multipart/form-data,前端可通过服务端渲染或 API 接口返回结构化数据 - 不要依赖
navigator.share—— 那是用于“发送”内容的,和接收无关 - 页面加载时立即读取,避免用户刷新后丢失参数(URL 参数不会持久化)
验证注册是否生效
配置不是写完就自动可用,需逐项确认:
- manifest.json 必须通过 HTTPS 提供,且响应头含
Content-Type: application/manifest+json - HTML 中已添加
<link rel="manifest" href="/manifest.json">,路径可访问 - 在 Chrome Android 上,访问 PWA 后点击「添加到主屏幕」,再从 Chrome 地址栏分享网页,你的应用应出现在分享菜单中
- 首次出现前可能需要等待几秒或重启浏览器 —— 注册有缓存延迟,不是即时生效
处理常见原始数据类型
分享来源不同,传递的数据结构也不同,需针对性适配:
-
纯文本或链接:通常只传
text或url,title可能为空,需做空值判断 -
图片文件:仅 Chrome 支持,需
POST+files配置,服务端需解析二进制流(前端无法直接读取 File 对象) -
社交媒体 App 分享(如 Twitter、Telegram):常只传
url,text可能被截断或忽略,不能假设三项全有 - Android 和 iOS 行为不一致:iOS Safari 目前不支持 Web Share Target,仅限 Chrome / Edge on Android

















