The tough competition in the market of mobile platforms no longer allows the production of applications targeted for a single operating system, which confronts developers with a difficult choice. They must choose between developing native applications for each OS (in their native programming languages ​​for each of them), developing as a website for mobile devices on HTML5, or creating applications using cross-platform development frameworks.
In this article, we want to tell the story of creating a cross-platform mobile solution for airports, as well as provide interesting statistical data.
Our first client was the Kiev Boryspil International Airport. The feature of the developed product was that it was adapted to the corporate style of the customer and successfully published in stores. Interestingly, Kiev Boryspil Airport became the first in Ukraine owner of a modern mobile application. However, it is worth starting from the beginning.
The passenger airline industry is constantly evolving, thanks to which newer technologies are being introduced to increase passenger comfort. All over the world, the presence of a mobile application at airports has already become something for granted, but, oddly enough, this practice is not common in Ukraine. That is why we had an idea to create a box solution that can easily interact with airport information systems and adapt to customer requirements.
')
The main functionality of the system should include: online scoreboard of flights, user push notifications when changes to flights of interest to him, as well as popularization of other airport services (conference rooms, VIP service, taxi, hotels, shops, etc.).
Development of the client part of the solution
Given the extensive experience of our employees in creating applications in C #, we have chosen the approach of developing the client side of the application using the
Xamarin framework. All work was done in Visual Studio. And if for Windows phone and Windows 8, development in Visual Studio is the default tool, then for Android and iOS this possibility became available thanks to Xamarin (this requires a business license).
One of the main tasks assigned to the system was to create the user experience of working online. The user must fully trust the displayed data, not thinking about the fact that they are periodically updated. In addition, when designing the system, it was decided to create a single client-side core for all OSs, in which all the business logic will be implemented.
In contrast to a single implementation of client business logic for each platform, it was necessary to create its own graphical interface (code) that would be responsible for the appearance of the application. We created such an interface separately for each platform in order to use graphical effects native to each OS.
Xamarin allows you to use standard user interface design tools and its elements for iOS and Android.
It is worth noting that in any case a Mac is required to develop a solution for iOS. In our case, the Mac was required for two reasons: firstly, to debug applications, you need an iPhone / iPad emulator, which is available only on Mac; secondly, this operating system was necessary for project auto-assembly.
Development of the server part of the solution
Given the need to universalize the application, when designing, we came to the conclusion that the best solution would be to host the server in the cloud. As a cloud platform, a solution from Microsoft was chosen - Windows Azure.
Working with him was very convenient and quite easy. From the positive aspects of working with Azure, we want to highlight the following:
1) Convenient system deployment in the cloudDeploying applications in Windows Azure can be done in two ways - using the Windows Azure portal or the Service Management API (SMAPI).
2) Convenient mechanism for test deploymentThere are two deployment cells — test (staging) and combat (production). Test deployment allows you to test your application in a Windows Azure environment before deploying to a combat environment. In turn, switching between staging and production is done in one click.
Since in Windows Azure the size of the payment depends on the CPU time spent, it is necessary to remove the staging deployment to optimize costs. If you just click the “Stop” button in the portal, the service will become unavailable, but the processor time will be spent.
It is worth noting that in our case, the savings amounted to more than $ 100 per month.
As a fly in the ointment of Microsoft’s honey, we’ll say that Windows Azure’s inconvenient work with logs. Of course, you can use paid solutions for logs, since working with their Table Storage is very inconvenient.
Features of the server part of the system
For the transfer of data from the airport system to our application, we chose perhaps not the most convenient and secure method, but, in turn, the fastest and less costly for the customer is the transfer of xml files via an ftp server. For example, the airport with a given frequency generates an xml-file with information about all flights related to passenger traffic and uploads it to an ftp-server.
Pros:
- simplicity and speed of implementation
- reducing the amount of logic from the airport, which reduces the likelihood of errors in the data
- reducing the number and duration of approvals.
Minuses:
- impossibility of preventing all airport failures
- FTP protocol security
- since Windows Azure lacks a service like FTP, the ftp server should be deployed at the customer
- The system that receives data from FTP has a dynamic IP address, so that access to information should be limited by the Azure cloud address pool or by the domain name of the service.
It is also worth paying attention to sending push-notifications to users. Among the features it is necessary to name the following:
- push notification services do not guarantee delivery to the client, and therefore, if the Internet channel is bad, there is a possibility that messages will be lost
- the order of delivery of notifications does not depend on the order of sending
- In the Wi-Fi network, it is necessary to open special ports for the delivery of push notifications (in the event that the security policy is built on the principle of "deny everything and allow only the necessary").
Features of the publication
Airport Kiev Boryspil wanted to get an application available on all popular smartphones (iOS, Android, Windows phone), as well as on tablets running Windows 8.
Windows phone
We had no previous experience of publishing applications in Microsoft stores, however, the publication was successful. After just a few days, the application was already available in the store.
iOS
Publication in the AppStore also passed without difficulty, but the passage of all stages took a week.
Android
Publishing in the GooglePlay store was the easiest and quickest. After filling in all the descriptive attributes and attaching the package (apk-file), the application was assigned the status "Published". In the "New" section and in the search for a store, it became available within a few hours. Most likely, the delay is associated with updating the data of the store itself.
Windows 8
Inspired by the simplicity of publishing in the Windows phone store, we expected the same thing about working with Windows 8. However, there were some difficulties with the publication.
The first system failure we received with the wording:
- Your application does not comply with requirement 4.1. (If the application has network capabilities, it must contain a privacy statement). Read more
As it turned out, a mandatory condition for any application with Internet access is the existence of a privacy policy not only in the store, but also in the application settings.
- Your application does not comply with requirement 6.8. (You must provide localized screenshots of the application for each supported language). Read more
This message was unexpected, since the screenshots were made in all the required languages. However, we assume that during the layout one of the screenshots turned out to be 1 pixel less than necessary and as a result was changed in the graphic editor. When re-publishing the error has been fixed.
A second waiver was received with the wording:
- Your application does not comply with requirement 2.3 (The application should not display advertisements using its own description, tiles, notifications, application panels, or after quickly swiping from the edge). Read more
This result surprised us greatly, since the application was completely without advertising. Without any changes, we sent it for re-certification. As a result, its application has passed.
Pros and cons of the selected approaches
The approach chosen, like everything else in this world, has both advantages and disadvantages. Among the advantages I would especially like to highlight the following:
- the decision to implement a cross-platform core on Xamarin allowed to significantly reduce the time to develop and test the business logic of the application
- the decision to deploy the server part in the Windows Azure cloud made it possible to:
- simplify the administration task
- easily scale the solution (control the number of processor cores, RAM, and virtual machines)
- quickly start development using available services.
The disadvantages of the chosen approach are:
- the application turned out quite heavy (about 19 MB), since Xamarin increased its size (iOS and Android) - this caused negative feedback from Android users
- Xamarin has some bugs that need to be reported (they fix them, but not immediately).
For comparison, the size of the applications is the following:
- Android - 19 MB
- iOS - 19 MB
- Windows phone - 2 MB
- Windows 8 - 4.5 MB.
Some statistics on the first implementation
The application "Kiev Boryspil" is a niche application. Its target audience is airport passengers, as well as people meeting and seeing them off.
It is necessary to take into account that the advertising promotion of the application was not performed. The airport's marketing department only published two review articles in the media. At the time of this writing, there was not an advertisement on the airport, or even a scrolling text on the screens.
User loyalty
On average, daily among all users:

- 8.3% - new users
- 91.7% - users who have previously started the system.
Average number of installations per day

- iOS - 40 / day
- Android - 20 / day
- Windows phone - 18 / day
- Windows 8 - 20 / day.
Of course, we are a little surprised by such accuracy for all OSs, since the
published data of the analytical company Strategy Analytics suggests that there are several times fewer devices running Windows.
Number of installations during marketing exposure

The graph clearly shows that publication in the media affects the download of the application for about a month. At its peak, there were about 1,000 installations per day for iOS only.
Ratings and reviews
Statistics on these indicators for us was a complete surprise:
- iOS - for all the time about 20 comments and ratings were left (basically all 5 star ratings)
- Android users of this operating system were the most picky. Part of the negative reviews we received as a result of the lack of support for tablets, and some because of the size of the application. Note that iOS users were absolutely not bothered by the size of the application.
- Windows phone - only 20 reviews with an average rating of 4+
- Windows 8 - 80 ratings were given with reviews and all by 5 stars. And despite the fact that the application is published in the store for only two months, and iOS is already more than six months.
Man-hours for system implementation and customization
We know that all developers are interested in how many man-hours were spent on the project. However, this data is almost never shared.
Task | Labor (hours) | Completed work |
---|
Server part | 420 | Design and Development |
Client core | 300 | Design and Development |
Graphical interface | | |
Android | 200 | UI development |
iOS | 140 | UI development |
Windows 8 | 160 | UI development |
Windows phone | 180 | UI development |
Design creation | 100 | Creating a layout |
Administration | 150 | Configuring Infrastructure, Autobuild, and Deploying the Solution to the Cloud |
Analytics | 350 | Designing usability of the system and UI, writing specifications, communication with the customer and IT specialists of the customer |
Testing | 300 | Testing the application at all stages of development |
Some may say that the costs were too high and could be reduced, but the apparent ease of the application is in fact deceptive. It was done a very difficult, but at the same time to the smallest detail thoughtful work. In particular, during this time many functions have been implemented, such as, for example: offline work, data caching, content management system (all data that is displayed in the application is loaded from the server and cached on the client) and more. In addition, a lot of functionality was implemented that is critical for the system, although at first glance it may not be noticeable.
The result of the large-scale work was the creation of a unique high-quality solution, which is also easy to adapt to all the requirements and wishes of the customer. But the most important thing is the possibility of rapid expansion of the system (both its functionality and user load).
PS We will be grateful for your answers to such questions:
- What motivates Windows 8 users to leave so many good reviews and ratings?
- Why, despite the difference in the number of devices for different operating systems, the daily number of installations is on average almost the same for all platforms?