Some weekends ago I wanted to test how fast can you develop and deploy an application with Xamarin.Forms.

After around 20 hours of work the Android version landed on the Google Play store. I was very impressed on how fast and clean I had developed the UI in XAML and how all the bindings just worked.

The more interesting part was the development of the platform-dependent services for the app to access native audio API and the Ads rendering (using AdMob component).

Fortunately some good guy already deployed a NuGet library called Lamp to access camera flash across multiple platforms. I just had to pull the library source code to fix a bug within the Android implementation that prevented the flash to turn off.

The Audio service is used to play different sound effects simultaneously which were synchronize against the thunder effects generated by the camera flash. I simply used MediaPlayer for Android and AvAudioPlayer for iOS. 

The challenging part was showing the interstitial Ad to the user before a sequence is started. 
I could not find ready to use library which supported Interstitial Ad from AdMob, nevertheless the AdsPCLXamarin put me on the right track on how to develop a custom renderer for each platform for this purpose. It took sometime to get everything working in iOS once it was okay for Android, mostly because I had to migrate the project to unified API and fix some library compatibility issue.

But, summing up, 20 hours later I have a ad-supported app on both Google with a sleek UI and which, hopefully, is also useful!

Now, enough about the pro, here some cons I experienced:
  • Don't expect that working code on Android behave exactly the same on iOS
  • Label color on iOS was not working (TextColor property)
  • Debugging via a separate Mac with the Xamarin.iOS Build Host is a pain in the ass, Visual Studio was laggy and crashed many times (FYI: I have a dedicated LAN cable to the Mac)

I would like to thank all the community which is bringing day after day more and more ready to use libraries to Xamarin.Forms.

Google Play URL:

AppStore URL: coming at somepoint