. .
CREATE OR DIE Special Downloads Shop webinale

Schauplatz

Artikel

  • Currently 5/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Dezember 2008

OpenSocial – Persistenz und Kommunikation

Social Networks standardisiert

(Link zum Artikel: http://www.createordie.de/cod/artikel/2066)

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:

  1. function setAppData() {
  2. var req = opensocial.newDataRequest();
  3. var spielerstatus = "Power-User";
  4. var spielstand = 1024;
  5. req.add(req.newUpdatePersonAppDataRequest("VIEWER", "Spielerstatus", spielerstatus));
  6. req.add(req.newUpdatePersonAppDataRequest("VIEWER", "Spielstand", spielstand));
  7. req.send(handleSetAppData, "update_appdata");
  8. }

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:

  1. function getAppData() {
  2. var req = opensocial.newDataRequest();
  3. var fields = [ "Spielerstatus", "Spielstand" ];
  4. req.add(req.newFetchPersonRequest(opensocial.DataRequest.PersonId.VIEWER), "viewer");
  5. req.add(req.newFetchPersonAppDataRequest("VIEWER", fields), "viewer_data");
  6. req.send(handleGetAppData);
  7. }

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:

  1. function handleGetAppData(data) {
  2. var viewerData = data.get("viewer_data");
  3. var viewer = data.get("viewer");
  4. me = viewer.getData();
  5. var data = viewerData.getData();
  6. var appData = data[me.getId()];
  7. var div = document.getElementById('content_div');
  8. htmlout += "Spielerstatus: " + appData["Spielerstatus"] + "<br />";
  9. htmlout += "Spielstand: " + appData["Spielstand"] + "<br />";
  10. div.innerHTML = htmlout;
  11. }

 

andere Artikel dieser Serie
Kommentare
Bisher keine Kommentare
Neuer Kommentar
  • Gute Kommentare werden belohnt.
  •   (optional)
  •   (Kommentar abonnieren/Gravatar - wird nicht veröffentlicht)
  •    Benachrichtige mich bei nachfolgenden Kommentaren per E-Mail
  • -+
Tags
Werbung
opensocial