Getting User Location to work in iOS8

|
There were some minor changes to how iOS8 works with core location. Previously when requesting the user's location on the MapView with ShowsUserLocation a nice pop-up would automagically show up asking the user if this was ok. Apple decided to make this a bit more flexible, allowing the developers to enter their own message. So if you compile your pre-iOS 8 app with the new SDK this might break, since you now have to manually call a method to get that pop-up to show.

So the quick fix is to do the following:

1. In your info.plist file add one of the following key/value pairs:

2. I then have a Extensions.cs where I keep my various extensions, for this case I've just made a couple of checks to whether the selectors are available on the platform, so the code won't crash on previous versions of iOS.

3. Remove your previous call to mapView.ShowsUserLocation and do the following instead:

Now you respond to the AuthorizationChanged Event and set the ShosUserLocation flag accordingly.


Edit (3/10/2014 17:00):
Now that I have had the chance to play a bit more with it, I have a couple of observations that might help you. First don't let go of the CLLocationManager instance, i.e. have it as a class field otherwise the dialog will disappear pretty quickly and it won't let you get location updates.

I didn't mention that you will have to do some checks on what iOS version you run at now and only call this code when on iOS 8 and higher, to do this you can do something as follows.

Port of Floating Action Button

|
Android L has introduced something called a Floating Action Button (FAB), which is basically a circle overlayed on top your application. This FAB can be clicked to do an action. In the Google+ application this is used to persistently allow the user to create a new post.


It basically looks like in the screenshot above, where you can see a circle with a play icon at the bottom of the screen. Faiz Malkani backported this from Android L to work on JellyBean and KitKat, and I took the liberty to port it to Xamarin.Android.

You can find the repository on GitHub along with a sample application, which the screenshot above is from.

Xamarin.Forms and MvvmCross

|
As promised during the Xamarin 3 webinar, I have made a small sample showing how to use Xamarin.Forms along with MvvmCross.



What I did was look at the code Stuart Lodge already had made in another private repository, and adapted this to use it with Xamarin.Forms. What it basically does is implement custom Presenter implementations, which work with the way Xamarin.Forms navigates its Pages, which is through a NavigationPage and simple Push and Pop methods. This is wrapped in a PageNavigationProvider in MvvmCross which is in turn leveraged by the custom presenter.

Right now the sample has these presenters and MvvmCross specific classes built in, but will most likely in the future be pulled out and made into a plugin, which you can use in your own applications.

So the sample itself is a very simple application, which allows you to search TMDB for movies, it then fetches similar movies based on your search query and displays them. In turn you can then press an item in the list presenting the search results and get detailed information about the movie.

The sample actually covers a lot of MvvmCross by using:

  • ViewModels
  • Services
  • Custom Presenters
  • Bindings
  • Commands
  • Converters
  • Nuget
You can get the sample on Github

Noise Sentinel at Microsoft Case studies

|
Microsoft just recently released a case study regarding one of the products I work on at Brüel & Kjær, namely Noise Sentinel. This case study is based on the usage of Microsoft Azure and the services Microsoft provides and how they have helped innovating the product.

You can read the case study here: Microsoft Case Study

FoldingLayout ported to Xamarin.Android

|
I found this little cute library, called Folding-Android, which implements a fun type of layout, which adds a folding effect to any layout you nest inside of it. I have ported this for Xamarin.Android for everyone to enjoy.

Find it in Xamarin Component Store and fork it on GitHub!

Here are some sample screenshots showing what it can do:

Folding Horizontally with 2 folds
Folding Vertically


















It also has implementations which sub-classes DrawerLayout and SlidingPaneLayout, from Support v4, which adds the effect to their drawer/pane.

DrawerLayout implementation
SlidingPaneLayout implementation