0

任何人都可以幫忙嗎? 我想使用51Degrees的免費服務而不是Lite版本,但是使用Cloud APIhttps://51degrees.com/compare-data-options)。Global.asax設備檢測與51度雲API

我想設置我的Global.asax有對「平板電腦」和「移動」的顯示模式,這樣我就可以使用:

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

以下工作時不使用51度。 有沒有人有過如何整合51度Cloud 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 
      ) 
      }); 

感謝 湯米

回答

1

你可以得到設備類型的值可以是臺式機,智能手機或平板電腦(加上一些其他的東西)通過使用第一個C#示例您鏈接的頁面。喜歡的東西:

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查詢設備類型的可能值

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

或替代,使用IsMobile, IsSmartPhone,IsTablet和IsDesktop屬性返回true或false。