Programming

Application Loader, Xamarin and GoogleCast v3 Binding Library

I recently had to upload a new version of an Xamarin.iOS application and used the Application Loader to do so. The difference between the previous and new version  of the application was that the new one included a Binding Library for Google ChromeCast v3.

When I tried to upload, I got the following error:

I spent days tracking down the issue by both reading the official documentation and forums. By sheer luck, I tried uploading using the Organizer in XCode. To my surprise, the application was successfully uploaded to iTunes Connect and started processing. Although, after some time, I received a mail stating that:

[…] The app’s Info.plist must contain an NSBluetoothPeripheralUsageDescription key with a string value explaining to the user how the app uses this data.

Looking at the documentation, it was quite clear that I indeed had forgotten to define the NSBluetoothPeripheralUsageDescription key.

After resolving the issue, I tried uploading using the Application Loader. Unfortunately, the same issue occurred. Instead, I used the Organizer in XCode, and this time, the application was uploaded and processing completed. What a relief!

Lessons learned

Seemingly, the Application Loader doesn’t handle Binding Libraries from Xamarin.iOS that well when they are included as a Framework. Going forward, I’ll instead use the Organizer in XCode for publishing.

I am although certain that other developers will stumble upon this issue as well. Conclusively, Apple should either consider resolving the issue with the Application Loader or remove it from the market entirely.

Standard
Programming

Hosting an ASP.NET Web Api on an IIS Express Server

Admittedly, It took me some time to figure out how to properly configure an IIS Express Server on a locally hosted machine so that I could establish a connection to the server from a secondary computer. I have although finally gotten the gist of it, so I have put together a guide for others who wish to host their own IIS Express Server.

Issues

One of my major issues was that I didn’t run Visual Studio as an Administrator, so keep that in mind should you run into problems.

Additionally, if this guide doesn’t cut it for you, you may also try by directly specifying the name of your computer as described in this guide. When I tried, although, I experienced that I couldn’t properly establish a connection to the server when reserving an URL.

Hosting an ASP.NET Web Api on an IIS Express Server

1. First, we’ll need to create the virtual directoy:

1.1 Open Visual Studio as Administrator

1.2 Open and expand your project

1.3 Navigate to “Properties” -> “Web”

1.4 Ensure that the “Project Url” is “http://localhost:64485”

1.5 Click “Create virtual directory”

2. Now launch the site by:

2.1 Right-clicking on your ASP.NET Web Api project

2.2 From here, select “Set as StartUp Project”

2.3 Launch the site

3. Stop debugging & close Visual Studio

4. Now, in Windows:

4.1 Navigate to”C:\Users\Dave\Documents\IISExpress\config”

4.2 Open the “applicationhost.config” file”

4.3 Search for “bindings”

4.4 Find the entry which contains the name of your API

4.5 Add the highlighted line below the existing localhost binding

4.6 Save

5. Lastly, you’ll need to configure your firewall

5.1 In Windows, open “Control Panel”

5.2 Click “Windows Firewall”

5.3 Click “Advanced Settings”

5.4 Click “Inbound rules”

5.5 Select “Port”

5.6 Click “Next”

5.7 Select “TCP”

5.8 Enter port 64485

5.9 Click “Next” twice

5.10 Provide a name of your choosing

6. Finally, we’ll need to launch the site once more

6.1 Open Visual Studio as Administrator

6.2 Find your project

6.3 Launch the site

You should now be able to access the API using:

1. http://localhost:64485/

2. http://your.local.computer.ip:64485/

// David

Standard
Programming, Xamarin.Forms, Xamarin.Forms.Android

Obtaining a Google Maps API Key

I recently observed an issue when debugging my Xamarin.Forms.Android solution which uses Xamarin.FormsMaps in two different development environments.

The problem was, that I received an error stating that I was missing authentication with the Google Maps API in only one development environment.

Solving the issue

This guide assumes that you have already succesfully established a connection with the Google Maps API in at least one development environment. If you havn’t already worked with Xamarin.FormsMaps before, here is a guide on how to get started, and here is a detailed list of the required permissions in your Android project.

Anywho, on to the issue at hand:

  1. First, obtain the SHA1 fingerprint from your debug key by following this guide
    1. While you’re at it, grab the SHA1 fingerprint for your release key as well by following the same process, but by select the certificate you use for release
  2. Open the Google Developers Console
  3. Select your project and navigate to “APIs & auth” => “Credentials”
  4. In here, click “Edit allowed Android applications”
  5. For each key you have (I’ve got 3 in total: 2 development enviroments, and 1 release certifcate) add a new line with the following contents:
    1. <SHA1-fingerprint>;com.your.packagename
  6. Click “Update”

By now, your “Key for Android applications” should resemble that of the screenshot below. If it does, the Google Maps API has been succesfully registered with both your development and release certficates.

Android SHA1 Fingerprints

Android SHA1 Fingerprints

// Dave

Standard