CREATING A CROSS-PLATFORM MOBILE APP v2 Thursday, January 29, 2015 By 3chillies CREATING A CROSS-PLATFORM MOBILE APP So, you want to develop a new and amazing mobile app but you don’t have a clue where to start. Well, you may have already started your research by way of reading web pages, comments, and blog posts, and if that is the case the chances are that you've stumbled upon jargon such as “native”, “hybrid”, and “Xamarin”. If you don’t understand the terminology, it can feel as though you’ve hit a brick wall before you’ve even started, and it's particularly important to understand these 3 keywords because one of them will form the foundation of your app development process! Fear not, we have taken the time to explain these keywords below... NATIVE APPS A Native app is an app that has been developed for a specific platform: One native app for Windows Phone, another for Android, and a different one for iOS, etc. A native app provides a much better end-user experience. It means better performance; full access to all the hardware capabilities (maps, GPS, accelerometer, front/rear cameras, wallet, push notifications); and a different user interface for each platform, which matches the “look & feel” of each platform, resulting in an intuitive and user-friendly app for the final users. However, native apps have one big drawback: Each platform requires the app to be written in a unique coding language, so you'll need a fairly large budget if you want to cater for Apple, Android and Windows. WEB APPS Thanks to advancements in HTML, CSS, JavaScript and responsive design, it is now possible to create a “mobile website” which is optimised especially for touch devices and small screens, like phones and tablets. Compared to normal apps, Web apps have a much lower cost per platform, since the developer only writes the app once, and it runs in every device. Sound great doesn’t it? Hold your horses! Let’s get one thing straight, a “Web app” is not a “real app”, it’s essentially just a website optimized for smartphones, so it’s not possible to create a rich UI/UX (user interface / user experience design) on the client side, and it’s not possible to access the device's hardware like the camera, accelerometer, push notifications, wallet, speech assistant, and its not possible to provide a nice interface, such as wrapping the app up in a "live tile". HYBRID APPS Hybrid Apps sit somewhere between Native apps and Web apps. And whilst this sounds ideal, these apps are constructed of the best and worst of both worlds. The developer will only need to create one app, and that app will run in all platforms. Usually, this app is written using web technologies like HTML5, CSS, and JavaScript, much like a web app, but they are given a “native touch” using a framework that provides access to hardware components like the camera, push notifications, local databases, and other native components which is great. However, this approach also has disadvantages: the user interface is commonly kept the same across all platforms; and the app runs inside a container, making it run slower than a native app. These two drawbacks alone usually mean that these apps don’t match the user’s expectation. Mark Zuckerberg said that it was a mistake follow this approach with the Facebook app. Whilst we don’t condone it, if you do want to follow this route, the most famous hybrid framework is PhoneGap/Apache Cordova, but there are more alternatives like AppBuilder, Appcelerator or MoSync. AND WHERE DOES XAMARIN FIT IN? Xamarin is the new rock star in the mobile development circle. Some people call it a hybrid app, whilst others call it a native app. Xamarin provides a new, interesting approach to app creation. It is a mechanism [written in the programming language C#] used to develop native apps simultaneously, meaning that the developer can use a large percentage of the same code for different platforms. Apps for each platform would otherwise be written in different programming languages: Java (for Android) and ObjectiveC/Swift (for iOS). Whilst Xamarin changes the programming language, it doesn’t change the classes, features, capabilities or the performance. Xamarin isn’t an all-encompassing silver-bullet solution to cross-platform mobile development: A specific user interface must also be created for each platform along with some additional “platform-specific” logic too. So the main advantage of Xamarin is its ability to create reusable code, and that’s hugely important: In the hands of a trained developer, currently up to 80% of the code could be reused across different platforms! We should mention that in iOS, this percentage is reduced to about 60%-70%, but who would turn their nose up to a saving of 60-70% of time and money in the development phase?! WHAT SHOULD I CHOOSE? The best approach is to provide a native app for each platform, but it's understandable that factors like deadlines, budget, and the requirement to have highly trained developers for each platform might force you to take a different approach. Here at 3Chillies, we use Xamarin. It means that we can develop the bulk of an app for each platform, and give each app a final touch, so that it matches the users “look & feel” expectations for their device. Using Xamarin means that 3chillies can simultaneously create full-featured apps for Android, iOS/iPad and Windows/Windows Phone, reducing the time and costs involved in the development cycle.