The LiveHelpNow application was written for Android and iOS utilizing Xamarin and a 100% native API. This method produced the same results that would have been provided by writing in Objective-C/Swift for iOS and Android/Kotlin for Android.
One of the biggest advantages of using Xamarin is that it enables code sharing among all platforms (Android and iOS). The source code for applications is written in .NET C# (for which there is a lot of common code). The average amount of code sharing can be as high as 70 percent, speeding up the development process.
The application’s user interface has a native look on each platform, proving it is impossible to distinguish a UI created with Xamarin from one created with tools dedicated to each platform (like Xcode or Android Studio). Furthermore, Xamarin allows native libraries to be easily linked. This way developers were able to use any library without having to worry about its compatibility.
The foundation of this project relied on MvvmCross, the most robust Xamarin framework available. MvvmCross made it possible to share business logic related elements and even some platform specific ones, like navigation flow. To facilitate communication with HTTP’s REST API, we used Refit, a library that made it possible to extract network specific code where possible. This choice resulted in a quick and clean API communication module. In addition, in order to integrate with LiveHelpNow!’s Core service (a.k.a. real-time live chat), we used a Fenix library and implemented socket integration.
Aside from code, we also integrated other various services. For example, we used OneSignal, which helped us to manage PUSH Notifications and AppCenter Diagnostics. AppCenter Diagnostics prevent the application from crashing and log every event that occurs within the app. This allowed our team to diagnose and fix bugs quickly. Thanks to extended logs, we were even able to proactively resolve issues in REST API, a feat that would not be possible otherwise.
Lastly, for our development process, we always use continuous integration. This means that instead of manually building this app, we automated the project flow with Bitrise. Typically, releasing a new version of a mobile app across multiple platforms can take up to an hour. When we finished implementing a new feature or a hotfix for LiveHelpNow!, our developers merged their code into stage branches, resulting in a release of staging builds. When those builds passed QA testing, our developers merged their code into the production branch. This automatically uploaded a new version of the app to Google Play and the Apple Store, speeding up release time.