【问题标题】:How can I differentiate Android Chrome Browser and In-App WebView user agents?如何区分 Android Chrome 浏览器和应用内 WebView 用户代理?
【发布时间】:2015-12-20 09:58:58
【问题描述】:

我目前正在开发一个使用 WebViews 加载某些页面的 Android 应用程序(我无法修改 HTML,因为 iOS 应用程序和网站正在使用它)。 首先我们遇到了问题,InApp WebViews 和常规 Android 浏览器的用户代理是相同的(从 Android 4.4 开始,它开始使用 chromium 作为 Web 引擎)。

InApp Webview 示例:

Mozilla/5.0(Linux;Android 5.1.1;Nexus 5 Build/LMY48M;wv) AppleWebKit/537.36 (KHTML, like Gecko) 版本/4.0 Chrome/44.0.2403.117 移动版 Safari/537.36

因此,在 Google Analytics 中,我们无法区分使用应用程序的用户和使用普通浏览器访问 HTML 页面的用户。 解决方案是更改用户代理字符串:

webView.getSettings().setUserAgentString("Our custom Mobile Android InApp Browser");

这适用于 Google Analytics。

但现在我们遇到了一个问题,即 Youtube 没有将 InApp 用户识别为移动用户,而是为桌面 Youtube 播放器提供服务。

现在我正在寻找以下解决方案之一:

1) 不知何故,Google Analytics 将应用内浏览器识别为与普通 Android 浏览器不同。

2) 为 webview-user-agent 设置一些自定义字符串,使 Youtube 为其移动版本提供服务。

谢谢!

【问题讨论】:

    标签: android webview google-analytics youtube


    【解决方案1】:

    设置自定义 User-Agent 字符串似乎是一个不错的解决方案。

    只要确保这个自定义字符串可以被 Youtube 识别为移动 Android 设备即可。例如,您可以使用用于存储设备型号的“字段”:

    Dalvik/1.6.0 (Linux; U; Android 4.0.3; <Your_custom_marker> Build/IML74K)
    

    【讨论】:

    • 谢谢,它可以接收移动 Youtube 播放器,当它在分析中正确显示时,我会接受你的回答。您知道分析中的浏览器名称是什么吗?
    • 此方法不会更改浏览器名称,但在 Google Analytics(分析)中,您可以添加 Mobile Device Model 作为报告的二级维度。我不确定它是否会识别未知的型号名称。
    • 使用您提供的字符串会导致 Google Analytics 将其视为浏览器版本“Android 运行时”,到目前为止,该版本对于应用程序来说是唯一的。你知道什么时候会从任何其他设备提供这个字符串吗?
    • stackoverflow 告诉我,我必须再等 22 个小时才能给你积分
    • Google Analytics 似乎将此 UA 识别为特定类型的“浏览器”,这是个好消息(我认为字符串的 Dalvik 部分在这里很重要)。仅供参考,这是我自己的应用程序发送的那种用户代理字符串(我使用简单的 HTTP 请求,而不是 webviews)。没有绝对的保证,但我认为您可以放心地假设没有真正的浏览器会被归入同一类别。
    猜你喜欢
    • 2012-09-25
    • 2014-09-15
    • 1970-01-01
    • 2014-12-27
    • 1970-01-01
    • 1970-01-01
    • 2013-11-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多