Как обнаружить планшетные (любые) запросы?
if (Request.Browser.IsMobileDevice)
{
Response.Redirect("/mobile/Login.htm");`
}
Чтобы обнаружить мобильные телефоны, но в то же время они обнаруживают планшет как мобильный, мне нужна функция, которая проверяет, есть ли планшет или функция, которые проверяют размер экрана устройства.
Спасибо, что я использовал ScreenPixelsWidth и ScreenPixelsHeight, это код, если он нужен.
int wight = Request.Browser.ScreenPixelsWidth;
int height = Request.Browser.ScreenPixelsHeight;
if (Request.Browser.IsMobileDevice && wight < 720 && height<1280)
{
Response.Redirect("/mobile/Login.htm");
}
Ответы
Ответ 1
Вы можете использовать ScreenPixelsWidth и ScreenPixelsHeight (http://msdn.microsoft.com/en-us/library/system.web.httpbrowsercapabilities.aspx), и вы можете определить порог, в котором вы считаете, должна ли отображаться обычная или мобильная версия.
Есть много способов решить эту проблему, но поскольку вы уже используете класс HttpBrowserCapabilities, вы можете также использовать эти 2 свойства.
Ответ 2
У меня была аналогичная проблема и я попытался использовать: HttpContext.Request.Browser.ScreenPixelsWidth
Однако это всегда возвращало значение 640 пикселей независимо от устройства (iphone или ipad). Я решил проблему, создав статический метод для проверки строки User Agent.
public class DeviceHelper
{
public static bool IsTablet(string userAgent, bool isMobile)
{
Regex r = new Regex("ipad|android|android 3.0|xoom|sch-i800|playbook|tablet|kindle|nexus");
bool isTablet = r.IsMatch(userAgent) && isMobile;
return isTablet;
}
}
Затем в моем контроллере:
if(DeviceHelper.IsTablet(Request.UserAgent, Request.Browser.IsMobileDevice))
return Redirect("..."); // redirect to tablet url
Ответ 3
ScreenPixelsWidth всегда возвращает 640, поэтому не помогает при обнаружении телефонов. Я нашел, что это работает:
public static bool IsPhoneDevice(this HttpBrowserCapabilitiesBase Browser)
{
return (Browser.IsMobileDevice && Browser.CanInitiateVoiceCall);
}