MobileESP: ASP.NET Updates

Hi, folks –

The 2 flavors of the ASP.NET code library were updated with two issues specific to that code base. The updates are now live on Google Code.

  • The starting quote was missing for the vndRIM variable’s value.
  • Removed the class statement, “using System.Linq.” The Linq API wasn’t actually used. Removing the Linq statement gives us an added bonus: compatibility for the ASP.NET code now drops from .NET 4.0 to .NET 2.0.

Many thanks to Brian W. for pointing out these issues and their solutions!

- Anthony

Comments

MobileESP: Updated for Kindle

Hi, folks –

Thanks to some questions from Dave M., we realized that MobileESP had inconsistent support for detecting the Amazon Kindle e-Ink devices as mobile devices, plus, they were also reporting “true” as Rich CSS Tier devices (which they are not). In addition, MobileESP had no support for detecting the Amazon Kindle Fire devices in Silk browser acceleration mode, which uses a different useragent string.

We updated the MobileESP code bases twice today. The first was to standardize support for detection of the Kindle e-Ink device. Then we remembered that we had wanted to also add support for detecting the Silk browser acceleration, so we updated all of the libraries a second time to add the Silk browser support.

Here is the specific list of updates which affects the following libraries: PHP, JavaScript, Java, ASP.NET (both variants), and Python.

  • Updated DetectRichCSS(): Excluded e-Ink Kindle devices, which all run black and white displays.
  • Created DetectAmazonSilk(): Created to detect Kindle Fire devices in Silk mode.
  • Updated DetectMobileQuick(): Updated to include e-Ink Kindle devices and the Kindle Fire in Silk mode.

Open Issue: Currently, the Android-based Kindle Fire browser is detected as a Rich CSS Tier device when in Silk mode. When Silk mode is off (i.e., normal Android browsing mode), then the device is currently reporting itself as an Android phone. (This is common behavior for 7″ Android tablets.) We’re not sure that this is the best strategy for Silk mode — should Silk mode be in the Rich CSS or basic mobile device category alongside feature phones? Please let us know your feedback.

As always, if you’d like updates on MobileESP, subscribe to the changes log on Google Code.

- Anthony

Comments (2)

MobileESP: Updated for BlackBerry Curve Touch 9380

Hi, folks –

A quick update to the code libraries today.

ALL LIBRARIES: PHP, JavaScript, Java, ASP.NET (both), Python

Added support for the BlackBerry Curve Touch 9380. It’s a new monoblock all-touchscreen device from BlackBerry and is a little smaller than a Storm. Because the screen is (reasonably) large and it lacks a keyboard, we decided to add support to it to the DetectBlackBerryTouch() method. (Special thanks to Robert P. for bringing the recent launch of this device to our attention.)

PHP Bug Fix

Fixed a bug in the DetectKindle() method. The call to DetectAndroid() needed the class identifier (“this”). (Special thanks to the several people who wrote in about this one.)

Python Bug Fix

In adding support for the Curve Touch to the DetectBlackBerryTouch() method, we noticed a copy & paste error in the code. All of the existing lines of code were looking for the Storm device only. Oops! So we added in support for all necessary devices: Storm, Torch, Bold Touch and Curve Touch.

All libraries have been updated in the Google Code project and are available for download now.

- Anthony

Comments (2)

MobileESP: Ported to Python!

Hi, folks –

The community has delivered another great port of MobileESP! Jury Gerasimov sent me an email last week with the good news.

Jury’s company in Irkutsk, Russia, (that’s one of the largest cities in Siberia!) has been developing a bus monitoring service. The web site was built in Python for the Django web app framework. In Jury’s own words:

We’ve made 3 versions of the web interface – desktop, modern mobile and old mobile – available on the same URL. To detect which version the server should display, we needed some server-side script, and MobileESP has the most usable set of functions among other solutions. Our main developers were quite busy, so Python translation was made by freelance guy. He knew the code will be opened so kept the structure and comments close to original.

Check out the mobile version of their bus tracking web app: www.irk.fm/bus/ (Note that the web site is in Russian naturally.)

For you Python lovers, here is the sample code they used to integrate MobileESP in Django. It looks pretty simple…

  from mobileesp import mdetect

  user_agent = request.META.get("HTTP_USER_AGENT")
  http_accept = request.META.get("HTTP_ACCEPT")
  if user_agent and http_accept:
       agent = mdetect.UAgentInfo(userAgent=user_agent, httpAccept=http_accept)
       #Do first! For iPhone, Android, Windows Phone 7, etc.
       if agent.detectTierIphone():
           HttpResponseRedirect('/myapp/i/')
       #Then catch all other mobile devices
       if agent.detectMobileQuick():
           HttpResponseRedirect('/myapp/m/')
  #For traditional computers and tablets (iPad, Android, etc.)
  return HttpResponseRedirect('/myapp/d/')  

Moving forward, we will be hosting the Python codebase in the MobileESP project on Google Code. (See the Download Page for details.) Jury and his team will assist in reviewing and testing updates.

For more information about the Python port or to contact Jury for more information about his company’s services, please email Jury directly: jury@softshape.com.

Cheers,

Anthony

Comments

MobileESP: Ported to Classic ASP (VBscript)!

Hi, folks –

I’ve been remiss in sharing this good news…

A few weeks ago, I received an email from Miguel Barrero that he has ported MobileESP to Classic ASP — which means classic VBscript. So for you folks who work at places still using Classic ASP to pump out the pages, you can now also detect and optimize your web sites for mobile devices! Who says the iPhone and Android can’t get all snuggly with VBscript??  :-)

To download your copy of MobileESP for Classic ASP (VBscript), point your browser to:

https://bitbucket.org/mbarrero/mobileesp-classic-asp

Please note that Miguel is maintaining the Classic ASP code in his spare time, so the VBscript library may be a little bit behind changes made to the main MobileESP code libraries.

Thanks again, Miguel!

 

 

Comments (2)

Updated: Performance Enhancements for ASP.NET

Hi, folks –

Doug D. contributed some performance enhancements updates for the two ASP.NET variations of MobileESP. Here is a summary of changes:

  • Variables: Converted the private member strings to constants for faster object creation.
  • Removed unused property: deviceXoom.
  • Wrote member strings in UPPERCASE rather than calling the ToUpper() on each one.
  • Added a note to OnInit() that one may optionally override InitializeCulture() instead so that the mobile detection can happen earlier in page’s lifecycle, if necessary.

Thank you for the contributions, Doug!

Anthony

 

Comments

MobileESP in Action: The OpenCart Mobile Framework

Hi, folks –

We recently received an email from Rumen Dmitrov who told us how he’s using MobileESP in his commercial project…

“I use MobileESP as an essential part of my new project called OpenCart Mobile Framework http://bit.ly/rxJ8Ot. MobileESP cares for the automatic mobile device detection which I use to redirect visitors to a dedicated mobile theme. This helps me have separate mobile and desktop page templates which increases the speed of any OpenCart store by 2700% when accessed on mobile.

“I knew I had to find a way to detect devices on the server, and not through media queries, because the mobile-first approach starts on the server. If I had thought otherwise the mobile visitors would have been burdened by having to download 500k of useless (on mobiles) data and having to reformat it.”

We would like to showcase more projects using MobileESP. Please send me (Anthony) an email about how your project is using MobileESP, and we’ll post a note here on the blog!

Cheers,

Anthony

Comments (1)

Updated: Windows Phone 7, BlackBerry Bold Touch, Kindle Fire

Hi, folks –

I made a few updates to the code today. Here is a summary of the changes, which are also listed at the top of each file.

PHP Only:

    • Created a constructor method per new features in PHP 5.0: __construct(). (Thanks, Lee C.!!)

All Code Libraries: PHP, JavaScript, Java, ASP.NET

    • Added a new variable for 2 versions of the new BlackBerry Bold Touch (9900 and 9930): deviceBBBoldTouch.
    • DetectTierIphone(): Moved Windows Phone 7 to the iPhone Tier. WP7.5′s IE 9-based browser is good enough now.
    • DetectBlackBerryTouch(): Updated to support the 2 versions of the new BlackBerry Bold Touch (9900 and 9930). (Thanks, Robert P.!!)
    • DetectKindle(): Updated to focus on eInk devices only. The Kindle Fire should be detected as a regular Android device.

As a side note, I also learned how to “checkout” and “commit” the code updates in SVN to Google Code. Now, file updates are truly updated versions of the same file in the Google Code system rather than an entirely new file with no history. I know, it’s a silly thing that I should have learned ages ago, and my apologies for not having done so sooner. So all of today’s updates are posted as Update r205. (Let’s just say that a switch to Mac and the Versions client were the main reasons…) :-)

 

Cheers,

Anthony

 

Comments

Known Issue: Firefox on Android Phones

James M. sent us a note just before Christmas about a support issue affecting the Firefox browser on Android phones. Here is a quick overview of the issue.

Issue Summary: When using the Firefox browser on an Android mobile phone, the MobileESP code library erroneously reports the device as an Android tablet. An Android tablet is correctly identified as an Android tablet. This issue only affects mobile phones and similar small-screen Android devices like MP3 players (such as the Samsung Galaxy Player).

Root Cause: Mozilla uses the exact same useragent string for both phones and tablets. The string has the word “Android” in both. According to Google guidelines, Mozilla should include the word “mobile” in the useragent string for mobile phones. Unfortunately, Mozilla is not compliant with Google’s guidelines. The omission of the word “mobile” is the reason why phones are erroneously identified as tablets.

Work Around: MobileESP works by finding clues to the device type in the useragent string. Because Mozilla uses the same exact string when installed on both phones and tablets, MobileESP cannot recognize which type of device the browser is installed on. Here are some options:

    1. Don’t worry about it too much right now. Let’s hope Mozilla does the right thing and implements Google’s guidelines on the words to include in browser useragent strings on Android.
    2. Err on the side of mobile phones. Modify the code library to always return “true” for Android Phones and always return “false” for Android Tablets. You would do this by looking for the words “gecko” and “firefox” in the useragent string in each respective detection method. On the plus side, phone-optimized sites aren’t too awful on tablets. On the minus side, we aren’t fond of hacks like this, so we won’t officially add this hack to the MobileESP baseline.
    3. Write to Mozilla. Ask them to follow Google’s guidelines for useragent string construction. (We’re not sure if the best feedback forum is through the MDN or the mobile project forum. In the Android Market, Mozilla provides this email address for feedback: FirefoxforAndroid@mozilla.com)
We’re sorry that there is no fix to this issue at the present time within the MobileESP code base. It’s really up to Mozilla to fix this one themselves.

Comments

Happy New Year!

Happy New Year, everyone!

It’s 2012 and MobileESP is a little over three years old! Let’s pause a moment and reflect upon where we’ve come…

Project founder Anthony Hand started MobileESP in late 2008 to help solve a very real need — a lightweight, easy to use/customize/install code library for web publishers that offered a unique rollup of mobile detection by OS, device category, and “tier.” Initially, the code was shared on Anthony’s freelance mobile UI design web site, Hand Interactive. Two years ago, following up on the growing usage & code ports (to Java and ASP.NET) by the community, Anthony formally launched the MobileESP web site.

Since then, the code library has grown significantly, with many updates, refinements, additional code ports (e.g., Ruby), the addition of tablet support, API lists, new documentation and samples, and more. Many thanks to everyone who has contributed in any way. MobileESP wouldn’t be where it is today without your support!

Who knows what the future may hold? Assuming the Mayans got it wrong and the world won’t end this year, we expect to see MobileESP integrated into a greater range of projects and web sites across the interwebs. If you have created a cool project of your own that incorporates MobileESP, please let Anthony know so we can put a post about it on the blog!

Warm regards for a healthy, prosperous, and fun New Year!

Comments (1)

« Previous entries Next Page » Next Page »