3

我们正在制作一个 iOS 和 Android 应用程序,其中包含 webview 作为其功能的一部分。当它查看我们自己的网站时,我们喜欢为应用内视图调整页面(例如,我们剪掉标题,因为应用程序有自己的 chrome)。我们按原样展示的其余网络......问题来了。

我们在用户代理字符串中将自己标识为“OurApp/0.9.24 (iPhone; iOS 6.1.2; Scale/2.00)”)”,这与 iPhone 类似,但不完全是 iPhone 和包括 www.google.com 在内的一些网站显示作为桌面页面而不是移动优化页面。

有没有人遇到过类似的问题?关于如何创建一个可以识别我们的应用程序的用户字符串的任何建议,但对于大多数网站(包括 www.google.com)来说,它看起来就像一部 iPhone?

PS 典型的 iPhone 浏览器字符串如下所示:“Mozilla/5.0 (iPhone; CPU iPhone OS 5_0_1 like Mac OS X) AppleWebKit/534.46 (KHTML, like Gecko) Mobile/9A405”

4

2 回答 2

2

我认为您看到的结果是预期的。站点嗅探用户代理以确定如何显示内容。本质上,就世界其他地方而言,您正在创建一个“未知”代理,因此默认设置通常是显示桌面版本。

也许您可以使用默认的用户代理字符串,但在末尾添加一些内容作为扩展名。看看这个 https://en.wikipedia.org/wiki/User_agent_string#Formathttps://www.rfc-editor.org/rfc/rfc2616#section-14.43

注意最后一段的描述

Mobile/7B405:浏览器使用它来指示可直接在浏览器中或通过第三方获得的特定增强功能。这方面的一个例子是 Microsoft Live Meeting,它注册了一个扩展,以便 Live Meeting 服务知道该软件是否已经安装,这意味着它可以为加入会议提供简化的体验。

底线,根据规范,您应该能够添加“/product comment”来识别您的产品,因此对于 iPhone 字符串,您可以将“/0.9.24 OurApp”附加到末尾而不是开头,然后嗅探为了那个原因。

于 2013-07-31T16:12:56.657 回答
1

很多网站都有脆弱的用户代理解析,所以在调整它时你可能想小心翼翼。OurApp/0.9.24我建议在用户代理的末尾附加一个标识符- 它过去对我有用。

更好的是,发送一个自定义标头来标识您的应用程序。我相信 Android 的 Webview 开箱即用。它发送类似X_REQUESTED=com.your.app.

这在 iOS 中添加也非常简单,并且可以防止 3rd 方网站在您的用户代理中搞乱阅读。

此外,它会阻止您解析出版本号以及用户代理之外的内容。

于 2013-08-01T06:05:50.730 回答