We have been piloting multi-platform mobile application development and payments in few client projects. Target platforms usually include iPhone, Android, Blackberry and Nokia Series 60. Also there are two notable usual cases which need to be specially handled
- Image uploads
- Payments for subscribed content
Sounds easy, right? Well it isn’t… Below are some notes for our due diligence work which you fellow developers might find interesting.
1. SDKs
Mobile phone vendors are jealously and don’t want to co-operate with each other. Building application which works in all handsets is major headache.
We found some reasonable candidates for cross-platform mobile development doing HTML and Javascript. HTML and Javascript pages are converted to native application using a wrapper technology (a.k.a. appaccelerator). Doing Flash Lite or Java ME can be pretty much forgotten nowadays as they won’t run on the most hyped platform, iPhone. Flash Lite has poor support for anything except content authoring due to primitive and limited APIs. Java ME provides horrible user experience.
(X)HTML is the only common language spoken by mobile phones. Thus, there has been a rise of “appaccelerators”, technologies which allow to create mobile applications with HTML(5) and Javascript.
- Phonegap: iPhone, Android, Blackberry and possibly S60 in the future. Pluses: BSD license, very active community. Minuses: bad documentation, difficult deployment process.
- Titanium: iPhone, Android. Pluses: Professional, Apache license. Minuses: Too tightly coupled with Appacclerator Inc. company.
- Rhomobile: iPhone, Android, Blackberry, S60, Windows Mobile. Pluses: Professional, tries to build open source community, the widest platform support. Minuses: Dual licensing and tightly coupled with Rhomobile Inc.
- Nokia Web-runtime: Nokia S60 and some other Symbian based phones. Pluses: Professional, good documentation. Minuses: Not open source, impossible to extend, Nokia has little interest to make this cross-platform, Nokia doesn’t like updating old models and web-runtime is useable only in the latest S60 5th edition models.
- Palm Pre supports web applications natively. However Palm Pre application business is still taking a shape.
All these wrap the browser component (WebKit) and provide some extra Javascript APIs when your web pages as executed under the application mode.
- Locationing
- Contacts
- SMS
- Client-side database
- and so on…
Rhomobile has little different use cases from the rest of the bunch as it provides client-side programming using Ruby and less focuses on Javascript/web applications.
2. Payments and in-application purchases
There are four major way to do mobile payments “inside” the application for bought content and subscriptions. The price tag on the application itself is left out on this discussion as the application stores themselves take care of it.
- Credit card
- SMS
- App Store payment (thus far Apple only)
- Direct operator payments – you have a service provider (Bango) which can directly charge items to the operator phone bill based on handset identification.
App Store payment is the most attractive as it provides the best end user experience. It allows you to use App Store payment mechanism inside the application. It is safe and no need to hassle with external payment providers. However, App Store payment can be used only for content consumed directly inside the application. You cannot use it e.g. for ordering a pizza. I think this might be related to recent EU legislation forbidding SMS payments for services not consumed in the phone itself.
SMS payment is ok for little payments. Operators take big cut of the revenue, generally 30% – 70% depending on the country. Short code fees usually start from 500€ set-up fee + 500€ / month. SMS cannot be often send as a background, but the user is presented the normal SMS editor which reduces the user experience somehow.
For credit card payments there exists several providers. Credit card has the cheapest entry fees, but the downside is that the user needs to have the credit card. This excludes teenager audience.
Direct operator payments are not very well supported yet globally. Most western operators support them. The operator also takes a big share and the fixed fee is pretty high.
My favorite payment provider thus far is Bango which provides credit card payment starting 9€ / mo. and scales up to worldwide SMS payments which cost few grannies per month.
In most cases, the payment experience will not be smooth. You need to open the phone main browser on the payment provider page to do the payment. This usually will close your own application. Rarely you can do the payment inside the application and support multiple platforms. After doing the payment most platforms allow you to close the browse and reopen your application using a special URL handler.
Wikipedia mobile payments page is also useful.
3. Image upload
<input type=”file”> won’t work on iPhone and some other platforms as those don’t have user browsable file system. Also the file dialog usually doens’t have image preview making it useless.
Phonegap has a branch which supports images picking using iPhone’s own gallery browser.
In any case, there is not yet cross-platform solution for this.
4. Future prospects
In some time-frame we will get rid of the need to wrap HTML applications natively as the web browser applications will support all HTML5 features without extensions and probably have some proprietary extensions for mobile specific features like SMS. We already have had some taste for this:
- The first taste of this is Mozilla’s Fennec mobile browser which has locationing support.
- iPhone’s Safari already supports client-side storage and CSS3.
- All phones have support for dial-in links. The format of the link may vary. DeviceAtlas is good place to hunt for this information.
- Nokia browser supports send SMS links
- Nokia browser supports downloadable map markers (to the map application of the phone itself)