PWA在iOS上standalone模式为啥不生效?

ლ景景 阅读 20

我做了一个PWA应用,安卓上加到桌面后能正常以standalone模式全屏打开,但iOS Safari加到主屏幕后还是带浏览器地址栏。我已经在manifest.json里设置了"display": "standalone",也加了apple相关的meta标签,比如apple-mobile-web-app-capable,但就是没效果。

这是我的关键配置:

{
  "name": "My App",
  "display": "standalone",
  "start_url": "/",
  "scope": "/"
}

还有HTML里的meta:

<meta name="apple-mobile-web-app-capable" content="yes">
<meta name="apple-mobile-web-app-status-bar-style" content="default">

iOS 16.4测试的,到底还缺啥?是不是现在iOS对PWA限制更严了?

我来解答 赞 1 收藏
二维码
手机扫码查看
1 条解答
UI恩宇
UI恩宇 Lv1
iOS 16.4以后,PWA必须同时满足三个条件才能standalone:HTTPS、注册Service Worker、manifest正确链接。你配置里没提Service Worker,这个是必须的,没有SW iOS就不认这是PWA。

检查这几项:

第一,确保页面通过HTTPS访问,本地调试localhost也算。

第二,必须注册Service Worker,随便注册个空的都行:
if ('serviceWorker' in navigator) {
navigator.serviceWorker.register('/sw.js');
}


第三,HTML里要有manifest链接:
<link rel="manifest" href="/manifest.json">


第四,加个apple-touch-icon,iOS加桌面时需要:
<link rel="apple-touch-icon" href="/icon-192.png">


改完之后要把原来主屏幕的图标删掉重新加,iOS会缓存之前的配置。我之前也踩过这个坑,折腾半天发现是没注册SW,苹果这玩意儿确实比安卓严格多了。
点赞 3
2026-02-28 19:14