Titanium Development - Pros and Cons
Date: Fri, 02/10/2012 - 9:52am
Back in September we first discussed some differences between Ansca Mobile's Corona and Titanium, built by Appcelerator. Today we will focus on our experiences with Titanium, both positive and negative.
The Advantages of Titanium
Once you get the hang of the Titanium API, you can pretty quickly develop a simple mobile app without any knowledge of Objective-C or Java, and compile your app to both iOS and Android devices. If all you need is a simple list of data that gets pulled from a JSON feed and is displayed in a table view, then you're in luck. Or if you want to build an app that has a few tabs that open up some webviews, it's a cinch.
There are a lot of cheap and even free modules that you can download for Titanium, including Urban Airship for push notifications, analytics modules for tracking user events, and even barcode scanners. So that means if you want your app to have push notifications, there are very few steps involved, which is a big bonus.
The Titanium framework also compiles Javascript to native code. This is wonderful for simple apps and removes the headache of retain/release counts of objects in Objective-C. For a Flash or HTML developer, there is a pretty small learning curve compared to learning Objective-C and trying to make sense of a completely different type of software language.
Where Titanium is Lacking
Titanium certainly has its share of shortcomings. One of the most troublesome issues is the poor documentation of the Titanium API. On the Appcelerator website, the Titanium documentation is listed, but often leaves out certain properties or functions. There are far too few examples, and developers have to rely on the example from Appcelerator KitchenSink example from Appcelerator. The documentation also doesn't clearly define the differences in the Titanium SDKs of 1.6, 1.7 and 1.8. Some methods and properties are depreciated, but for which SDK? Fortunately there is an unofficial documentation website for 1.8 located at tidocs.com, which appears to be much better.
Another problem is the community message board, where sometimes you can quickly find answers to problems, and other times you can only find solutions from 2 years ago which no longer apply to the current SDK. Quite often you will find a message that says "Any updates?" and find no answers from the Appcelerator team. Yes, we know that Titanium is free software and we can't expect free software to have amazing support. Titanium does offer paid support, which so far we've been fortunate enough not to need.
Titanium is great for building tab navigation apps. But what if you dont want to have tabs in your app? Well, the options are to hide the tab menu, or to write a completely custom navigation system like the developers who created Tweentanium. It would be much nicer if Titanium supported more options for developing custom navigation in your app instead of forcing you to use a tab navigation architecture.
When developing mobile applications that are very custom in design, Titanium starts to lose its luster. For example, we are currently developing an app that uses a custom font "Rockwell Bold". If we were building the app natively, it wouldn't be difficult. But with Titanium, it seems that the only way to get the font to work is to perform a "hack" where you write a custom Info.plist file which adds the fonts to the iOS application. There should be better support for custom fonts, because the official documentation simply doesn't work as expected.
What if you want to remove the dropshadow and bounce effect on a webview? Titanium doesn't offer a solution to this in the API so we were forced to edit the TiUIWebView.m Obj-c class in the SDK and set 'bounces' to NO. When you want to customize the look and feel of a Titanium app, you often run into issues like this.
Conclusion
Developing mobile apps in Titanium is manageable, but it certainly isn't a dream. For developing large scale applications, like a social media app or an app that is highly stylized, we would recommend building the application in Xcode instead of Titanium. Plus, you'll get to learn a bit of Objective-C along the way.












