The latest version of the app (which will replace the current app that is in the app stores) is nearing completion. We are into user-acceptance with key stake-holders from around the business. The journey from beginning the app several months ago, to now, has involved a great deal of learning. Although we had an existing app on which to base our development efforts, that’s where the similarities ended. Many of the technologies used for the new app were either brand new, or very different from when we last used them.
- Xamarin: Although I have used Xamarin previously (long before Microsoft decided to acquire it), it is vastly different now than it was then. It’s fair to say that in its current Microsoft incarnation, much of the Android and iOS specifics are abstracted away from the developer and bore little resemblance to the version I used all those years ago. So whilst I needed to refresh my knowledge of Xamarin as it had changed substantially since I had last used it, it was brand new to the rest of the development team.
- App Center: This is Microsoft’s build / test / deploy center for mobile apps. This is an absolutely brilliant tool. We used this throughout our development lifecycle for all of our diagnostics and debugging. We added tracking for all our events, service calls and exception handling. App Center allows you to setup and configure analytics for your crash reporting as well as for event tracking. This was very useful when we needed to diagnose exceptions and errors during the development cycle. We also configured our Azure DevOps build to deploy to App Center. So with each code check-in, upon a successful build, we would have an Android and iOS release ready for testing.
- Telerik DataForm: Is a means of simplifying the development of your data-entry forms. You define the properties of your data-entry form in your model class (and decorate your properties with the necessary validation rules and label-text). This model then forms the basis of your data-entry form. Telerik DataForm then takes your model and generates the necessary UI controls for your model, and hence generates your data-entry form. Including the validation rules and label-texts. Your UI is therefore built from the programmatic definition of the underlying model. This is an incredibly powerful paradigm. It frees up the developer to focus on the model’s rules and validation, and delegates the building of the UI to Telerik. This paradigm is not suitable for every form, but for simple, static data-entry forms it is perfect. Telerik DataForm implements the MVVM design pattern, thus your forms consist of the following logical pieces.
- View (the XAML layout and code-behind)
- View-Model (where you define the rules for your data-entry form)
- Model (where you define the data to which your UI elements are to be bound)
- Azure AD B2C (Identity Provision): We have previously setup Azure AD B2C (Busines-2-Consumer) for one of our line-of-business web apps. This allowed us to delegate the login functionality to Azure. Rather than implementing our own login functionality, we configured the web app to use Azure AD B2C instead. This gives us an incredibly secure app as you would expect. We are leveraging the same login functionality that is used daily by 2 billion Office365 users. We decided to use the same Azure AD B2C functionality in our mobile app. This gives us far higher security, scalability and we don’t have to write a single line of code. Perfect!
We also trialled Azure DevOps for this project. All our source code, build and release definitions were defined here. Although I have used Team Foundation Services previously, this was my first time using Azure DevOps, and was my first time defining builds and releases for Android and iOS.
So it’s fair to say that we had many (steep) learning curves on this project. Despite that though, they were the right decisions, as the new app puts us in a far stronger position both technically and strategically. From the development platform to the technology ecosystem, the new app is a far stronger proposition.