Datensynchronisation zwischen mehreren Windows 8 Geräten

Wie lassen sich Einstellungen in einer App zwischen mehreren Geräten (auf denen die gleiche App installiert ist) synchronisieren? Dass es technisch möglich ist, steht außer Zweifel, aber bei Windows 8 genügen – und das ist kein Marketing-Spruch – nur zwei Zeile Code um diesen Abgleich durchzuführen.

Wer in der Medienbranche arbeitet oder auf diesem Gebiet bewandert ist, hat sicherlich in den letzten Jahren den Begriff des „Second Screen“ aufgeschnappt. Er beschreibt die Praktik, neben dem Fernsehgerät noch ein zweites Device bei sich zu haben, um parallel zum Programm über selbiges zu bloggen, twittern oder chatten. Bisher haben Notebooks oder Netbooks diese Position wacker verteidigt, ehe sie in letzter Zeit von Tablets abgelöst wurden, die sich bequemer am Sofa als Zweitgerät verwenden lassen. Mit dieser durchaus immer häufiger anzutreffenden Symbiose zwischen Tablet und Desktop-PC wird allerdings wieder ein altes Problem akut: Die Synchronisation zwischen verschiedenen Geräten. Natürlich ist es möglich, jedes Gerät für sich als eigenes Universum zu betrachten mit völlig eigenständigen Einstellungen. Jedoch werden sich viele Menschen in den meisten Fällen wünschen, dass ihre Kontaktdaten, ihre Bilder oder ihre Device-Einstellungen sowohl am Desktop als auch am Tablet in der exakt gleichen Form vorhanden sind – schließlich bewirbt Microsoft Windows 8 damit, die Welten des Desktop und Tablets vereinen zu wollen. Freundlicherweise hat es Microsoft auch Programmierern sehr einfach gemacht, eine solche Synchronisation durchzuführen, das Zauberwort lautet hier: Roaming Settings.
Neben einem MSDN-Eintrag zu diesem Thema (aufzufinden hier) existiert auch eine nette Dokumentation inklusive Code-Beispiel hier.

Wie es funktioniert

Obwohl man leicht annehmen könnte, die paar Zeilen Code könnten doch nicht ausreichen, um Daten zu synchronisieren, ist das tatsächlich der Fall: Um Einstellungen zwischen Apps auf mehreren Geräten zu synchronisieren, sind genau zwei Zeilen Code notwendig – egal ob in Javascript, C# oder in VB!

Nehmen wir an, Benutzerin Alice schmökert gerade in einem eBook auf ihrem PC ehe sie erschrocken die fortgeschrittene Zeit erblickt und eilig ihre Sachen packt, um nicht zu spät zum Windows Dev-Camp zu kommen (Randnotiz: Wer es Alice gleich tun und ein solches DevCamp besuchen will, sei hierauf verwiesen). Wäre es nicht wunderbar, wenn Alice in der Straßenbahn auf ihrem Tablet ihr eBook dort weiterlesen könnte, wo sie am PC aufgehört hat? Kein Problem: Man baue als Programmierer folgende Zeile Code ein und update diese Einstellungen immer dann, wenn der User die Seite des eBooks ändert:

 Windows.Storage.ApplicationData.Current.RoamingSettings.Values["currentPage"] = 42;

Woher weiß nun meine App, wie und mit wem sie sich synchronisieren soll?

Codefest6

 

Prinzipiell knüpfen die RoamingSettings hier an das Microsoft-Konto an, mit dem man am PC angemeldet ist. Sobald man mit dem gleichen Microsoft-Konto (das heißt, mit gleicher Mailadresse) auf einem anderen PC angemeldet ist, kommt Synchronisation grundsätzlich in Frage. Zusätzlich dazu hat jede App in Windows 8 eine eindeutige ID. Das bedeutet nun grob gesagt: Der Wert „currentPage“ der von der eBook-Reader-App mit der ID X42 am PC von Alice mit der Mailadresse alice@wunderland.at auf dem Desktop-PC gesetzt wird, wird in die Cloud geladen. Meldet sich Alice auf ihrem Tablet mit derselben Mailadresse an und besitzt sie auch dort die App mit der ID X42, so erfragt die Runtime im Hintergrund automatisch, ob für diese App RoamingSettings vorliegen und stellt diese zur Verfügung. Der Programmierer muss sie dann lediglich mit

 int page = roamingSettings.Values["currentPage"];

einlesen und kann damit weiterarbeiten. Wer ganze Dateien synchronisieren will, für den bietet der RoamingFolder die passende Funktionalität.

Setup für den User

Kurioserweise ist es für Programmierer in Windows 8 fast einfacher, Daten zu synchronisieren als für den User, dieses Feature schlussendlich zu verwenden, denn die entsprechenden Einstellungen sind etwas versteckt. Zunächst müssen wir dazu in die PC-Einstellungen wechseln und – sofern noch nicht vorhanden – mit einem Klick auf „Zu einem Microsoft-Konto wechseln“ ein Microsoft-Konto einrichten.
Codefest7

Dazu benötigen wir nur das aktuelle PC-Passwort, eine Mailadresse sowie wiederum ein Passwort dafür. Ist das getan, fragt uns Windows skeptisch, ob wir uns wirklich vertrauen können.

Codefest8

Der letzte Satz hört sich seltsamer an, als er wirklich ist, denn theoretisch könnten wir ja auch eine x-beliebige E-Mail-Adresse verwenden und diese zur Synchronisation verwenden – dem schiebt Windows einen Riegel vor. Um sicherzustellen, dass wir auch der Eigentümer der Mailadresse sind, klicken wir auf „Diesem PC vertrauen“, worauf wir einen Zahlencode an unsere Mailadresse zugeschickt bekommen, den wir in ein Browserfenster eingeben müssen.

Codefest9

Ist das erledigt, werden unsere Einstellungen nun online gespeichert und immer dann, wenn ein Device online geht, abgeglichen. Nun kann Alice in aller Ruhe ihr eBook fertig lesen und danach mit Bob am DevCamp über dieses nette Feature plaudern.