• Global community
    • Language:
      • Deutsch
      • English
      • Español
      • Français
      • Português
  • 日本語コミュニティ
    Dedicated community for Japanese speakers
  • 한국 커뮤니티
    Dedicated community for Korean speakers
Exit
0

detect blackberry os version

Community Beginner ,
Oct 13, 2010 Oct 13, 2010

Copy link to clipboard

Copied

Does somebody know the code to detect the Blackberry version with coldfusion?

First, i have code to detect if its a blackberry :

<cfif findNoCase('BlackBerry', CGI.HTTP_USER_AGENT)>

And if its a blackberry i need to detect the version of the OS because our mobile site only support version 4.5.0.127 and up.  If the version is under that i have to redirect the user to another page to tell him that his OS version is not supported, they have to update there OS before using our mobile site.

Please HELP!!!

TOPICS
Advanced techniques

Views

1.5K

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Community Beginner ,
Oct 13, 2010 Oct 13, 2010

Copy link to clipboard

Copied

With JSP the code look like this and its working fine but i can't use JSP because our server do not support it.

if (request.getHeader("user-agent").matches("^BlackBerry[0-9]{0,6}.*") && !request.getHeader("user-agent").matches("^BlackBerry[0-9]{0,6}/(4\\.(5\\.(0\\.(1(2[7-9]|[3-9]{1}\\d{1})|[2-9]{1}\\d{2}){1}|[1-9]){1}|[6-9]|1[0-9]){1}|[5-9]|1[0-9]){1}.*") ) {

I can use javascript, but i go some syntax error :

<script language=javascript>
<!--
if((navigator.userAgent.match(/blackberry/i)) && !request.getHeader("user-agent").matches("^BlackBerry[0-9]{0,6}/(4\\.(5\\.(0\\.(1(2[7-9]|[3-9]{1}\\d{1})|[2-9]{1}\\d{2}){1}|[1-9]){1}|[6-9]|1[0-9]){1}|[5-9]|1[0-9]){1}.*") ) )

{
location.href='notcompatible.cfm';
}
-->
</script>

I would prefer to use coldfusion if possible because its our main language.

Thanks in advance for any help you can give to me

Votes

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
LEGEND ,
Oct 13, 2010 Oct 13, 2010

Copy link to clipboard

Copied

You might want to read this lot, detailing how CF implemented regexes, and which functions to use:

http://help.adobe.com/en_US/ColdFusion/9.0/Developing/WSc3ff6d0ea77859461172e0811cbec22c24-7a49.html

--

Adam

Votes

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Community Beginner ,
Oct 13, 2010 Oct 13, 2010

Copy link to clipboard

Copied

I already take a look at regular expression but I don't know how to code it to detect blackberry version....... do you know???

My CF code to detect if its a mobile looks like this, but how to detect the version of the BB oucccchhh :

cfif reFindNoCase("android|avantgo|blackberry|blazer|elaine|hiptop|ip(hone|od)|kindle|midp|mmp|mobile|o2|opera mini|palm( os)?|pda|plucker|pocket|psp|smartphone|symbian|treo|up\.(browser|link)|vodafone|wap|windows ce; (iemobile|ppc)|xiino",CGI.HTTP_USER_AGENT) GT 0 OR reFindNoCase("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\-",Left(CGI.HTTP_USER_AGENT,4)) GT 0>

Votes

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
LEGEND ,
Oct 13, 2010 Oct 13, 2010

Copy link to clipboard

Copied

Wow. I'm @ the pub (mate is off getting a pint, so being a geek & checking email) so am not gonna pore over that regex but it seems unnecessarily complicated. Don't try to match •every• client agent string, just match the pattern of the BlackBerry ones. One can use wild cards to match the sequences of chars that are irrelevant to what you need to extract: you don't need to match every possibility.

Here's my pint.

--

Adam

Votes

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Guide ,
Oct 14, 2010 Oct 14, 2010

Copy link to clipboard

Copied

Got to agree that looks unnecessarily complicated.

I don't know how the line would appear from a BlackBerry, but take for example a Firefox one:

<cfset Str = "User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-GB; rv:1.9.2.6) Gecko/20100625 Firefox/3.6.6" />

<cfif findNoCase("Firefox", Str) >

    <!--- At this point we know it's Firefox --->

    <!--- Strip out everything before the "Firefox" string to get the version --->

    <cfset FFVersion = ReReplaceNoCase(Str, ".*Firefox\/", "") />

    <!--- FFVersion = "3.6.6" --->

    <cfset FFMajor = listFirst(FFVersion, '.') /> <!--- 3 --->

    <cfset FFMinor = listGetAt(FFVersion, 2, '.') /> <!--- 6 --->

    <cfset FFRelease = listLast(FFVersion, '.') /> <!--- 6 --->

</cfif>

At this point, you've now got variables in hand on which to perform all your business logic as to what versions are supported, however you choose to do that. You might want to wrap it all in a try/catch in case the format changes in future releases of the BB browser.

It's 8:06am, and my pint still isn't here yet. Jealous.

Votes

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
LEGEND ,
Oct 14, 2010 Oct 14, 2010

Copy link to clipboard

Copied

It's 8:06am, and my pint still isn't here yet. Jealous.

Strangely, the appeal of having a pint has now somewhat diminished for me this morning.  I can't quite put my finger on what it might be.

That'll learn me for going out on a school night.

--

Adam

Votes

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Guide ,
Oct 14, 2010 Oct 14, 2010

Copy link to clipboard

Copied

Rubbish, hair of the dog an' all that The best thing about drinking as soon as you get into the office is you've got eight hours to sober up before you have to drive home.

Votes

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
LEGEND ,
Oct 14, 2010 Oct 14, 2010

Copy link to clipboard

Copied

Surely you mean driving to the pub?

--

Adam

Votes

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Community Beginner ,
Oct 14, 2010 Oct 14, 2010

Copy link to clipboard

Copied

LATEST

Here is what i finaly use.. quite simple........

<cfset a = '#mid(CGI.http_user_agent,16,3)#'>

<cfif #a# LTE 4.5>

Not supported

</cfif>

Forget about regular expression and don't drink and drive..............

Votes

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Resources
Documentation