代码之家  ›  专栏  ›  技术社区  ›  Stan Hurks

PWA显示独立不工作

  •  1
  • Stan Hurks  · 技术社区  · 6 年前

    我对pwa(progressive web applications)还不熟悉,我偶然发现了以下几点: 我似乎无法使用manifest.json文件的display属性。

    将应用程序添加到iPhone的主屏幕时,应用程序将显示在Safari浏览器中,并显示URL,而不是一个独立的应用程序。

    例如,当我转到pokedex.org并将其添加到主屏幕时,应用程序将显示为一个独立的应用程序(没有URL栏)。

    我已经尝试过使用ngrok.io在本地主机之外使用https://托管我的应用程序,但它也没有在这方面起作用。

    我试过safari上的开发人员工具来重置我iphone上的缓存,所以这绝对不是缓存问题造成的。

    谷歌浏览器中的应用程序标签称,这应该是一个独立的应用程序,并显示正确的标识/优惠。

    我正在为此测试的应用程序是使用create react app构建的。

    杰森

    {
        "short_name": "[hidden]",
        "name": "[hidden]",
        "description": "[hidden]",
        "icons": [
            {
                "src": "favicon.ico",
                "sizes": "64x64 32x32 24x24 16x16",
                "type": "image/x-icon"
            },
            {
                "src": "favicon/android-icon-36x36.png",
                "sizes": "36x36",
                "type": "image\/png",
                "density": "0.75"
            },
            {
                "src": "favicon/android-icon-48x48.png",
                "sizes": "48x48",
                "type": "image\/png",
                "density": "1.0"
            },
            {
                "src": "favicon/android-icon-72x72.png",
                "sizes": "72x72",
                "type": "image\/png",
                "density": "1.5"
            },
            {
                "src": "favicon/android-icon-96x96.png",
                "sizes": "96x96",
                "type": "image\/png",
                "density": "2.0"
            },
            {
                "src": "favicon/android-icon-144x144.png",
                "sizes": "144x144",
                "type": "image\/png",
                "density": "3.0"
            },
            {
                "src": "favicon/android-icon-192x192.png",
                "sizes": "192x192",
                "type": "image\/png",
                "density": "4.0"
            }
        ],
        "start_url": "./index.html",
        "display": "standalone",
        "orientation": "portrait",
        "theme_color": "#000000",
        "background_color": "#ffffff"
    }
    

    索引文件

    <!DOCTYPE html>
    <html lang="en">
      <head>
        <meta charset="utf-8">
        <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
        <meta name="mobile-wep-app-capable" content="yes">
        <meta name="apple-mobile-wep-app-capable" content="yes">
        <meta name="msapplication-TileColor" content="#ffffff">
        <meta name="msapplication-TileImage" content="%PUBLIC_URL%/favicon/ms-icon-144x144.png">
        <meta name="theme-color" content="#000000">
        <link rel="apple-touch-icon" sizes="57x57" href="%PUBLIC_URL%/favicon/apple-icon-57x57.png">
        <link rel="apple-touch-icon" sizes="60x60" href="%PUBLIC_URL%/favicon/apple-icon-60x60.png">
        <link rel="apple-touch-icon" sizes="72x72" href="%PUBLIC_URL%/favicon/apple-icon-72x72.png">
        <link rel="apple-touch-icon" sizes="76x76" href="%PUBLIC_URL%/favicon/apple-icon-76x76.png">
        <link rel="apple-touch-icon" sizes="114x114" href="%PUBLIC_URL%/favicon/apple-icon-114x114.png">
        <link rel="apple-touch-icon" sizes="120x120" href="%PUBLIC_URL%/favicon/apple-icon-120x120.png">
        <link rel="apple-touch-icon" sizes="144x144" href="%PUBLIC_URL%/favicon/apple-icon-144x144.png">
        <link rel="apple-touch-icon" sizes="152x152" href="%PUBLIC_URL%/favicon/apple-icon-152x152.png">
        <link rel="apple-touch-icon" sizes="180x180" href="%PUBLIC_URL%/favicon/apple-icon-180x180.png">
        <link rel="icon" type="image/png" sizes="192x192"  href="%PUBLIC_URL%/favicon/android-icon-192x192.png">
        <link rel="icon" type="image/png" sizes="32x32" href="%PUBLIC_URL%/favicon/favicon-32x32.png">
        <link rel="icon" type="image/png" sizes="96x96" href="%PUBLIC_URL%/favicon/favicon-96x96.png">
        <link rel="icon" type="image/png" sizes="16x16" href="%PUBLIC_URL%/favicon/favicon-16x16.png">
        <!--
          manifest.json provides metadata used when your web app is added to the
          homescreen on Android. See https://developers.google.com/web/fundamentals/engage-and-retain/web-app-manifest/
        -->
        <link rel="manifest" href="%PUBLIC_URL%/manifest.json">
        <link rel="shortcut icon" href="%PUBLIC_URL%/favicon.ico">
        <!--
          Notice the use of %PUBLIC_URL% in the tags above.
          It will be replaced with the URL of the `public` folder during the build.
          Only files inside the `public` folder can be referenced from the HTML.
    
          Unlike "/favicon.ico" or "favicon.ico", "%PUBLIC_URL%/favicon.ico" will
          work correctly both with client-side routing and a non-root public URL.
          Learn how to configure a non-root public URL by running `npm run build`.
        -->
        <title>[Hidden]</title>
      </head>
      <body>
        <noscript>
          You need to enable JavaScript to run this app.
        </noscript>
        <div id="root"></div>
        <!--
          This HTML file is a template.
          If you open it directly in the browser, you will see an empty page.
    
          You can add webfonts, meta tags, or analytics to this file.
          The build step will place the bundled scripts into the <body> tag.
    
          To begin the development, run `npm start` or `yarn start`.
          To create a production bundle, use `npm run build` or `yarn build`.
        -->
      </body>
    </html>
    
    2 回复  |  直到 6 年前
        1
  •  0
  •   Stan Hurks    6 年前

    问题似乎在于:

    <meta name="mobile-wep-app-capable" content="yes">
    <meta name="apple-mobile-wep-app-capable" content="yes">
    

    Web应用程序中有一个拼写错误:WEP应用程序。

        2
  •  0
  •   Julian Dormon    6 年前

    我也有同样的问题。我发现我需要添加apple元标记,然后添加manifest.json文件。