Today most enterprises want to build and deploy awesome mobile apps on multiple devices for their employees and customers. But when it comes to UI technology most are stumped. If I were to pick the most common question that we encounter in discussions with customers it would be, How do I build apps for all devices? (this is typically iOS and Android). Follow ups to that are: What UI should I choose? How can I build once and run anywhere? What skills should we ramp up on? The list is endless.
First up the UI choice needs to lend itself to your need and not the other way round. At Unvired our normal approach is to find out what that need is and then recommend the technology solution.
I want to deploy native apps with fantastic user experience, fast performance, hardware integration and so on.
If your need falls in this category you are typically looking to build native applications using the vendor’s prescribed technology. These are:
- iOS – Objective C (more recently Swift) using the XCode IDE from Apple
- Android – Java using the Eclipse IDE or the Android Studio
- Windows – C#/.Net using the Visual Studio IDE
All platforms come with their own set of challenges based on the OS version to support. This is more under control with Apple where you are usaully covered if you support the latest version and the one lower (for e.g. iOS 8.x and 7.x). Its more complicated with Android given the disparate devices and OS distribution and you should opt for the OS version with the most installed base for e.g Kitkat or 4.4. You are also well served if you use the standard APIs and do not depend on any vendor/device dependent APIs from Samsung, Sony etc.
I want to build apps once and deploy them on multiple devices.
This is the trickier questions as there are a few choices. This usually needs further qualification on what skills the company has or alternatively what they would prefer in addition to the end application’s requirements.
Web technology, hybrid apps that do not require any major hardware integration etc.
Native apps that can be deployed on any device
Xamarin (http://xamarin.com) is your best choice here (at least for now, more on that later). Mobile applications can be developed in C#/.Net and deployed on iOS, Android and Windows tablets. The code compiles into native applications and hence offer a native user experience. The User interface can be developed once for multiple devices using Xamarin Forms or alternatively separate UI for Android and iOS devices can be developed with common business logic.
So now that you know them all, what’s your choice?