iOS 上 PWA 为什么不能添加到主屏幕?
我在 Safari 里打开自己的 PWA 网站,明明有 manifest.json 和 service worker,安卓手机能正常“添加到主屏幕”,但 iPhone 上完全没这个选项,试了好几次都不行,是不是 iOS 不支持?
我的 manifest.json 里已经设置了 "display": "standalone",而且页面也通过 HTTPS 访问了。是不是还要加什么特殊的 meta 标签?
{
"name": "My PWA App",
"short_name": "PWA",
"start_url": "/",
"display": "standalone",
"background_color": "#ffffff",
"theme_color": "#000000",
"icons": [{
"src": "/icon-192.png",
"sizes": "192x192",
"type": "image/png"
}]
}
另外我也加了 Apple 专用的 meta,比如 <meta name="apple-mobile-web-app-capable" content="yes">,但还是没用。难道 iOS 根本不支持标准 PWA?
第一个问题:iOS 不会自动弹提示框
和 Android Chrome 不同,iOS Safari 不会在满足条件时弹出"添加到主屏幕"的提示。你需要手动操作:
1. 打开你的 PWA 网站
2. 点 Safari 底部中间的分享按钮(那个方框带箭头的图标)
3. 往下拉,找"添加到主屏幕"选项
如果分享菜单里根本没有这个选项,那就是下面的问题了。
第二个问题:检查这几个关键点
你的 manifest 里 name 字段是 "My PWA App",但 iOS 还认一个专门的 meta 标签:
第三个问题:Apple Touch Icon
iOS 不认 manifest 里的 icons,你需要单独指定 Apple 专用的图标:
这个图标必须存在,而且尺寸要对。
第四个问题:service worker 可能没注册成功
你说你有了 service worker,但得确认它真的注册上了。在 Safari 里打开开发者工具(设置 → Safari → 高级 → 开发者工具),然后在控制台里看看有没有 service worker 相关的错误。
快速验证脚本:
总结一下排查顺序:
1. 先确认你用的是分享按钮而不是等弹窗
2. 检查有没有 apple-touch-icon,而且图标文件真的能访问
3. 检查 apple-mobile-web-app-title 和 manifest 里的 name 是否一致
4. 确认 service worker 真的注册成功了
如果这些都对还是不行,告诉我你的 iOS 版本和 Safari 版本,我帮你继续查。