我们究竟应该如何在 Android 上实现 Chrome 的本机应用程序安装提示?

2023-11-22

我正在查看 Google 文档https://developers.google.com/web/fundamentals/app-install-banners/native,尝试找出如何在 Android 版 Chrome 上显示安装横幅来安装我们的本机应用程序。

首先,在几个地方,此页面指的是将您的应用程序添加到主屏幕,这不是此页面应该讨论的内容,对吧?这应该是关于安装本机应用程序,而不是 PWA。

但我真正的问题是:现实世界中的流程应该是什么样子?如果满足所有适当的条件,我们应该显示一个按钮或用户可以交互的其他东西,然后 Chrome 显示一个安装横幅?那么,我们显示一个按钮或横幅,上面写着“安装我们的应用程序”,然后如果用户单击它,Chrome 会显示另一个横幅,上面写着“安装”?这似乎是一种非常多余的体验,需要更多的按钮点击才能安装,而不仅仅是自动显示 Chrome 安装横幅(这是我收集的它过去工作的方式)。

我已经进行了大量搜索,但找不到任何人们展示他们如何使用当前流程的示例。真的有人用这个吗?

我应该使用类似的东西吗https://github.com/ain/smartbanner.js反而?


The docs令人困惑、具有误导性,并且经常引用 PWA。一旦您拥有清单并满足要求,将会出现一个带有install链接或add to home screen关联。以下是我对 Android 智能应用横幅的更新要求以及如何测试它。我在文档中添加了一项缺失的标准:需要多种不同的图标大小。


Android 本机应用程序安装提示要求

  • Web 应用程序和本机应用程序均已安装。
  • 满足用户参与启发式(当前,用户已与域交互至少 30 秒)
  • Includes a Web App Manifest that includes:
    • 简称
    • 名称(在横幅提示中使用)
    • 图标包括36x36, 48x48, 72x72, 96x96, 144x144, 192x192, 512x512 version
    • Preferred_lated_applications 为 true
    • related_applications 对象,包含有关应用程序的信息
  • start_url 可以设置为.对于当前位置
  • Manifest is served over HTTPS - manifest.json
    • 将其包含在您的页面上<link rel="manifest" href="manifest.json" />

Testing

  • 在 Android 设备或模拟器上登录 chrome
  • 登录 Google Play 商店(设备上必须有 Play 商店)
  • 在 Chrome 中启用此标志chrome://flags/#bypass-app-banner-engagement-checks
  • 该应用程序不应已安装在设备上

调试

检查浏览器中的“源”选项卡,查看清单是否正确提供,并记住检查控制台是否有任何错误(警告可以)

Example

manifest.json

{
  "name": "App Name",
  "short_name": "App Name Install Banner Sample",
  "icons": [
    {
      "src": "icon-0-75x.png",
      "sizes": "36x36",
      "type": "image/png"
    },
    {
      "src": "icon-1x.png",
      "sizes": "48x48",
      "type": "image/png"
    },
    {
      "src": "icon-1-5x.png",
      "sizes": "72x72",
      "type": "image/png"
    },
    {
      "src": "icon-2x.png",
      "sizes": "96x96",
      "type": "image/png"
    },
    {
      "src": "icon-3x.png",
      "sizes": "144x144",
      "type": "image/png"
    },
    {
      "src": "icon-4x.png",
      "sizes": "192x192",
      "type": "image/png"
    }
  ],
  "prefer_related_applications": true,
  "related_applications": [
    {
      "platform": "play",
      "id": "com.google.samples.apps.iosched",
      "url": "https://play.google.com/store/apps/details?id=com.google.samples.apps.iosched"
    }
  ],
  "start_url": ".",
  "display": "standalone"
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

我们究竟应该如何在 Android 上实现 Chrome 的本机应用程序安装提示? 的相关文章

随机推荐

  • Rails:违反外键约束

    我有三个模型 Book genre BookGenre 以下是关系 class BookGenre lt ActiveRecord Base belongs to book belongs to genre end class Book l
  • Spark Dataframe的分区数量

    谁能解释一下将为 Spark Dataframe 创建的分区数量 我知道对于 RDD 在创建它时我们可以提及分区的数量 如下所示 val RDD1 sc textFile path 6 但是对于 Spark 数据帧 在创建时看起来我们没有像
  • Scala:强制 A 不是 B 的子类型

    我试图根据参数是否扩展给定的类来重载方法 并且遇到了一些麻烦 使用迈尔斯 萨宾 Miles Sabin 的方法 我生成了以下代码 object ExtendedGenericTypes trait lt lt A B Encoding fo
  • IIS 7 上的 ASP.net MVC 返回空白页面

    我在将 ASP net MVC 2 RC 2 应用程序部署到我的生产环境时遇到一些问题 我让它在开发和测试中都运行良好 主要区别似乎是生产盒尚未升级到 IIS 7 5 当我访问该网站时 我只是看到一个空白页面 如中所述我在 IIS 上部署
  • bootstrap 4 modal-backdrop样式(特定modal)

    我想知道如何更改特定模态的模态背景颜色 不是模态的背景颜色 如果我使用 shown bs modal 并有一些延迟 则可以更改颜色 但我想立即更改背景颜色 希望有人可以帮忙 谢谢 div class modal fade div class
  • 群组成员支持的协议与现有成员的协议不兼容

    我面临与卡夫卡相关的问题 我正在使用当前的服务 Producer 将消息发送到 Kafka 主题 events 该服务正在使用kafka 2 12 v1 0 0 用 Java 编写 我正在尝试将其与示例项目集成spark streaming
  • CSS3 中计算操作数的 LESS 转义中的空白保留

    我想用 LESS 表达以下 CSS a min height calc 2em 4px 因此 为了防止 LESS 尝试计算 我使用 LESS 编写了表达式转义语法 a min height calc 2em 4px 然而 LESS 的缩小引
  • 使用 linq to xml 遍历 xml 树中的每个元素

    我想遍历 xml 中的每个元素和属性并获取名称和值 而无需提前知道元素的名称 我什至有一本关于 linq to xml with C 的书 它只告诉我当我已经知道元素的名称时如何查询以获取元素的值 下面的代码只提供了最高级别的元素信息 我还
  • 将 Enumerable.Range 转换为字符串列表

    在 Linq 中 如何将 Enumerable Range 1 31 转换为字符串列表 var list Enumerable Range 1 31 Select n gt n ToString ToList
  • 使用 Python/PIL 从图像中删除背景颜色

    我一直在努力让它发挥作用 但确实遇到了麻烦 所以非常感谢您的帮助 使用下面的代码 我想将具有指定 RGB 值的特征更改为白色 并将图像中的所有其他特征更改为黑色 即基本上从图像中提取特征 不幸的是 尽管我可以将我想要的特征 extract
  • Java 中序列化对象大小与内存中对象大小

    有没有一种方法可以从 Java 中的序列化对象大小 粗略地 估计内存对象大小 内存中的大小通常在可序列化大小的一半到两倍之间 最极端的例子可能是超过 80 个字节的字节 序列化后在内存中可以是 16 个字节 您可以使用探查器来告诉您对象使用
  • 从客户端的不同文件加载 WCF 配置

    许多人在 WCF 中面临的一个常见问题是无法从不同的配置文件加载客户端配置 当开发人员想要部署一些二进制文件以及独立的配置文件 也可能位于资源文件或另一个配置文件中 以避免修改主配置文件时 这是一种常见的情况 我找到了两个参考资料 http
  • 自定义对话框全屏打开

    我正在开发一个 Android 应用程序 我有一个关于自定义对话框的问题 我这样做是为了打开一个自定义对话框 protected void showSetFriendEmailDialog Create the dialog final D
  • Swift 中的日期格式 TODAY TOMORROW YESTERDAY

    我想将日期显示为6 月 13 日星期六 如果日期是当天 则应显示Today像那样Tomorrow 昨天 我无法同时实现这两个目标 guard let date Date fromString 16 September 2020 format
  • Android 从哪里获取默认时区?

    Android 设备从哪里获取默认时区 示例 您启动一个全新的 Android 设备 并且存在带有 日期和时间 活动的设置向导 其中已经选择了默认时区 在我的情况下 http en wikipedia org wiki Central Eu
  • 重载解析中的约束是否受到不同类型限定符的影响?

    有以下简单代码 include
  • Plotly 热图未渲染所有 yaxis 标签

    我构建了一个带有热图的仪表板 但是我注意到 t 我的 y 轴中的一些标签没有显示 我只得到了有限的我不知道出了什么问题 这是我的仪表板 import dash import dash table import plotly graph ob
  • 获取特定 URL 和页面的 FB 点赞数

    这是两个问题合而为一的问题 是否可以获取网站内特定页面的点赞数 就像如果有一个没有特定目标网址的点赞按钮 点赞将被给予在window location href 可以在没有 API 密钥的情况下检索此号码吗 如果我只有网站的 URL 是否可
  • Magento:将捆绑中的简单产品添加到购物车中的单独行

    我的客户要求 每当用户添加产品时 他们销售的捆绑产品 服装上衣和下装 中的每个简单产品都应作为单独的行项目添加到购物车中 谁能指导我如何实现这一目标 我对 MVC 和 Zend Framework 相当熟悉 但我需要一些帮助来找到控制将捆绑
  • 我们究竟应该如何在 Android 上实现 Chrome 的本机应用程序安装提示?

    我正在查看 Google 文档https developers google com web fundamentals app install banners native 尝试找出如何在 Android 版 Chrome 上显示安装横幅来