Artikel über: Entwickler und APIs
Dieser Artikel ist auch verfügbar in:

Erweiterte Einbindung des HTML-Integrationscodes (Widget) über die API

Beispielcode für das Widget


<html>
<head>
<!-- Bundles einbinden -->
<script src="https://cdn-apps.drimify.com/prod/widget/index.js" type="text/javascript"></script>

<!-- Widget beim Laden der Seite einrichten -->
<script>
fenster.addEventListener('load', function () {
var widget = DigitaService.Widget.Create({
autoscroll: true,
element: 'gamification-widget',
engine: 'https://apps.drimify.com/Rf6aGmBR/',
fixed: false,
höhe:['auto'],
sharingurl: 'https://apps.drimify.com/Rf6aGmBR/',
breite: '100%',
});
widget.onReady = function (event) {};
widget.onComplete = function (event) {};
widget.onFirstInteraction = function () {};
widget.onRouteChange = function (event) {};
widget.onScrollToTop = function () {};
widget.onClose = function () {};
widget.onError = function (errorEvent) {};
widget.load();
});
</script>
</head>
<body>
<div id="gamification-widget"></div>
</body>
</html>


Einrichtung


Erstellen Sie ein Widget, indem Sie der Funktion Create ein Options-Objekt übergeben:


var widget = DigitaService.Widget.Create(options);


Konfigurationsoptionen


Erforderlich


Option

Typ

Beschreibung

options.element

string - HTMLElement

Das Widget wird in dieses HTMLElement eingebettet. Sie können entweder ein vorhandenes HTMLElement direkt übergeben oder dessen ID als String angeben. Wenn Sie diese Eigenschaft nicht angeben, wird auf der Seite nach einem Element mit der ID „digitaservice-widget“ gesucht.

options.engine

string

Die absolute URL der Anwendung, die in das Widget geladen werden soll.


Optional


Option

Typ

Standardwert

Beschreibung

options.height

string

auto

Vor dem Laden hat das Widget standardmäßig eine Höhe von null. Sie können stattdessen einen Platzhalterwert festlegen, um je nach Position des Widgets auf der übergeordneten Seite Layoutsprünge zu vermeiden. Der Wert wird in Pixeln angegeben, z. B. „600px“. Bei Verwendung von options.fixed = true bleibt die Höhe auf den angegebenen Wert begrenzt. Bei Bedarf werden Scrollleisten eingeblendet.

options.autoscroll

boolean

true

Je nach Länge des Widget-Inhalts und Bildschirmgröße kann es erforderlich sein, auf der Seite zu scrollen, in die das Widget eingebettet ist. Während der Nutzung des Widgets wird diese Seite standardmäßig automatisch zum oberen Rand des Widgets gescrollt, um die Bedienung zu erleichtern. Um dieses Verhalten zu deaktivieren, setzen Sie autoscroll auf false. Diese Eigenschaft ist false, wenn options.fixed auf true gesetzt ist.

options.sharingurl

string

URL der Seite, in die das Widget eingebettet ist

Beim Teilen in sozialen Netzwerken wird diese URL geteilt, um andere auf Ihre Kampagne aufmerksam zu machen. Ist der Wert eine leere Zeichenfolge, wird die URL der Seite verwendet, in die das Widget eingebettet ist.

options.fixed

boolean

false

Normalerweise passt sich die Größe des Widgets automatisch an den Inhalt der Engine an, sodass keine Scrollleisten nötig sind. Wenn diese Option auf true gesetzt ist, bleibt die Höhe des Widgets unverändert. Bei Verwendung dieser Option muss für options.height ein anderer Wert als „auto“ festgelegt werden. Übersteigt die Höhe der Engine den festgelegten Wert, werden Scrollleisten eingeblendet.

options.width

string

“100%”

Die Breite des Widgets. Sie kann mit einer CSS-Einheit wie „%“ oder „px“ angegeben werden.


Laden


Nach der Einrichtung müssen Sie das Widget laden. Sie können es jederzeit laden.


Hinweis: Richten Sie vor dem Laden alle benötigten Callbacks aus der folgenden Liste ein, damit Sie sämtliche Ereignisse erfassen können.


widget.load();


Ereignis-Callbacks


onReady


Mit dem Aufruf von widget.load() wird das Widget geladen und initialisiert. Sobald dieser Vorgang abgeschlossen ist, wird der optionale Callback onReady aufgerufen.


Hinweis: onReady wird ausgelöst, bevor der erste Bildschirm angezeigt wird. Das erste onRouteChange-Ereignis signalisiert, dass die Teilnehmenden Inhalte sehen können. Kann die Anwendung gar nicht erst starten, wird onReady nicht ausgelöst. Stattdessen wird onError aufgerufen.


widget.onReady = function (event) {
// Geladen und einsatzbereit
console.log(event.type); // “ready”
console.log(event.data); // {}
};


onError


Mit dem Aufruf von widget.load() wird das Widget geladen und initialisiert. Alle schwerwiegenden Fehler, die ab diesem Zeitpunkt auftreten, lösen den optionalen Callback onError aus.


widget.onError = function (event) {
console.log(event.data.message); // z. B. "ERR_15"
};


onComplete


Wird ausgelöst, sobald das Spiel abgeschlossen ist und der Abschlussbildschirm angezeigt wird. Zusätzlich wird ein Datenobjekt mit Informationen zum Spielverlauf übergeben.


Hinweis: Wenn Sie auf dieses Ereignis reagieren möchten, sollten Sie innerhalb des Callbacks gegebenenfalls eine Verzögerung einbauen, damit die Teilnehmenden Zeit haben, den Abschlussbildschirm zu lesen. Das Ereignis wird unmittelbar beim Erreichen dieses Bildschirms ausgelöst. Alternativ können Sie onClose verwenden.


widget.onComplete = function (event) {
console.log(event.type); // “complete”
console.log(event.data); // {}
console.log("Erreichte Punktzahl: " + event.data.gameMetrics.score);
};


onResize


Wird ausgelöst, wenn sich die Größe der Engine geändert hat, und übermittelt die Höhe als Pixelwert.


widget.onResize = function (event) {
console.log(event.type); // “resize”
console.log(event.data); // {}
console.log("Höhe der Anwendung:" + event.data.height);
};


onFirstInteraction


Wird ausgelöst, wenn die geladene Anwendung zum ersten Mal per Touch oder Klick bedient wird.


widget.onFirstInteraction = function () {
console.log("Erste Interaktion mit der Anwendung");
};


onRouteChange


Wird ausgelöst, wenn die Anwendung innerhalb des Widgets die Route wechselt, also zwischen Bildschirmen navigiert. Je nach Kontext enthält das Ereignis ein Datenobjekt oder nicht.


widget.onRouteChange = function (event) {
console.log(event.type) // “routechange”
console.log(event.data) // {} oder undefined
console.log("Ein neuer Bildschirm wurde aufgerufen");
};


onScrollToTop


Wird ausgelöst, wenn die Anwendung versucht, zum Seitenanfang zurückzuscrollen. Der Callback kann auf der übergeordneten Seite verwendet werden, um das Scrollen zu übernehmen, falls es aufgrund von CORS nicht ausgeführt wird oder angepasst werden muss. Das Ereignis enthält kein Datenobjekt.


widget.onScrollToTop = function () {
console.log("Zum Seitenanfang scrollen");
};


Kennzahlen


Die folgenden wichtigen Kennzahlen stehen je nach Spieltyp zur Verfügung:


Schlüssel

Beschreibung

data.gameMetrics.CurrentAttempt

Der aktuelle Spielversuch beim Abschluss des Spiels.

data.gameMetrics.prizeID

Die Gewinn-ID.

data.gameMetrics.prizeImage

Das Gewinnbild.

data.gameMetrics.prizeName

Der Name des Gewinns.

data.gameMetrics.prizeRef

Die Gewinnreferenz.

data.gameMetrics.totalPossibleAttempts

Die Gesamtzahl der möglichen Spielversuche.

data.gameMetrics.userWon

true oder false, je nachdem, ob die teilnehmende Person gewonnen hat.

data.gameMetrics.score

Die Gesamtpunktzahl, mit der die teilnehmende Person das Spiel abschließt.


Sitzungs- und Projektdaten


Schlüssel

Beschreibung

data.credentials.isPreviewMode

Gibt an, ob sich das Spiel im Vorschaumodus befindet.

data.credentials.projectID

Die ID der aktuell gespielten Anwendung.

data.credentials.projectLanguage

Die Sprache des Projekts im Widget (en, fr).

data.credentials.projectName

Der Name der Anwendung.

data.credentials.projectType

Der Anwendungstyp (quiz, memory …).

data.credentials.publisherID

Die Publisher-ID.

data.credentials.sessionID

Die Sitzungs-ID der aktuell teilnehmenden Person.


Fehlerbehandlung


Es gibt zwei grundlegende Möglichkeiten, Fehler zu erkennen und Informationen zu Problemen im Widget abzurufen:


onError-Callback


Der Callback onError erfasst schwerwiegende Fehler, bei denen die Anwendung nicht starten oder nicht fortgesetzt werden kann. Der Fehlercode steht in event.data.message. In diesen Fällen wird onReady nicht ausgelöst.

widget.onError = function (event) {
if (event.data && typeof event.data.message !== 'undefined') {
wechseln (event.data.message) {
standard:
// Keine Aktion
break;
case 'ERR_04':
console.log("Keine Aufrufe mehr verfügbar");
break;
case 'ERR_05':
console.log("Sicherheitsfehler");
break;
case 'ERR_07':
console.log("Anwendung nicht veröffentlicht");
break;
case 'ERR_08':
console.log("Premium-Anwendung nicht verfügbar");
break;
case 'ERR_09':
console.log("Sitzungs-UID nicht erkannt");
break;
case 'ERR_10':
console.log("Sitzungs-UID nicht zulässig");
break;
case 'ERR_13':
console.log("SSO-Aufruf fehlgeschlagen");
break;
case 'ERR_14':
console.log("Sprache nicht verfügbar");
break;
case 'ERR_15':
console.log("Seite existiert nicht");
break;
case 'ERR_17':
console.log("Ungültige SSO-Konfiguration");
break;
case 'ERR_21':
console.log("Combo oder Dynamic Path ist kein Spiel zugewiesen");
break;
}
}
};


onRouteChange-Callback


Der Callback onRouteChange wird ausgelöst, wenn die Anwendung innerhalb des Widgets zwischen verschiedenen Bildschirmen navigiert. Damit lassen sich Fehler im Zusammenhang mit dem Anwendungsstatus und der Verfügbarkeit von Inhalten erfassen.


widget.onRouteChange = function (event) {
if (event.data && typeof event.data.errorCode !== 'undefined') {
wechseln (event.data.errorCode) {
standard:
// Keine Aktion
break;
case 'ERR_02':
console.log("Inhalte noch nicht verfügbar");
break;
case 'ERR_03':
console.log("Verfügbarkeitszeitraum der Inhalte abgelaufen");
break;
case 'ERR_04':
console.log("Keine Aufrufe mehr verfügbar");
break;
case 'ERR_16':
console.log("Keine Fragen verfügbar");
break;
case 'ERR_18':
console.log("Zwischen zwei Aktivierungszeiträumen");
break;
case 'ERR_19':
console.log("Außerhalb der Öffnungszeiten");
break;
}
}
};


errorCode ist nur auf diesen Bildschirmen zur Nichtverfügbarkeit vorhanden. Andere Bildschirme, die eine Teilnahme verhindern, etwa bei bereits erfolgter Teilnahme, Zugriffsbeschränkungen oder abgelehnten Formularen, enthalten keinen errorCode. Sie lassen sich anhand ihres Bildschirmnamens in event.data.screen identifizieren.


Die vollständige Liste der Bildschirmnamen sowie Informationen zur Ereignisreihenfolge beim Laden, zum Verhalten von session_uid und zu Zeitüberschreitungen beim Laden finden Sie unter Widget-Laufzeit und Fehlerbehandlung.


Benutzerinformationen auf dem Abschlussbildschirm abrufen (onRouteChange)


Bei Verwendung von Dynamic Path™, Advent Calendar oder Combo™ können Sie am Ende jedes Spiels über den Callback onRouteChange Benutzerinformationen abrufen.


Diese Methode ist erforderlich, da das Standardereignis onComplete erst ausgelöst wird, wenn das gesamte mehrstufige Erlebnis abgeschlossen ist, und nicht nach jedem einzelnen eingebetteten Spiel.


So kann Ihr System die vollständigen Spielergebnisse über gameInfo empfangen, sobald die teilnehmende Person den Abschlussbildschirm erreicht.


Einrichtung


Nachdem Sie Ihr Widget erstellt haben:


var widget = DigitaService.Widget.Create(options);


Fügen Sie den onRouteChange-Listener hinzu:


widget.onRouteChange = function (event) {
console.log(event.type); // "routechange"
console.log(event.data); // { ... } oder undefined
console.log("Ein neuer Bildschirm wurde aufgerufen");
};

```# Erkennen des Endbildschirms

Wenn der Benutzer den Endbildschirm des Spiels erreicht, gibt das Widget eine Route zurück, die folgendem Muster entspricht:

event.data.screen === 'screen_end-YOUR_APP_ID'



Ersetzen Sie `YOUR_APP_ID` durch die tatsächliche ID Ihrer Anwendung.

# Abrufen der Benutzerinformationen (`gameInfo`)

Sobald der Endbildschirm erkannt wurde, können Sie die Daten abrufen:

event.data.gameInfo



`gameInfo` enthält ein **Array mit Benutzerinformationen**, darunter beispielsweise:
* Vom Benutzer eingegebene Daten
* Spielergebnisse oder Punktzahlen
* Während des Erlebnisses erfasste Formularfelder

Diese Daten stehen nur auf dem Endbildschirm von Erlebnissen zur Verfügung, die in **Dynamic Path**, **Advent Calendar** oder **Combo** eingebunden sind.

# Beispiel

widget.onRouteChange = function (event) {
if (event.data && event.data.screen === 'screen_end-12345') {
const daten = event.data.gameInfo;
console.log("End bildschirm info:", data);
// Process oder forward this information as needed
}
};


Aktualisiert am: 29/10/2026

War dieser Beitrag hilfreich?

Teilen Sie Ihr Feedback mit

Stornieren

Danke!