Обнаружение устройства Global.asax с облачным API 51 градусом

Кто-нибудь может помочь? Я хочу использовать бесплатный сервис от 51Degrees, а не Lite-версию, но Cloud API ( 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

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 ответ

Решение

Вы можете получить значение DeviceType, которое может быть Desktop, SmartPhone или Tablet (плюс несколько других вещей), используя первый пример 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))
            });

Вы можете запросить возможные значения DeviceType с помощью URL

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

или в качестве альтернативы используйте свойства IsMobile, IsSmartPhone, IsTablet и IsDesktop, которые возвращают значение true или false.

Другие вопросы по тегам