Android Chrome Custom Tabs

参考文档

API文档

链接

Chrome Custom Tabs 参考文档

https://developer.chrome.com/docs/android/custom-tabs/

Chrome Custom Tabs最佳实践_customtabs_Just_Sanpark的博客-CSDN博客

Chrome Custom Tabs最佳实践_chrome custom tabs集成_wxx614817的博客-CSDN博客

Chrome Custom Tabs 用途

官方Link文档

安全性方面:

官方Link文档

Chrome Custom Tabs页面是否可以获取到键盘输入信息,键盘焦点吗?

  • 在 Android 中,Chrome Custom Tabs 不会直接提供应用程序访问用户的输入信息或键盘焦点的功能。Chrome Custom Tabs 的设计目的是在应用程序内提供一致的浏览器体验,同时保护用户的隐私和安全。

  • Chrome Custom Tabs 是作为 Chrome 浏览器的一部分运行的,并且在沙盒环境中处理用户的输入和交互。应用程序无法直接访问或拦截 Chrome Custom Tabs 中的用户输入信息。键盘焦点和输入信息由 Chrome 浏览器管理和处理。

什么是Custom Tabs?

当用户点击一个URL时,是应该用浏览器打开还是应该用应用内置的WebView打开呢?

两个选项都面临着一些问题。通过浏览器打开是一个非常重的上下文切换,并且是无法定制的。而WebView不能和浏览器共享数据并且需要需要手动去处理更多的场景。

Chrome Custom Tabs让APP在进行网页浏览时更多的控制权限,在不采用WebView的情况下,这既能保证Native APP和网页之间流畅的切换,又允许APP定制Chrome的外观和操作。可定义的内容如下:

  • toolbar的颜色

  • 进场和退场动画

  • 给Chrome的toolbar、overflow menu和bottom toolbar添加自定义操作

并且,Chrome Custom Tabs允许开发者对Chrome进行预启动和网页内容的预加载,以此提升加载的速度。

何时选择使用 WebView 和 Chrome Custom Tabs 呢?

如果要显示的网页内容是由您自己控制的,并且网页内容需要和 Android 组件交互,比如通过 JavaScript 接口来调用 Android 系统的一些功能,这种情况下你还需要用 WebView 来实现;
其他情况都可以用 Chrome Custom Tabs 来实现。

如果用户没有安装最新版本的Chrome,会发生什么呢?

Custom Tabs通过带有key Extras的 ACTION_VIEW Intent来定制UI。这就意味着将要打开的页面会通过系统浏览器或者用户默认浏览器打开。

Chrome Custom Tabs、WebView 和系统浏览器在安全性方面有一些区别:

  1. Chrome Custom Tabs(CCT):Chrome Custom Tabs 是一个集成了 Chrome 浏览器体验的解决方案,它提供了一种在应用程序内加载和显示网页内容的方式。由于使用了 Chrome 浏览器,它能够获得 Chrome 的安全性和更新。CCT 可以受益于 Chrome 浏览器的安全性功能,如安全浏览、自动更新和针对恶意网站的保护。

  2. WebView:WebView 是 Android 平台提供的组件,允许应用程序内嵌入和显示网页内容。WebView 的安全性主要依赖于 Android 系统的 WebView 实现以及使用的 WebView 版本。因此,安全性可能会受到设备制造商和操作系统版本的影响。对于 WebView,及时更新设备以获取最新的系统和 WebView 安全修复非常重要。

  3. 系统浏览器:系统浏览器通常是设备自带的默认浏览器,如Android设备上的"Browser"或"Safari"。系统浏览器的安全性主要取决于操作系统供应商的实现和更新。与 WebView 和 CCT 相比,系统浏览器可能具有更广泛的安全功能和更频繁的更新,因为它们通常由操作系统供应商负责。

总的来说,Chrome Custom Tabs 和系统浏览器在安全性方面更有优势,因为它们可以受益于 Chrome 浏览器的安全性功能和更新。但无论使用哪种解决方案,都需要确保及时更新设备以获得最新的安全修复和保护,并采取适当的安全措施来验证和过滤加载的网页内容。

Chrome Custom Tabs集成:

App build gradle:

// Chrome Custom Tabs
implementation 'androidx.browser:browser:1.3.0'

Activity 代码:

val linkStr = WpkUSApi.getInstance().oauthLink
val intent = CustomTabsIntent.Builder()
                .build()
intent.launchUrl(this, Uri.parse(linkStr))

猜你喜欢

转载自blog.csdn.net/zyy_give/article/details/131206550
今日推荐