Dezember 2008
OpenSocial – Persistenz und Kommunikation
Social Networks standardisiert
Im fünften Teil der OpenSocial-Reihe wird das Thema Persistenz und Kommunikation behandelt. Es werden anwendungsspezifische Daten in das Benutzerprofil gespeichert und Daten mit einem eigenen Server abseits des OpenSocial-Containers ausgetauscht.
Text: André Wussow
Persistenz
Im vorherigen Teil der Serie wurde die Freundesliste eines aktiven Users aus einem OpenSocial-Container geladen. Generell sind mittels dieser Vorgehensweise sämtliche Benutzerbezogenen Daten, also gesamte Profile, abrufbar. Möchte man jedoch eine kleine Applikation erstellen, die solche Daten nicht nur ausliest, sondern diverse Daten auch behalten, also speichern soll, kommt das Thema Persistenz ins Spiel.
Die OpenSocial API unterstützt das benutzer- und applikationsspezifische Speichern und Auslesen von selbst definierten Feldern. Das bedeutet, dass solche Daten immer im Benutzer- und Applikationskontext stehen müssen. Sie werden in dem Profil des entsprechenden Nutzers hinterlegt; ein Zugriff auf die Daten, beispielsweise aus einer anderen Applikation heraus, ist nicht möglich. Das Abspeichern von globalen Anwendungsdaten war in den Versionen 0.5 und 0.6 der API noch möglich, wurde aber mit der Version 0.7 abgeschafft.
Profildaten können grundsätzlich mit einem DataRequest verarbeitet werden. Um beispielsweise Daten aus der Applikation heraus zu aktualisieren, wird diesem Request ein UpdatePersonAppDataRequest zugefügt. Listing 1 – Applikationsdaten im Profil speichern:
function setAppData() {var req = opensocial.newDataRequest();var spielerstatus = "Power-User";var spielstand = 1024;req.add(req.newUpdatePersonAppDataRequest("VIEWER", "Spielerstatus", spielerstatus));req.add(req.newUpdatePersonAppDataRequest("VIEWER", "Spielstand", spielstand));req.send(handleSetAppData, "update_appdata");}
Analog dazu können die Daten auch wieder per DataRequest angefordert werden. Dazu werden zunächst ein entsprechender FetchPersonRequest inklusive entsprechendem Viewer dem DataRequest zugefügt, die auszulesenden Felder definiert und per FetchPersonAppDataRequest an den angelegten Viewer gebunden. Was danach mit den angeforderten Daten geschehen soll, wird durch eine Callback-Funktion (hier: handleGetAppData) festgelegt. Listing 2 – Applikationsdaten aus dem Profil anfordern:
function getAppData() {var req = opensocial.newDataRequest();var fields = [ "Spielerstatus", "Spielstand" ];req.add(req.newFetchPersonRequest(opensocial.DataRequest.PersonId.VIEWER), "viewer");req.add(req.newFetchPersonAppDataRequest("VIEWER", fields), "viewer_data");req.send(handleGetAppData);}
In dieser Callback-Funktion können die angeforderten Daten weiterverarbeitet werden. Über den Viewer selbst wird die Bezugsperson ermittelt, also der Benutzer der Applikation. Die eigentlichen Daten befinden sich in den entsprechenden Viewer-Daten und sind in einem Array über die User-ID und das korrespondierende Feld verfügbar. In diesem Fall erfolgt lediglich eine Ausgabe der ausgelesenen Daten. Listing 3 – angeforderte Applikationsdaten verarbeiten:
function handleGetAppData(data) {var viewerData = data.get("viewer_data");var viewer = data.get("viewer");me = viewer.getData();var data = viewerData.getData();var appData = data[me.getId()];var div = document.getElementById('content_div');htmlout += "Spielerstatus: " + appData["Spielerstatus"] + "<br />";htmlout += "Spielstand: " + appData["Spielstand"] + "<br />";div.innerHTML = htmlout;}

- Twitter fürs iPad und Windows Phone 7 ist fertig [Shortcuts]
- Dimitri Tsykalovs delikate Kuriositäten
- Google veröffentlicht SketchUp 8
- Apple – Neue iPods, Apple TV und iTunes
- Greenpeace gegen Facebook und das WeTab lässt weiter auf sich warten [Shortcuts]
- Samsung – Apps für die Couch Potatoes
- Schabernack mit Logos
- Gerüchte um Apple – Die Unruhe vorm Event
- Icon Sets für (fast) alles und jeden
- Von Googles erstem Mitarbeiter zu Eric Schmidt auf der IFA [Shortcuts]
- Das iPhone 4 wird zur Leica M9
- Adobe veröffentlicht Lightroom 3.2 und Camera Raw 6.2
- The Wilderness Downtown – HTML5 rockt den Browser
- Priority Inbox – Gmail bekommt neuen Filter
- Chatroulette ist zurück und Schallplatten aus Menschenfleisch [Shortcuts]
- Der nächste iPod Nano – Quadratisch, praktisch, gut?
- Google – Filmverleih auf YouTube kommt noch dieses Jahr
- StartupQuote – Inspirationen für Gründer
- Mozilla – Fennec Alpha für Android und das N900
- Google in Echtzeit und 400 kostenlose Filme auf YouTube [Shortcuts]
- Best of GGGGfunden
- Casual Friday – Off-Topic in Motion
- Wenn Dell und HP sich streiten, freut sich 3PAR
- Marihuana von Google und faule Freelancer [Shortcuts]
- Geld verdienen mit Twitter
- Photoshop.com in neuem Gewand
- Chatroulette-Klone für Christen und Kiffer
- Sandberg FreshColor – Testbericht und Gewinnspiel [Update]
- Windows 95 feiert Geburtstag und Old Spice den Emmy [Shortcuts]
- Apple in Zahlen und Fakten

































