我已经创建了一个相对简单的library,用于使用他们的Measurement Protocol API从Xamarin Forms应用推送事件到Google Analytics。图书馆工作和活动记录到GA帐户就好了。
我需要改进的一个领域是"设备类型"报告。 GA使用来自API请求的用户代理来确定有关设备的内容 - 操作系统,平台,分辨率,制造商等。如果我使用浏览器拨打电话,那么显然我会得到所有这些,但由于我使用基本HttpClient
,因此没有默认的用户代理字符串。
我需要存储一个可能的字符串的大型字典(不是一个好主意),建立一个字符串(一个好主意,除了你必须做一些内省以获得详细信息),或者有一些方法可以问设备本身用于用户代理字符串的内容。
如果我必须自己构建,那么我想要做的就是能够识别我所使用的操作系统(Android,iOS,Windows)以及设备类型(平板电脑,手机)。当然,设备制造商,型号等都会很棒,但是自己构建查找会很快发生疯狂。
我找不到关于GA如何解析用户代理字符串的明确文档,因此我并不完全清楚一般表单在标识自己时的样子。
我已经在网上找到了很长的用户代理字符串列表。我希望的是某种算法或文档可能有助于生成至少一个基本的用户代理字符串,允许图书馆消费者报告一些基本的设备信息,这些信息将反过来显示在他们的GA仪表板中< / p>
修改
我想我应该提到理想情况我有PCL方式这样做。现在,该库完全是PCL,如果我可以避免生成非常好的特定于平台的实现。这并不是一项艰难的要求,而是一个非常好的“#34;。
答案 0 :(得分:1)
var webView = new UIWebView(CGRect.Empty);
var userAgentString = webView.EvaluateJavascript("navigator.userAgent");
webView.Dispose();
Console.WriteLine(userAgentString);
注意:执行此操作并存储结果以供将来使用,因为创建UIWebView
并且运行JavaScript并不便宜(性能良好)
示例输出:
Mozilla/5.0 (iPhone; CPU iPhone OS 9_3 like Mac OS X) AppleWebKit/601.1.46 (KHTML, like Gecko) Mobile/13E230
var userAgentString = Java.Lang.JavaSystem.GetProperty("http.agent");
Log.Debug("UA", userAgentString);
示例输出:
Dalvik/2.1.0 (Linux; U; Android 5.1.1; Z716BL Build/LMY47V)
注意:如果您有兴趣创建自己的用户代理,那么当他从ASOP源代码中提取代码时,您应该查看此answer。
我会查看Wikipedia link的格式和RFC 1945的链接