Thursday, September 24, 2009

Metrics on Mobile Application downloads

Below are some interesting metrics by AdMob on mobile client application downloads by Android, iPod & iPhone users…

  • Android and iPhone users download approximately 10 new apps a month, while iPod touch owners download an average of 18 per month
  • More than 90 percent of Android and iPhone OS users browse and search for apps directly on their mobile device instead of their computer
  • Upgrading from the lite version was the top reason given when users were asked what drives them to purchase a paid app
  • iPhone and iPod touch users are twice as likely to purchase paid apps than Android users.
  • Users who regularly download paid apps spend approximately $9 on an average of five paid downloads per month
Well, looks like it is clear where the market is… With Novell extending the option of building iPhone apps using .NET, why wait??

Tuesday, September 15, 2009

Developing iPhone apps using .NET - MonoTouch

Here comes the wake up call for all .Net developers who thought that iPhone app development was not their cup of tea...
Novell is offering a a kit for developers to build Apple iPhone and iPod Touch business applications using Microsoft's .Net Framework instead of the Apple-designated C or Objective-C languages. The kit includes base class libraries for .NET, and managed libraries for native iPhone APIs. A cross-compiler renders code into software that can be submitted to the App Store, or distributed inside a closed network. Integration with Apple's XCode IDE enables devloeprs to test on the iPhone device or on the Apple iPhone Simulator.
One drawback that I see is that developers still need MAC. They cannot develop apps using their PC. Pre-requisites also include Apple's iPhone SDK and the requirement to be a part of Apple's iPhone Developer Program .
MonoTouch is available for purchase at http://monotouch.net/Store. Professional Edition costs $399, Enterprise edition (single developer) costs $999 and Enterprise edition (5 developers) costs $3999.
People who already tried out, please share your feedback. We would love to hear from you...

Tuesday, September 1, 2009

User Agent

Hundreds of devices…hundreds of variations…tens of browsers…plenty of device limitations. How do we develop a web application which works on all of them? How can we make out what are device specific settings before we render a web page. It’s a challenge. But, wait a minute. We have a savior. We have got User Agent.”

What is User Agent?

A User agent is a client application that communicates with the Web site or a server from a mobile phone using a Web browser.

When user requests a Web page, browser sends a number of headers to the server hosting the site that user is visiting. Each header contains details that help the server determine the best way to provide the information that user requested. The user-agent header identifies the application requesting the information from the server. The user-agent string can contain optional details called tokens, which must be enclosed in parentheses and vary among programs.

A sample user-agent string reported by BlackBerry 9630.

BlackBerry9630 /4.7.1.40 Profile/MIDP-2.0 Configuration/CLDC-1.1 VendorID/294

The string consists of the following fields:

Manufacture: Hardware [BlackBerry]
Model: model ID [9630]
Software version: software in the handset [4.7.1.40]
Profile: This data obtained from the Java Package [MIDP-2.0]
Configuration: Data obtained from the Java Package [CLDC-1.1]

User Agent Profile

User-Agent Profile is used for capturing wireless device information such as device capabilities and network setting via the mobile service network, so this information can be used by content providers to produce content in an appropriate format for specific devices. When a client visits a Web site or a server, a string is generally sent to identify the User-Agent Profile to the server. The intent of the User-Agent Profile is to capture more information about the User-Agent than can be described by the User-Agent header.

The communication flow of a User-Agent Profile is sent from the handset to the content server via the mobile service network and WAP proxy. The User-Agent Profile is sent from the handset as a URL referencing the User Agent Profile document storage location.

UAProf

In order to format the content and verify User-Agent capabilities, the content server can download the

User Agent Profile information from the URL provided by the handset.

Below is a sub-section of the User Agent Profile information for the BlackBerry 9630:

<prf:PointingResolution>Character</prf:PointingResolution>
<prf:PixelAspectRatio>1x1</prf:PixelAspectRatio>
<prf:ScreenSize>480x360</prf:ScreenSize>
<prf:ScreenSizeChar>48x24</prf:ScreenSizeChar>
<prf:SoundOutputCapable>Yes</prf:SoundOutputCapable>
<prf:StandardFontProportional>Yes</prf:StandardFontProportional>
<prf:TextInputCapable>Yes</prf:TextInputCapable>
<prf:Vendor>Research In Motion Ltd.</prf:Vendor>
<prf:VoiceInputCapable>Yes</prf:VoiceInputCapable>

This example shows that a content server can determine that voice is supported by the handset, and voice may be included in the content being sent to the device.

Conclusion

The User Agent is useful and easy to use in identifying the client device that is connecting to a server.

This User-Agent data can be used for:

  • Customizing content to suit the client device hardware capabilities (e.g. screen size).
  • For re-directing the client to another server or page if content does not suit client.
  • User Agent String ID can be used for tracking the number of times a client visits the site or a server in a given day or month.
  • Determine if a handset has a MIDP1.0 or MIDP2.0 Java Virtual Machine, therefore ensuring that only supported Java applications are delivered to the device via OTA.