Android 自定义标签概述

自定义标签是 Android 浏览器的一项功能,它使应用开发者能够直接在他们的应用中添加自定义浏览器体验。

加载网络内容自智能手机早期以来一直是移动应用的一部分,但旧的选择可能会给开发者带来挑战。启动实际的浏览器对于用户来说是一个难以自定义的重大上下文切换,而 WebView 不支持 所有网络平台的功能,不与浏览器共享状态,并增加了维护开销。

自定义标签允许用户在浏览时停留在应用内,从而提高参与度并降低用户放弃应用的风险。它们通过直接由用户的首选浏览器提供支持来实现此目的,并自动共享其提供的状态和功能。你无需编写自定义代码来管理请求、权限授予或 Cookie 存储。

自定义标签可以做什么?

通过使用自定义标签,你的网络内容将加载到为用户的首选浏览器提供支持的任何渲染引擎中。任何 API 或网络平台功能都可用,并且在你的自定义标签中可用。他们的浏览会话、保存的密码、付款方式和地址都将像他们已经习惯的那样显示。

我可以在自定义标签中自定义什么?

相当多!自定义标签使你可以对许多浏览器 chrome 和用户体验进行细粒度控制。在你的应用中,你可以使用 Intent 启动自定义标签。调用此 Intent 时,你可以向 CustomTabIntent 添加许多属性以获得你想要的精确体验。此处列出了一些你可以添加的自定义项

  • 自定义进入和退出动画以匹配你的应用的其余部分
  • 修改工具栏颜色以匹配你的应用品牌
  • 颜色一致性,即使他们在浅色和深色主题之间切换,也可以与你的应用保持一致
  • 浏览器工具栏和菜单的自定义操作和条目
  • 控制自定义标签的启动高度,从而实现诸如在与你的网络商店交互时流式传输视频等功能

此外,用户可以最小化自定义标签以与底层应用交互,并在任何时间恢复它而不会丢失任何进度以恢复他们的旅程。这为用户提供了一种替代关闭自定义标签的方法,他们可以在网络和原生应用之间无缝地进行多任务处理。此功能对于自定义标签默认启用。

这远非全部。自定义标签非常强大,并且正在积极开发中。每个浏览器都需要在这些功能可用时添加对其的支持。虽然几乎所有浏览器都具有一定的支持级别,但了解用户浏览器中可能可用或可能不可用的内容非常重要。请参阅 功能比较表 以快速检查不同功能在流行的 Android 浏览器中的可用性。

你现在可以使用我们在 GitHub 上的 示例 进行测试。

我应该何时使用自定义标签?

没有加载网络内容的单一“正确”方法。在某些情况下,WebView 将是正确的技术。例如,如果你只在你的应用内托管自己的内容,或者如果你需要直接从你的应用注入 JavaScript。如果你的应用将用户引导到域外的 URL,则自定义标签中的内置共享状态意味着它们可能是更好的选择。自定义标签的其他优势包括:

  1. 安全性:自定义标签使用 Google 的安全浏览功能来保护用户和设备免受危险网站的侵害。
  2. 性能优化
    1. 后台浏览器的预热,同时避免窃取应用程序的资源。
    2. 通过提前推测性加载 URL 来加快页面加载时间。
  3. 生命周期管理:在标签使用期间,启动自定义标签的应用不会被系统逐出 - 它的重要性提高到“前台”级别。
  4. 共享 Cookie 罐和权限模型,因此用户无需登录他们已连接到的网站,也无需重新授予他们已授予的权限。
  5. 开箱即用的浏览器功能,例如自动填充,可实现更好的表单填写。
  6. 用户可以使用集成的后退按钮返回应用。

自定义标签与受信任的 Web 活动

受信任的 Web 活动 扩展了自定义标签协议并共享其大部分优势。但是,它不是提供自定义 UI,而是允许开发人员在没有任何 UI 的情况下打开浏览器标签页。对于希望在其自己的 Android 应用中全屏打开自己的 渐进式 Web 应用 的开发人员,建议使用此方法。

自定义标签在哪里可用?

自定义标签是 Android 平台上的浏览器支持的一项功能。它最初由 Chrome(版本 45)引入。大多数 Android 浏览器都支持该协议。

我们正在寻找有关此项目的反馈、问题和建议,因此我们鼓励你在 crbug.com 上提交问题,并在 Twitter @ChromiumDev 上提问。

开始

除了 GitHub 演示 之外,还有许多指南可以帮助你开始使用自定义标签。

如有疑问,请查看 StackOverflow 上的 chrome-custom-tabs 标签。