universal app named Pic Me (later renamed to “Picture Me”) for Windows 8.1 and Windows Phone 8.1. The main reason I wrote it was that my daughter said “wouldn’t it be cool to have an app that shows you all the photos you’ve been tagged in on Facebook, and that lets you download those photos, too?” But the other reason I wrote it was that it seemed like a great opportunity to sink my teeth into a universal app for which there was a genuine need – not to mention the fact that it was a chance to use WebAuthenticationBroker and a handful of other WinRT classes that I hadn’t used much in the past.
Boy, was it an adventure. Because the app used WebAuthenticationBroker, FileSavePicker, and FolderPicker, and because the continuation model used by those classes was very different on Windows and Windows Phone, I ended up writing a fair amount of platform-specific code. Roughly one third of the code was shared, one third was Windows-specific, and one third was Windows Phone-specific. It was clear that the APIs were converging, but it was also clear that they had a long way to go if you wanted one binary to run on a variety of devices.
So it was with some skepticism that I set out to turn Picture Me into a Universal Windows Platform (UWP) app for Windows 10. How much had the APIs converged? To what extent would I be able to use WebAuthenticationBroker, FileSavePicker, and FolderPicker without writing reams of platform-specific code? And how easy would it be to recast the UI to be consistent with the apps that come with Windows 10? I have version 0.9 ready to go now, and let me just say that I was pleasantly surprised. The Universal Windows Platform delivers on its promise of one API for all devices, while still allowing you to leverage unique features of individual devices. I think this portends well for the Windows platform, and I hope other developers are as excited as I am about its potential.
Here’s the fruit of my efforts so far, complete with sample code for developers interested in learning about UWP.