Обнаружение устройства 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.