0

我需要在较新的 Android 设备上区分本机 (Android) 浏览器和 Google Chrome,但一直遇到问题,特别是在较新的三星设备(Galaxy S4、Galaxy S4 mini 和 Galaxy Mega)上。

我们内部有一些设备检测,它分析从浏览器发送的用户代理,以尝试确定正在使用的浏览器。传统上,为了检测 Chrome,代码会在用户代理中查找“Chrome”或“CriOS”,通常它们出现在用户代理字符串的最后部分(根据关于用户代理的Wikipedia 文章,这用于指示可用的增强功能)。

直到最近,这都没有问题*。

在运行 Android 4.2.2 的最新三星 Galaxy 设备(如上所列)上,本机浏览器在用户代理字符串中返回“Chrome”。从围绕该主题的一些简短阅读来看,这是因为本机浏览器使用 Chromium(我承认,直到我阅读了该主题之后,我才理解 Chromium 和 Chrome 之间的区别,更多信息在这里)。

这也使此处建议的 Chrome 功能检测的使用无效。

主要问题是我们看到两个浏览器之间的渲染差异很小,我们通常会使用特定于浏览器的 CSS hacks** 来处理,但现在我们无法使用。

到目前为止,我们只在三星 Galaxy 设备上看到过这个问题,在运行 Android 4.2.2 的 Nexus 4 上进行测试时,本机浏览器不会将 Chrome 作为用户代理的一部分返回。这可能是运行 Android 4.2.2 的三星 Galaxy 设备所特有的问题,但目前我们没有足够广泛的设备来测试。

有谁知道在不使用上述两种方法中的任何一种的情况下可靠地区分两种浏览器的任何方法?


*这没有我们注意到或报告给我们的任何问题。

**是的,我知道使用 hack 并不是最好的做事方式,但是当它是这样或重新编写大量代码时,hack 往往会胜出。

4

0 回答 0