The mobile phone has become an important platform for with simple application or web client application. Mobile apps design is different from traditional desktop or web application. In particular, a modern mobile phone remains a constrained environment in several important ways, which a mobile developer should pay attention to when implementing applications:
* Screen size - it's an obvious point but a mobile phone application has less screen real estate to play with than a desktop or netbook.
* Battery life - battery technology has not advanced as rapidly as the phone software capability.
* Connectivity - even today with ubiquitous mobile coverage, you cannot assume continuous connectivity.
* Bandwidth - the cost of data usage was a significant impediment in the early days of mobile internet but is less of an issue now with “all you can eat” tariffs.
* Memory - again this used to be a more significant issue in the past for mobile devices but with phones like the 32GB iPhone, it is much less so.
With these constraints in mind, GenGius provide some practical guidance for mobile application developers as outlined below:
1. Pay attention to user experience:
Successful mobile applications often do not look and feel like desktop applications. To be intuitive to a typical mobile user, who may not be comfortable with complex interfaces, a level of deep integration into the devices is essential. This means that important things should be easy and quick to do with as few key presses as possible. Investing in user studies to analyze how your user interacts with your application is not a common practice but it is well worth the cost if you can.
2. Avoid unnecessary activity on the device:
One way to do this is to leverage cloud computing/web service APIs as extensively as possible but integrating them into a mobile first user experience which means, among other things, using AJAX-style techniques to accommodate intermittent connectivity. In a phone, you're in a crowded boat along with everything else on the device so it's important to be aware of and seek to conserve use of system resources. As an example, continuously polling device location APIs can seriously impact battery life.
3. Understand the impact of your architecture:
Writing web applications in particular is a great way to prototype and sketch out the system architecture of your application. In many cases, the advantage of being able to develop more rapidly outweighs any performance issues introduced by coding in a higher level language. The prototyping stage presents a good opportunity to think about efficient data structures and algorithms which is a vital discipline to cultivate. One issue you may have with web applications is that it's not always clear what the APIs you are invoking are doing under the hood and in particular, if anything that you're doing in your application is processor intensive, so it is useful to profile your application's use of system resources. Generally, little of what you do in a mobile device application should be compute-bound and if it is, you may want to consider doing it backend.