首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >基于51度云API的Global.asax设备检测

基于51度云API的Global.asax设备检测
EN

Stack Overflow用户
提问于 2016-04-20 11:28:59
回答 1查看 520关注 0票数 0

有人能帮忙吗?我希望使用来自51 51Degrees的免费服务,而不是Lite版本,但是使用Cloud (https://51degrees.com/compare-data-options)。

我正在尝试将我的Global.asax设置为具有“平板”和“移动”的显示模式,以便我可以使用:

  • index.cshtml
  • index.tablet.cshtml
  • index.mobile.cshtml

以下工作时,不使用51度。有没有人有一个例子,如何将51度云API与global.asax集成,以过滤平板/移动设备。

https://51degrees.com/Support/Documentation/APIs/Cloud-API/NET-Cloud

代码语言:javascript
复制
DisplayModeProvider.Instance.Modes.Insert(0, new DefaultDisplayMode("Tablet")
            {
            ContextCondition = (ctx =>
            ctx.Request.UserAgent.IndexOf("iPad", StringComparison.OrdinalIgnoreCase) >= 0 ||
            ctx.Request.UserAgent.IndexOf("Android", StringComparison.OrdinalIgnoreCase) >= 0  &&
            ctx.Request.UserAgent.IndexOf("Mobile", StringComparison.OrdinalIgnoreCase) <= 0
            )
            });

谢谢汤米

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-08-25 12:11:57

您可以通过在链接的页面上使用第一个DeviceType示例获得DeviceType的值,它可以是桌面、SmartPhone或平板(加上其他一些东西)。类似于:

代码语言:javascript
复制
string json = webClient.DownloadString(String.Format(
  "https://cloud.51degrees.com/api/v1/{0}/match?user-agent={1}&values=DeviceType",
  yourLicenceKey, ctx.Request.UserAgent));

dynamic match = Newtonsoft.Json.Linq.JObject.Parse(json);

那么你的平板电脑的情况是:

代码语言:javascript
复制
DisplayModeProvider.Instance.Modes.Insert(0, new DefaultDisplayMode("Tablet")
            {
            ContextCondition = (ctx =>
                match.Values.DeviceType.IndexOf("Tablet", StringComparison) != -1))
            });

可以使用URL查询DeviceType的可能值。

代码语言:javascript
复制
https://cloud.51degrees.com/api/v1/[you licence key]/values?propertyname=DeviceType

或者,使用返回true或false的IsMobile、IsSmartPhone、IsTablet和IsDesktop属性。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36742427

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档