Custom Tabs 是 Android 浏览器中的一项功能,它为应用开发者提供了一种方法,可以直接在应用内添加自定义的浏览器体验。
自智能手机早期以来,加载 Web 内容一直是移动应用的一部分,但旧的选项可能会给开发者带来挑战。启动实际浏览器对用户来说是繁重的上下文切换,且不可定制,而 WebView 不支持 Web 平台的所有功能,不与浏览器共享状态,并增加了维护开销。
Custom Tabs 让用户在浏览时可以留在应用内,从而提高参与度并降低用户放弃应用的风险。Custom Tabs 直接由用户的首选浏览器提供支持,并自动共享浏览器提供的状态和功能。您无需编写自定义代码来管理请求、权限授予或 Cookie 存储。
Custom Tabs 有哪些功能?
通过使用 Custom Tab,您的 Web 内容会在用户首选浏览器所使用的渲染引擎中加载。任何 API 或 Web 平台功能都可以在其中使用,并且在您的 Custom Tab 中也可用。他们的浏览会话、保存的密码、支付方式和地址都会像他们习惯的那样显示出来。
我可以在 Custom Tab 中自定义哪些内容?
相当多!Custom Tabs 允许您精细控制许多浏览器外观和用户体验。在您的应用中,您可以使用 Intent 启动 Custom Tab。调用此 Intent 时,您可以向 CustomTabIntent 添加多个属性以获得您想要的确切体验。以下列出了一些您可以添加的自定义项
- 自定义进入和退出动画以匹配应用的其他部分
- 修改工具栏颜色以匹配应用品牌
- 颜色一致性,即使在浅色和深色主题之间切换,也能与应用保持一致
- 浏览器工具栏和菜单中的自定义操作和条目
- 控制 Custom Tab 的启动高度,从而实现例如在与您的网上商店互动时流式传输视频等功能
此外,用户可以最小化 Custom Tab 以与底层应用互动,并随时恢复它而不会丢失任何进度,从而继续他们的旅程。这为用户提供了一种替代关闭 Custom Tab 的方式,使他们可以在 Web 和原生应用之间无缝多任务处理。此功能默认对 Custom Tabs 启用。
这远非全部。Custom Tabs 非常强大,并且正在积极开发中。每个浏览器都需要在这些功能可用时添加支持。虽然几乎所有浏览器都有一定程度的支持,但了解哪些功能可能或可能不会在用户的浏览器中可用非常重要。请参阅功能对比表,快速查看流行 Android 浏览器对不同功能的可用性。
您现在可以使用我们在 GitHub 上的示例进行测试。
我应该何时使用 Custom Tabs?
没有唯一的“正确”方式来加载 Web 内容。在某些情况下,WebView 是合适的选择。例如,如果您完全在应用内托管自己的内容,或者您需要直接从应用注入 javascript。如果您的应用将用户重定向到外部域的 URL,Custom Tabs 中内置的共享状态意味着它们可能是更好的选择。Custom Tabs 的其他优势包括
- 安全性:Custom Tabs 使用 Google 安全浏览来保护用户和设备免受危险网站的侵害。
- 性能优化
- 在后台预热浏览器,同时避免占用应用的资源。
- 通过提前推测性加载 URL 来加快页面加载时间。
- 生命周期管理:应用启动 Custom Tab 后,在使用 Tab 期间不会被系统驱逐。Custom Tab 的重要性被提升到前台级别。
- 共享 Cookie 存储和权限模型,因此用户无需登录他们已经连接的网站,也无需重新授予已授予的权限。
- 开箱即用地提供浏览器功能,例如自动填充以更好地完成表单。
- 用户可以使用集成的返回按钮返回应用。
Custom Tabs 与 Trusted Web Activity
Trusted Web Activities 扩展了 Custom Tabs 协议并共享其大部分优势。但是,它不提供自定义 UI,而是允许开发者打开没有任何 UI 的浏览器标签页。建议希望在自己的 Android 应用中全屏打开自己的 Progressive Web App 的开发者使用此功能。
Custom Tabs 在哪里可用?
Custom Tabs 是 Android 平台上浏览器支持的一项功能。它最初由 Chrome 在第 45 版中引入。该协议得到大多数 Android 浏览器的支持。
我们期待您对本项目提出反馈、问题和建议,因此我们鼓励您在 crbug.com 上提交问题,并在 Twitter @ChromiumDev 上提问。
了解详情
如有疑问,请查看 StackOverflow 上带有 chrome-custom-tabs 标签的问题。