When I started thinking of developing a web application for mobile, I came across a lot of programming languages and technologies (
BlackBerry /Apple IPhone having own development framework, supported by there company). However, they have limited to set of users and I would not want to pursue further in it.
After a bit of searching over internet, I found that most if not all of the offerings could be achieve by using
.Net. Although
it may not be that efficient as developing environment specific application that you can develop using its own development environment, but you will be able to reach larger audience (Read : people using window mobile based appliances).
As this scenario worked fine for me, I just thought of mentioning the stuff here.
Following is what I did:-
- To test whether the request is from mobile use the following method:
public static bool isMobileBrowser()
{
HttpContext context = HttpContext.Current;
if (context.Request.Browser.IsMobileDevice)
{
return true;
}
if (context.Request.ServerVariables["HTTP_X_WAP_PROFILE"] != null)
{
return true;
}
if (context.Request.ServerVariables["HTTP_ACCEPT"] != null &&
context.Request.ServerVariables["HTTP_ACCEPT"].ToLower().Contains("wap"))
{
return true;
}
if (context.Request.ServerVariables["HTTP_USER_AGENT"] != null)
{
string[] mobiles =
new[]
{
"midp", "j2me", "avant", "docomo",
"novarra", "palmos", "palmsource",
"240x320", "opwv", "chtml",
"pda", "windows ce", "mmp/",
"blackberry", "mib/", "symbian",
"wireless", "nokia", "hand", "mobi",
"phone", "cdm", "up.b", "audio",
"SIE-", "SEC-", "samsung", "HTC",
"mot-", "mitsu", "sagem", "sony"
, "alcatel", "lg", "eric", "vx",
"NEC", "philips", "mmm", "xx",
"panasonic", "sharp", "wap", "sch",
"rover", "pocket", "benq", "java",
"pt", "pg", "vox", "amoi",
"bird", "compal", "kg", "voda",
"sany", "kdd", "dbt", "sendo",
"sgh", "gradi", "jb", "dddi",
"moto", "iphone"
};
foreach (string s in mobiles)
{
if (context.Request.ServerVariables["HTTP_USER_AGENT"].
ToLower().Contains(s.ToLower()))
{
return true;
}
}
}
return false;
}
- Add meta proper meta tag for mobile, couple of tags with description can be found here[^] .
- Now once you have added meta tag it is time to design a page for mobile. Before getting into the designing the page, you need to understand that the width of mobile is not as the normal monitors. Therefore best is to specify width in % and not in pixels, even if you define the width in pixels make sure you don't break things.(To check this out test it in the simulators, although simulators don't give 100% accurate results, this is how you can test if you don't have actual device to test available all the time).
- The way each browser interprets your page is different so you have to be careful while writing code.but as long as you are writing in basic html and asp.net which of the browsers understand you don't have to worry about this. Normal(not designed for mobile) third party control can be messy as you may not be aware whether they support mobile plateform, results can be devastating.
- If you are using javascript then make sure it is enabled, and if not ask the user to enable it, better is to avoid javascript as it still takes fair portion of market.
- Some browsers support ECMAScript[^]so make sure you have included ECMAScript tag either on the page or config file. Once you have done this you have added lot of capability your app, without ECMAScript you black berry would not respond to
__doPostBack();
event and now you can even use controls like .Net tree view control and etc. - To display the page properly so that it occupies full width in
"Landscape Mode"
use following meta tag with "name="viewport" content="width=device-width,user-scalable=no""
This is enough for writing the mobile application now you can write the code and hope it works as expected in 90% of cases for the rest 10% of cases
google[
^] is our friend, using that you can find abundant material on internet:thumbsup:.