Detecting on-screen keyboard toggles and proper handling of such changes can be quite tricky. Android tries to deal with those events on its own but its behavior is often far from perfect. iOS, on the other hand, leaves all the work to an app developer. Both approaches have its advantages and disadvantages but sooner or later each mobile app dev will have to face this problem.

While there are few posts or SO questions on this matter I found no comprehensive text so far.

In this article, I’ll focus on detection. I will show you how to instrument your Xamarin.Forms app so you could react on soft keyboard toggles in a unified manner both on iOS and Android.

→ Read more

Today’s mobile apps are rarely created as text-only. Most of them needs at least in-app icons for toolbars. In many cases you can find graphics for mobile platforms as ready to use resources on the Internet, i.e. Material Design icons. Sometimes they are prepared by graphic designers specially for your apps.

No matter which case is your’s, sooner or later you will probably need to adjust the images inside your app. One of the most common customisation is setting the tint color of the image. In Xamarin.Forms you can easily do it with Effects, which I will show in this post.

→ Read more

It’s very common to have multiple versions of the app during development - i.e. stable beta and store/production or alpha that contains the latest changes. Managing application configuration for multiple versions might be confusing when it’s not carefully designed and setup with the build process.

Publishing app to App Store or Google Play developers often forget that the mobile application is running de facto in hostile environment. Advanced user can easily reverse engineer the installed package on rooted/jailbroken device or even an emulator and see the data that wasn’t supposed to be released on production. As you will see this is just a different aspect of the multi-version app config.

This article is a continuation of previous posts. If you haven’t read those I strongly recommend doing it now since I’ll refer to them here.

→ Read more

In last post I described how to cope, in some extent, with different pace of delivering mobile app versus it’s supporting backend. The article also provided a simple hint for speeding up the mobile app development by introducing mocks instead of the external network services.

In this one I’m gonna give you some advice on managing the dependencies as your app gets more of them in time.

→ Read more

Modern mobile apps are rarely developed as offline-only. They typically communicate with backend services that feed them with data, keeps in sync with their web equivalents or allows for various external integrations. The backend part is most often developed by different teams in their own pace. The mobile part can be often developed faster thus it waits for the full integration.

Even if the backend service is ready to consume it’s not always most convenient to develop being connected to it. Sometimes you just make a small UI change and want to see the result immediately. Even the fastest Internet connection would not give you the speed of loading the mocked data from memory. It’s also easier to use the same approach in automated UI tests instead of depending on data changing in backend (if you don’t test the integration itself).

Those are only two of many various scenarios where the proper design of application-level configuration can help in the development and testing process. Proper use of dependency injection, conditional compilation and few other techniques can make this design clean and maintainable. This spans from the local development to Continuous Integration and Deployment process. In this and next articles I will show you how to do this in Xamarin app.

→ Read more