Best Practices in Designing Mobile Applications
Date: Monday , August 02, 2010
Last few years have seen a new developer community bursting on the horizon with development of applications happening over multiple types of mobile platforms. Most popular ones are Apple, Android, Blackberry and Symbian. WebOS, badaOS (Samsungs own OS ), Qualcomm’s Brew MP, Nokia’s Maemo and Qt Mobile.
After iPhone was launched, it has changed the overall paradigm for developers. iPhone Provided a very sleek and consistent user interface, with ease of use.
Types of Mobile Applications:
Starting with PIM (Personal Information Managers), Active Sync type of applications, the mobile development has matured to provide push emails, social media networking apps out of the box. New applications are more complex than the applications which are developed for PCs. These applications have controls and sensors such as accelerometer( direction and acceleration –pedometer, touch, voice, GPS (Geo location) Compass( to know user navigation system), proximity sensing, RFID (NFC phones) and cameras. No one gets to see these applications using complex algorithms in really quick execution times.
Some of the applications are preinstalled, prebuilt into the device and billed. Specialist teams build these applications and device makers choose to ship them as ‘Value proposition’ right out of the box. (Examples can be PDF reader or a Facebook client)
Devices can range from phones, cameraphones to Netbooks and iPad or HP’ slate. Broadly these applications can be divided into various categories:
a. Native applications ( written specifically using device based software tools )
b. Subclassified into graphics( games), interactive, transactional, data centric (stock management),banking (secure) and enterprise( extension of IT applications )
d. SMS / USSD based applications ( device independent – messaging protocol based applications )
NewGen applications ( Widgets, portable, auto update and mobile games with extensive creativity )
Some of the key concerns from enterprise clients are -
a. How do we provision mobile solution within an enterprise?
b. Can we have a roll out plan, which also includes audit and usage footprint?
c. Can we have a single code or application design, which can run over 99 percent of devices in the market place?
d. How do we upgrade the current version automatically?
e. How do we handle roaming customers being able to access enterprise systems?
f. What will happen to personal information on device, if the device is lost?
Challenges faced by Development Teams:
While building the applications, the users have the choice of devices and various operating systems which a device may come preinstalled with – such as Symbian S-60, S40, UIQ, RIM V 4.5, i-phone OS3.2, Android 2.1 etc.
Each type of device can differ with screen size, resolution, amount of memory available, processor speed, add-on, jvm installed, browser type and additional sensors like GPS, accelerometer, proximity, Bluetooth etc.
There are different protocols with service providers such as GSM, GPRS, CDMA, WCDMA, 3G-EDGE, HSDPA etc.
The first consideration for any designer would be safety of personal data of users, local data storage, security, private information storage in any application.
Mobile devices have limited battery to perform tasks which can also be a good consideration for device application in design, that user gets warning on low battery and some of the processes need not be running, if the device battery is not having enough power.
Quick to close
Designing application for i-phone can have additional challenges such as only one application can run over the devices (uptoOS3.2) as active applications. When there is a call, the designer should make sure that he quickly saves the data and closes his operation to make sure that call gets priority. Home button in i-Phone or exit in other devices can also make ‘force quit’ type of operations. Special care needs to be taken within applications to release resources when such an event triggers.
Rich Media –No flash content
When we see websites designer building applications which has rich flash content, we feel similar content should be available over the mobile device as well. In reality flash content, flex and other technologies are not popular with mobile app developers. These technologies were designed for mouse and key click type of controls. With multi touch kind of actions on touch screens, the application layers like Flash does not know which event to trigger.
Hence users have to build the applications using java scripts and native controls used for multitouch; swipe and other gesture controls like shake the phone to change the song.
Most of the earlier devices had limited support for different types of media being played within their browsers. Browsers based on webkit standard are becoming standard for newgeneration phones.
Good designers to make the site or native applications work on every device will need to detect the device type and plan the design/deployment of different binaries.
Some of these action means the video file formats supported by device needs to be known such as 3GP, mp4, DivX and mov, m4v ( quick time based ). iPad and iPhones support streaming media type of files like mediacclip.flv, which is popular on you tube.
Some of the commonly assumed resources in PC based applications such as memory and network connections are not available in the mobile devices.
Mobile devices may have 3-4 types of network connections at their disposal
Based on nature of mobile user’s movement, the network can disconnect anytime. The application has to consider this and should be designed to have graceful exit anytime. Connection state should be saved so that when you reconnect, the application can resume.
You may even add programs to check the signal strength, to minimize the impact and take preventive actions.
Compress the data, if this reduces the storage needs. Connection managers are required to be part of the OS as well as on the target hosts who supply large amount of data. Resume from last point of download is recommended way to implement in data sync operations, so that precious bandwidth is saved.
Each of the mobile device development normally requires a different code to be produced. Users will need to register as developers, download development SDK’s, learn device specific functions and build native applications.
Most of the platforms would need j2me and C++ knowledge. Open source based tools such as Eclipse 3.5, Net beans 6.0 can be installed to build these applications. Some cross platform tools emerging in the market are Rhomobile, Phonegap, Appcelerator ( Titanium ). These tools are still evolving to establish a common framework.
It helps to have middleware built to support multiple devices and their specific function management.
Best Practices in Design:
1. Effective use of memory/ display real estate
2. Less horizontal scrolling
3. Use of XHTML/CSS/ REST ful web service architecture ( smaller data feeds )
4. Network error detection
5. No flash/animation
6. Avoid login/ logouts
7. Auto detect devices
8. Use smaller images
9. No pop up windows,
10. No DHTML tags/scripts
The author is Practice Head, Mobile , Mphasis