Category: Uncategorized

Calendar Import Now Universal

In order to extend the app onto Windows devices I’ve re-written the Calendar Import app as a Universal app with separate UI and features for Windows 8.1 and Windows Phone 8.1. Both apps add the new feature of browsing for files to import from directly within the app itself. This is on top of the existing filetype support which means you can import an item directly from your Email attachments, Web Browser, NFC, Bluetooth etc

Switching to a Windows Phone 8.1 project also means there are other new features we can support in upcoming releases. Users with a Windows Phone 8.0 device will continue to receive the 1.8 version until their device is updated to 8.1.


Microsoft Band Initial Thoughts

I received my Band today and have just started setting it up, loading in my Starbucks card and tweaking settings. One thing which is interesting is that the phone doesn’t use GATT Bluetooth LE to expose functionality unlike some other wearables. Instead it has three RfComm services named:-

  • Cargo Service
  • Cargo Service 2
  • Push Service

Cargo is a code-name for the Microsoft Band and appears in a few places…

Because the screen is flat it makes the band feel very wide and I have the large size so I can only imagine this is more pronounced in the smaller sizes. I think a portrait orientation for the watch screen would be quite useful…

I thought the Starbucks integration would be some clever NFC magic but it is simply a 2D barcode displayed on the screen. This could be replicated for any loyalty card or similar provided they have a scanner which can read from a screen (Imager rather than laser scanner).

The Cortana integration is very slick and is even able to wake your phone and activate Cortana bypassing the lock screen. Whoa that’s a security risk you may think – well if you try and navigate away from Cortana you’ll then get your lock screen.

I haven’t had a chance to test the UV capabilities but since I’m in Seattle and it’s a dark and rainy November evening I’m not too worried about over-exposure at the moment.

Data Settings for Nokia Lumia 930 O2 UK (Pay Monthly)

When I first setup this phone and swapped my account over to a new nano-SIM I received a message from O2 that my data and picture messaging settings couldn’t be automatically setup (don’t you just love progress). I had to get the manual settings and now the phone is working as expected. However I thought I’d post them here because they are different to ones I’ve seen posted before and the instructions sent by O2 actually are for older versions of Windows Phone and the names of some items have changed. So here goes…

Tap Settings > mobile + SIM

Tap SIM Settings

Set “Manual Internet APN” to On

Tap “add Internet APN” (or “edit Internet APN” if you tried already). Set the following fields:-

APN = “”

Username – “o2web”

Password = “password”

Authentication type = PAP

Proxy server (URL) – leave blank

Proxy port – leave blank

IP type = IPv4

Tap the Save button

For MMS tap the “add MMS APN” or “edit MMS APN” button

APN = “”

Username = “o2wap”

Password = “password”

Authentication type = PAP

WAP gateway (URL) = “”

WAP gateway port = 8080

MMSC (URL) = “”

MMSC port = 8002

Maximum MMS size – leave blank

IP type = IPv4

Tap the save button

You should now have working mobile data on your shiny new 930…

Developer Unlock Expiry

When you’ve developer unlocked your Windows Phone you can merrily deploy and debug on it and everything is great. If you’ve upgraded to Mango you had to run the Unlock tool again but this is fairly painless. What is not obvious is that the developer unlock has a 12 month expiry from when you first register the device and even when you subsequently use the unlock tool on the same device this never gets extended.

So one day you’ll be developing as normal and get the error “Failed to connect to device as it is developer locked. For details on developer unlock, visit”. Instictively you launch the developer unlock tool, enter your App Hub credentials and unlock the phone. This completes with no errors but you’ll soon find that it hasn’t helped despite the fact you entered valid credentials and your App Hub account is valid.

The solution to this problem is to log into App Hub on the web and go to your account profile, select devices and remove the offending device from the list (here you’ll see that the expiry date is shown). After doing this you can run the unlock tool again and successfully unlock the device.

Microsoft could certainly improve this process in the future by using a more descriptive error message and also by improving the unlock tool so that when you try to unlock a device that has expired it refreshed the registration and provide 12 more months of use (just like the manual process described above does).

Merry Christmas, and here’s to a wonderful 2012 filled with Windows Phone goodness!

Submitting Apps to Marketplace with Background Tasks

I’ve been working on an update to the Tasks application which adds in background synchronisation using the new background task support in Windows Phone 7.5. As with any app when you submit your XAP static analysis is performed on it to check, for example, that you have declared the correct capabilities based on the functionality in your app. Within a background agent you are only allow to call a subset of APIs – as you would expect you can’t play sound effects or draw to the UI (with the exception of toast notifications and tile updates). Because the main app has to include a reference to the dll which provides the background task, and the functionality within the dll is used in both the background task and the main app it made sense to move all of the logic into the background dll. This meant including a number of third-party references. I was very careful to ensure that nowhere in the background task was any restricted API called and it worked perfectly in testing.

The first problem is that upon submitting the static anaylsis looks at all of the referenced dlls and sees that they contain APIs not permitted in a background task and blocks the XAP. One of the culprits was InTheHand.Phone.dll (Part of Mobile In The Hand) because it provides a mixture of helper classes for logic and for UI. As I’ve been working on the 7.1 version in tandem I’ve now split this into two assemblies for Windows Phone 7.1 SDK projects. This means we can continue to use InTheHand.Phone in background tasks and add a reference to the second assembly in the main application only.

The second problem is that code within the sync logic calls ScheduledActionService.Add which is disallowed within a background task. This API is used within Tasks to add system-wide reminders (Another new feature for this version) for new task items. The code also has the ability to update and delete reminders based on modified or deleted tasks but these do not seem to have been flagged up as errors. This is a pain because it means that if the device syncs a new task with a reminder set to show before you next open the foreground app we won’t have had a chance to register it.

The other issue with the NeutralResourceLanguage is an issue with projects originally created with an older version of the development tools. You can add this setting from the projects properties, Application tab and click “Assembly Information…”.

This has been an interesting learning experience and shows that the validation picks up not just APIs used in the background agent code-path but also in referenced assemblies.

Showing Mango Features on Marketplace

The Windows Phone team have posted to their blog about application updates with a couple of useful points:-

From October you will again be able to publish updates to your 7.0 apps independently from 7.5 (previously once you had published a Mango update your 7.0 app would be locked). It does mean potentially being in limbo for a month but at least you are not stuck completely with no way of updating a 7.0 app. This is important as it will take some time before many users will have the opportunity of upgrading to Mango.

When submitting apps there is only one description for both versions of your app so you must describe which features are for Mango only. For the purposes of Screenshots there is now an officially accepted overlay which can be used to indicate Mango-only functionality. You can download a ZIP containing the overlay and examples here:-

The full blog post is here:-