0

任何人都可以帮忙吗?我想使用 51Degrees 的免费服务,而不是 Lite 版本,而是Cloud API ( https://51degrees.com/compare-data-options )。

我正在尝试将我的 Global.asax 设置为“平板电脑”和“手机”的显示模式,以便我可以使用:

  • 索引.cshtml
  • index.tablet.cshtml
  • index.mobile.cshtml

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

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

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
            )
            });

谢谢汤米

4

1 回答 1

1

您可以使用您链接的页面上的第一个 C# 示例获取 DeviceType 的值,它可以是 Desktop、SmartPhone 或 Tablet(以及其他一些东西)。就像是:

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);

那么你对平板电脑的条件是:

DisplayModeProvider.Instance.Modes.Insert(0, new DefaultDisplayMode("Tablet")
            {
            ContextCondition = (ctx =>
                match.Values.DeviceType.IndexOf("Tablet", StringComparison) != -1))
            });

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

https://cloud.51degrees.com/api/v1/[you licence key]/values?propertyname=DeviceType

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

于 2016-08-25T12:11:57.273 回答