kevp75
asked on
Mobile REdirection
Can anyone see why this will not work?
On emulators, it seems to do the trick, but on my iPhone, my boss's iPhone, his friends Android, it does not work in production.
In staging it works just fine. Both sites reside on the same server, and are configured the exact same.
Imports System.Web
Imports System.Text
Imports System.Text.RegularExpressions
Namespace TurboKits
Public Class Browsers
Public Property UsersAgent As String
Public Property BrowserAccept As String
Public Property BrowserWAPProfile As String
Public Property UserBrowser
''' <summary>
''' Check for a mobile device
''' </summary>
''' <returns></returns>
''' <remarks></remarks>
Public Function IsMobile() As Boolean
Try
If UserBrowser.IsMobileDevice Then
Return True
Else
'Try checking for the HTTP_X_WAP_PROFILE Header
If Not (IsNothing(BrowserWAPProfile)) Then
Return True
Else
'Check to see if HTTP_ACCEPT contains wap
If Not (IsNothing(BrowserAccept)) And (LCase(BrowserAccept).Contains("wap")) Then
Return True
Else
'If all else has failed, then chekc the user-agent
Dim objUA As String = LCase(UsersAgent)
Dim objRegEx1 As New Regex("(iphone|windows ce|blackberry|opera (mini|mobi)|mobile|palm|portable|windows phone|avantgo|docomo|ipod|ipad|up\.|android|dolfin|fennec|gobrowser|nokia|iemobile|jasmine|tablet|minimo|mot-|netfront|playstation|kindle|hiptop|symbianos|obigo|samsung|alcatel|lg-|webos|polaris|sonyericsson|semc|skyfire|tear|teashark|ucweb|uzardweb|midp|j2me|novarra|palmos|palmsource|240x320|opwv|chtml|pda|htc|panasonic|sony|pocket|dolphin|android|avantgo|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od|ad)|iris|kindle|lge |maemo|midp|mmp|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|symbian|treo|up\.(browser|link)|vodafone|wap|windows (ce|phone)|xda|xiino)", RegexOptions.IgnoreCase)
Dim objRegEx2 As New Regex("(1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|e\-|e\/|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(di|rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|xda(\-|2|g)|yas\-|your|zeto|zte\-)", RegexOptions.IgnoreCase)
If objRegEx1.IsMatch(objUA) Or objRegEx2.IsMatch(Left(objUA, 4)) Then
Return True
Else
Return False
End If
objRegEx1 = Nothing : objRegEx2 = Nothing
End If
End If
End If
Catch ex As Exception
Dim objErr As New TurboKits.ErrorManager
objErr.Location = "Browsers - IsMobile"
objErr.Stack = ex.StackTrace()
objErr.Except = ex
objErr.ParseError()
objErr = Nothing
Return False
End Try
End Function
End Class
End Namespace
On emulators, it seems to do the trick, but on my iPhone, my boss's iPhone, his friends Android, it does not work in production.
In staging it works just fine. Both sites reside on the same server, and are configured the exact same.
SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
ASKER
can't use 3rd party.
Plus what I have works in one site, but does not work in another... and there is an error thrown
Plus what I have works in one site, but does not work in another... and there is an error thrown
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
ASKER
:) that's where I got mine from.. i just added a few extras to it.
then the issue you are having is probably the same as mine. The User Agent string is not passed by the browser that is connecting to the page. You have to check if Request.ServerVariables["U ser_Agent" ] = null
ASKER
is there another method to get that if it is null?
Nope, if it is null, then the browser isn't passing it. We had issues where our BigIP was hitting the page and caused error after error since it didn't have a user agent. In the end it detected the site as offline and would load the page for any user.
ASKER
is there another method to doing this? I can't believe that I would simply have to rely on a 3rd party service to do it for me...
There is, but is it no longer supported: http://mdbf.codeplex.com/.
ASKER
Object reference not set to an instance of an object.
no line number