The time spent by a person on the screen of his mobile is increasingly important. According to many studies, people aged 16-30 are concentrated on their mobile phone for more than two hours a day. So today, it is necessary for every company to integrate mobile into its digital strategy.

To integrate mobile, there are 3 approaches:

  • Develop a native application,
  • Develop a hybrid application,
  • Develop a web application.

The native application

A native application is a “software” that you download and install on your smartphone or tablet via application platforms (Apple Store, Google Play, Marketplace). This application is developed for one of the operating systems used by smartphones or tablets (Android for Google, IOS for iPhone or Windows phone for Microsoft). It is developed with a language specific to different operating systems (java type for Android, Objective-C or Swift for iOS and C# for Windows Phone).

If you want your mobile application to be available on both the main Apple Store and Google Play platforms, you will need to develop two separate applications. One application per operating system is required to ensure that the interfaces and usages are respected. Which implies a substantial budget.

Despite the extra cost of development, developing a native application will allow you to integrate more easily the features of your phone, including GPS and camera. In addition, the fact that the application is installed on your phone, you will gain performance for the user. The native application allows using the memory of the smartphone. Compared to other applications, the native application is more efficient in terms of functionality, quality, and resolution.

Web application

A web application (or web app), is a mobile application executable via the internet browser of your smartphone. It is like “a website specifically designed for your mobile”. It does not have to be downloaded. This application is developed with classic web technologies, such as HTML5, CSS3 or javascript. To access these applications, the user will necessarily have to go through a web browser. The web application is accessible via all smartphones whatever their brand and their operating system. You only have to develop a single format, unlike native applications. This will save you development costs.

Attention, since its development does not take into account the model of the smartphone or the tablet or the operating system, it may not be ergonomic. If the application you want to develop is complex and has several features, a web app will take a long time to load because it does not use the phone’s memory so it may discourage your user.

Hybrid application

The development of a hybrid application is a mix of the first two solutions: native applications and web applications. It combines HTML5 elements as a web application and elements of the native application. Hybrid application development relies on solutions like PhoneGap / Cordova, Ionic, etc … These solutions make it possible to create an independent application from web pages. It allows to use the functions of the phone and it is downloadable on Apple store platforms, Google Play.

The hybrid development allows mutual development on the two main operating systems, they can be reused on other platforms.

Hybrid development will certainly save you time and optimize your development costs. But if they are a good alternative in terms of costs, they remain less powerful than native applications because it is based on WebViews.

Conclusions

Native application

– Advantages:

1 – Direct accessibility of the application in offline mode

2 – Best user experience

3 – Best SEO had to downloads on platforms like the App Store or the Play Store

– Disadvantages:

1 – Not the same application on different platforms (Apple, Android)

2- Cost of significant development

3 – Compatibility issue after updates

Xamarin

Xamarin is an American company created in 2011 and specialized in the development of tools dedicated to mobile development. The team is behind the Mono project, originally intended to implement the .NET framework on UNIX systems. Very quickly, Mono evolved to be worn on mobile phones and continued to gain momentum.

Today, Xamarin for mobile is more often known as Xamarin. Xamarin comes with a full IDE named Xamarin Studio, but it is also possible to develop in Visual Studio what makes this technology very attractive to Microsoft developers. More interestingly, applications can be developed in C # language with the .NET framework.

In 2016, Microsoft bought Xamarin and decided to make the technology free and integrated with Visual Studio. Today Xamarin is an environment that is very much put forward by Microsoft. The latter continues to evolve through regular updates and powerful tools that come with it, thus improving the comfort of developers.

Using this Framework, we can develop native mobile apps that run on different mobile operating systems (Android, iOS, Universal Windows UWP) using a single XAML shared code for creating GUIs and C # for event management and processing.

Xamarin is the only way to create true native and multiplatform applications, without having to use IDEs or platform languages.

This is the .NET Framework in its version “Mono” itself adapted to Android (MonoDroid) and iOS (MonoTouch). Xamarin.Forms are just a translation layer from UI to native UIs and exploit Xamarin.Droid and Xamarin.iOS (the new names of MonoDroid and MonoTouch).

When creating a Xamarin project, we will have at least two projects and at most 6 projects in our solution: these projects are the portable project that will contain the shared code of our application, the Android project, the iOS project, the Windows 8.1 project, the Universal Windows Platform (UWP) project, and the Windows Phone 8.1 project.

What is available

With Xamarin Forms, we have different types of pages, containers (layouts), controls, etc …

We can also apply the MVVM design pattern (Model, View, ViewModel) and possibly bidirectional data binding, as well as a common animation and navigation management API.

Finally, we will have access to the different native APIs of each target system with CustomRenderers and DependencyServices.