Building connected apps5 November 2013
In the beginning, an app was just an app. You installed it onto your smartphone, ran it, it performed some useful or entertaining function, and then you closed it.
And that was that - a nice, encapsulated experience, easily accessed and easily consumed on your smartphone. In the beginnings of the app revolution, that was good enough.
Not anymore. These days, many people regularly use a variety of devices every day that can all run apps. You'll switch between smartphone, tablet and modern touch-screen laptop or hybrid PC, running apps on each. You may also consume apps on games consoles such as the Xbox One and on smart TVs.
We've entered a new era, where users can start a task on an app on one device, and later switch to a different device and run the same app. Those users will feel frustration if the app knows nothing at all about the data they've entered on the previous device.
App developers need to consider this possibility when they create an app - is it possible that a user will start a task on one device and want to continue it on a different device?
Enter the era of the Connected App
The idea of creating apps that run on multiple devices, sharing data that allows a user to seamlessly pick up where they left, is here already.
One example of a suite of apps that does this is Microsoft Office 365, which allows the user to store documents in the cloud which can be opened from any device, not only Windows PCs, tablets and phones but also devices running Android and iOS.
Within Office 365, the app that best highlights the Connected App concept is OneNote. This popular note-taking app automatically saves changes to the cloud as you edit documents, so you don't have to invoke a 'Save Changes' menu command or button to make your updates available on other devices.
Another example is Microsoft's popular painting app Fresh Paint. In the new updates recently released for Windows Phone and Windows 8.1, you can start a painting on your phone:
...and continue working on it on your slate some time later:
[And no, I never claimed any talent at painting - it's the principal I'm illustrating here!]
The reason you can use Fresh Paint in this way is that the new versions have added the ability to save and open pictures from the users' SkyDrive account.
Cloud Storage - the enabler for Connected Apps
The key ingredient for any connected app is the ability to store user data in the cloud. The cost of using a cloud data storage solution such as Windows Azure is something the app developer needs to budget for. They could cover those costs from the income from sales of the app or offer cloud storage to users as an optional feature paid for by in app purchase.
In most cases though, a suitable lightweight solution is to use cloud data storage already owned by the user - it's their data after all, so it's not unreasonable for the user to store their own files in their own cloud storage.
For Microsoft Account users, the cloud storage service is SkyDrive - anyone who purchases a Windows Phone or a Windows 8.1 PC or tablet can sign up for a free Microsoft Account in order to download apps and get 7GB of free SkyDrive storage.
Cloud data storage is a powerful tool, enabling users to remain mobile and switch between different devices. In Windows 8.1, SkyDrive integration has been greatly enhanced. You can read a blog post on the engineering work the team did to integrate SkyDrive on the Windows Blog. It details the way files stored in SkyDrive are presented to and made accessible to the Windows 8.1 user.
Cloud storage for the App developer
For the app developer, the concept of data roaming has been baked into the Windows Store App developer APIs from the beginning. However, you need to make a distinction between roaming app data and user data.
Roaming app data is application data meaningful only to the app and which is kept in sync across multiple devices. If a user installs your app on multiple devices, Windows keeps the application data in sync, reducing the amount of setup work that the user needs to do for your app on their second device. Roaming also enables your users to continue a task, such as composing a list, right where they left off even on a different device. Windows replicates roaming data to the cloud when it is updated, and synchronizes the data to the other devices on which the app is installed.
User data however, is data that the user creates and manages when using an app. It includes document or media files, email or communication transcripts, or database records holding content created by the user. User data may be useful or meaningful to more than one app. Often this is data that the user wants to manipulate or transmit as an entity independent of the app itself, such as a document.
Use Tiles and Notifications to roam contextual information
The sharing of data is the most important ingredient of a Connected App, but you can also do interesting things with live tiles and notifications to keep your users informed and reminded of the current status of their connected apps. A tile could show a summary of the last action performed whichever device it was performed upon.
If your app serves a community of users, then you can use notifications to alert a user when someone has posted something of interest to you, prompting you to open up the app and reconnect with your community.
Connected Apps - Is this really a new concept?
And that's a key point - the Connected App isn't a new concept at all. We've enjoyed multiple device access to our data for quite some time in the form of the big social networking websites/apps such as Facebook.
But it is a new concept for the app developer to consider. The availability of free cloud storage available to everyone, coupled with the trend for end users to use more than one device during the day, means that app developers must now consider building in features that multiple device users will come to expect.
Connected Apps allow their users to flow tasks from one device to another, with access to their data and files regardless of which device they are using. And that's a good thing.