Recently, I’ve started working on a small side-project with one of my friends and this project requires a mobile app. Originally the idea was to do a cross platform mobile app using Xamarin (the reason for choosing Xamarin will be discussed later), but quickly we realized that this would not be feasible.
Firstly, let’s take a look at the market share of phones running, Android, iOS and Windows. You can find the graph full here: https://www.statista.com/statistics/266136/global-market-share-held-by-smartphone-operating-systems/. Below is a quick snip of the graph for quick reference to the discussion further below.
When you mouse over the last quarter of last year (2016) you’ll notice that Windows is sitting at a mere 0.3%. Targeting a mobile app for such a small portion of users does not seem feasible at all (esp. for a small side-project).
When you look at the Android vs. iOS percentages, these are at least a little reasonable with iOS sitting at 17.9% and Android sitting at a staggering 81.7%.
Cross platform considerations
We had then considered, “let’s make an iOS and Android app, using Xamarin”. Since Xamarin gives us easy tools to create both apps, however, there was one small problem. After creating the Xamarin cross platform project, we came to understand that creating iOS apps, requires a Mac. This is apparently due to some licensing restrictions from Apple that require all iOS apps to be built and compiled on Mac computers.
Needless to say, we decided to scrap the notation of creating any cross platform application, since we do not have funding to purchase a Mac in order to develop an app for iOS. This is an unfortunate restriction that exists, however my friend and I both have Android phones which made the decision that much easier.
I will leave you with the following food for thought. Considering that the percentage of user’s using smart phones is sitting above 80% for Android, how much visibility/usage would you lose if you solely developed for Android? My advice would be – if you do not have a Mac, do not worry about creating an iOS app at all, since the number of users that you will be losing will have little impact on your overall success. If however, you do have a Mac, and the extra time to invest in simply creating a native UI for the iOS app, go ahead and create an iOS app too. In closing though, I do not believe that it is worth any effort to create a Windows phone app, since the percentage is extremely small.
The video below was a great introduction into creating cross platform mobile apps using Xamarin and the link provided for the video jumps straight to a section where the speaker explains some aspects about mobile development.
One of the key points that stood out is that Xamarin offers native performance for the apps that you create. This is because it hooks into the native API and is able to build the app as a native app for the platform.
This is different from other tools (e.g. ionic) out there which he describes as a “hybrid” approach . With these tools, the app is usually a general purpose browser that runs your app. This gives no native performance and does not give access to native APIs.
For the above mentioned reasons, Xamarin is the best tool to create an mobile app – if you are looking to code the app in a C# environment. If you are a Java developer looking to create an Android app, Android Studio might be more applicable for you.