Articles sur : Développeurs et API
Cet article est aussi disponible en :

Intégration avancée du code d'intégration HTML (widget) via l'API

Exemple de code du widget


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

<!-- Configurer le widget au chargement de la page -->
<script>
fenêtre.addEventListener('load', function () {
var widget = DigitaService.Widget.Create({
autoscroll: true,
element: 'gamification-widget',
engine: 'https://apps.drimify.com/Rf6aGmBR/',
fixed: false,
hauteur:['auto'],
sharingurl: 'https://apps.drimify.com/Rf6aGmBR/',
largeur: '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>


Configuration


Créez un widget en passant un objet d’options à la fonction Create :


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


Options de configuration


Obligatoires


Option

Type

Description

options.element

string - HTMLElement

Élément HTML dans lequel le widget sera intégré. Vous pouvez transmettre directement une référence à un HTMLElement existant ou indiquer son identifiant sous forme de chaîne de caractères. Si vous ne renseignez pas cette propriété, le widget cherchera un élément portant l’identifiant « digitaservice-widget » sur la page.

options.engine

string

URL absolue de l’application à charger dans le widget.


Facultatives


Option

Type

Valeur par défaut

Description

options.height

string

auto

Avant son chargement, le widget a une hauteur par défaut de zéro. Vous pouvez définir une hauteur provisoire pour éviter les sauts de mise en page, selon l’emplacement du widget dans la page parente. La valeur s’exprime en pixels, par exemple « 600px ». Si options.fixed = true, la hauteur reste fixée à la valeur indiquée et des barres de défilement apparaissent si nécessaire.

options.autoscroll

boolean

true

Selon la longueur du contenu du widget et la taille de l’écran de l’utilisateur, il peut être nécessaire de faire défiler la page qui héberge le widget. Par défaut, lorsque l’utilisateur interagit avec le widget, la page défile automatiquement jusqu’en haut du widget pour faciliter son utilisation. Pour désactiver ce comportement, définissez autoscroll sur false. Cette propriété est définie sur false si options.fixed est défini sur true.

options.sharingurl

string

URL de la page qui héberge le widget

URL partagée par les utilisateurs sur les réseaux sociaux pour rediriger vers votre campagne. Si la valeur est une chaîne vide, l’URL de la page qui héberge le widget est utilisée.

options.fixed

boolean

false

En temps normal, le widget se redimensionne automatiquement pour s’adapter au contenu de l’application et éviter les barres de défilement. Si cette option est définie sur true, la hauteur du widget reste fixe. Vous devez alors attribuer à options.height une valeur autre que « auto ». Si la hauteur du contenu dépasse la valeur définie, des barres de défilement permettent de le parcourir.

options.width

string

“100%”

Largeur du widget. Vous pouvez utiliser une unité CSS, par exemple « % » ou « px ».


Chargement


Une fois le widget configuré, vous devez le charger. Vous pouvez le faire à tout moment.


Remarque : veillez à configurer les fonctions de rappel ci-dessous avant le chargement pour ne manquer aucun événement.


widget.load();


Fonctions de rappel des événements


onReady


L’appel à widget.load() lance le chargement et l’initialisation du widget. Une fois cette étape terminée, le widget appelle la fonction de rappel facultative onReady.


Remarque : onReady est déclenché avant l’affichage du premier écran. Le premier événement onRouteChange indique que le participant peut voir du contenu. Si l’expérience ne peut pas démarrer, onReady n’est pas déclenché et onError est appelé à la place.


widget.onReady = function (event) {
// Chargé et prêt à l’emploi
console.log(event.type); // “ready”
console.log(event.data); // {}
};


onError


L’appel à widget.load() lance le chargement et l’initialisation du widget. Toute erreur fatale survenant à partir de ce moment déclenche la fonction de rappel facultative onError.


widget.onError = function (event) {
console.log(event.data.message); // Par exemple : "ERR_15"
};


onComplete


Cette fonction est appelée lorsque le jeu est terminé et que l’utilisateur consulte le dernier écran. Elle fournit également un objet de données décrivant ce qui s’est passé pendant le jeu.


Remarque : si vous souhaitez lancer une action à ce stade, prévoyez un délai dans la fonction de rappel pour laisser à l’utilisateur le temps de lire l’écran de fin. En effet, cet événement se déclenche dès l’arrivée sur le dernier écran. Vous pouvez également utiliser onClose.


widget.onComplete = function (event) {
console.log(event.type); // “complete”
console.log(event.data); // {}
console.log("Score de l’utilisateur : " + event.data.gameMetrics.score);
};


onResize


Cet événement se déclenche lorsque l’application est redimensionnée et fournit sa hauteur en pixels.


widget.onResize = function (event) {
console.log(event.type); // “resize”
console.log(event.data); // {}
console.log("Hauteur de l’application : " + event.data.height);
};


onFirstInteraction


Cet événement se déclenche lorsque l’utilisateur interagit pour la première fois avec l’application chargée, par un toucher ou un clic.


widget.onFirstInteraction = function () {
console.log("L’utilisateur a interagi avec l’application pour la première fois");
};


onRouteChange


Cet événement se déclenche lorsque l’application change de route dans le widget, c’est-à-dire lorsqu’elle passe d’un écran à un autre. Selon le contexte, l’événement peut contenir ou non un objet de données.


widget.onRouteChange = function (event) {
console.log(event.type) // “routechange”
console.log(event.data) // {} ou undefined
console.log("L’utilisateur est passé à un nouvel écran");
};


onScrollToTop


Cet événement se déclenche lorsque l’application tente de faire défiler la page vers le haut. Il peut être utilisé sur la page parente pour gérer les cas où le défilement ne se déclenche pas en raison des restrictions CORS, ou lorsqu’il doit être ajusté. Cet événement ne contient pas d’objet de données.


widget.onScrollToTop = function () {
console.log("Défilement vers le haut de la page");
};


Indicateurs


Voici les principaux indicateurs disponibles selon le type de jeu :


Clé

Description

data.gameMetrics.CurrentAttempt

Numéro de la tentative de l’utilisateur à la fin du jeu.

data.gameMetrics.prizeID

Identifiant du lot.

data.gameMetrics.prizeImage

Image du lot.

data.gameMetrics.prizeName

Nom du lot.

data.gameMetrics.prizeRef

Référence du lot.

data.gameMetrics.totalPossibleAttempts

Nombre total de tentatives possibles.

data.gameMetrics.userWon

true si l’utilisateur a gagné, false dans le cas contraire.

data.gameMetrics.score

Total des points cumulés par l’utilisateur à la fin du jeu.


Informations d’identification


Clé

Description

data.credentials.isPreviewMode

Indique si le jeu est en mode prévisualisation.

data.credentials.projectID

Identifiant de l’application en cours d’utilisation.

data.credentials.projectLanguage

Langue du projet dans le widget (en, fr).

data.credentials.projectName

Nom de l’application.

data.credentials.projectType

Type d’application (quiz, memory…).

data.credentials.publisherID

Identifiant de l’éditeur.

data.credentials.sessionID

Identifiant de session du joueur actuel.


Gestion des erreurs


Il existe deux méthodes principales pour détecter les erreurs et obtenir des informations sur les problèmes qui surviennent dans le widget :


Fonction de rappel onError


La fonction de rappel onError intercepte les erreurs fatales : l’expérience ne peut pas démarrer ou ne peut pas se rétablir après une erreur. Le code d’erreur est disponible dans event.data.message. Dans ces cas, onReady n’est pas déclenché.


widget.onError = function (event) {
if (event.data && typeof event.data.message !== 'undefined') {
basculer (event.data.message) {
par défaut:
// Ne rien faire
break;
case 'ERR_04':
console.log("Quota de vues épuisé");
break;
case 'ERR_05':
console.log("Erreur de sécurité");
break;
case 'ERR_07':
console.log("Application non publiée");
break;
case 'ERR_08':
console.log("Application Premium indisponible");
break;
case 'ERR_09':
console.log("Identifiant de session non détecté");
break;
case 'ERR_10':
console.log("Identifiant de session non autorisé");
break;
case 'ERR_13':
console.log("Échec de l’appel SSO");
break;
case 'ERR_14':
console.log("Langue indisponible");
break;
case 'ERR_15':
console.log("La page n’existe pas");
break;
case 'ERR_17':
console.log("Configuration SSO non valide");
break;
case 'ERR_21':
console.log("Aucun jeu associé au Combo ou au Dynamic Path");
break;
}
}
};


Fonction de rappel onRouteChange


La fonction de rappel onRouteChange se déclenche lorsque l’application passe d’un écran à un autre dans le widget. Elle permet notamment de suivre les erreurs liées à l’état de l’application et à la disponibilité du contenu.


widget.onRouteChange = function (event) {
if (event.data && typeof event.data.errorCode !== 'undefined') {
basculer (event.data.errorCode) {
par défaut:
// Ne rien faire
break;
case 'ERR_02':
console.log("Le contenu n’est pas encore disponible");
break;
case 'ERR_03':
console.log("Le contenu a expiré");
break;
case 'ERR_04':
console.log("Quota de vues épuisé");
break;
case 'ERR_16':
console.log("Aucune question disponible");
break;
case 'ERR_18':
console.log("Entre deux périodes d’activation");
break;
case 'ERR_19':
console.log("En dehors des horaires d’ouverture");
break;
}
}
};


errorCode n’est présent que sur ces écrans d’indisponibilité. Les autres écrans qui empêchent le participant de jouer (participation déjà effectuée, restrictions d’accès, formulaires refusés) ne comportent pas de propriété errorCode : identifiez-les à l’aide du nom d’écran indiqué dans event.data.screen.


Pour consulter la liste complète des noms d’écran, l’ordre des événements au chargement, le fonctionnement de session_uid et les délais d’expiration du chargement, reportez-vous à Cycle de vie du widget et gestion des erreurs.


Récupérer les informations de l’utilisateur sur l’écran de fin (onRouteChange)


Lorsque vous utilisez Dynamic Path™, Advent Calendar ou Combo™, vous pouvez récupérer les informations de l’utilisateur à la fin de chaque jeu à l’aide de la fonction de rappel onRouteChange.


Cette méthode est nécessaire, car l’événement standard onComplete ne se déclenche qu’une fois l’ensemble de l’expérience à plusieurs étapes terminé, et non à la fin de chaque jeu intégré.


Votre système peut ainsi recevoir tous les résultats du jeu (via gameInfo) lorsque l’utilisateur atteint l’écran de fin de l’expérience.


Configuration


Après avoir créé votre widget :


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


Ajoutez l’écouteur d’événement onRouteChange :


widget.onRouteChange = function (event) {
console.log(event.type); // "routechange"
console.log(event.data); // { ... } ou undefined
console.log("L’utilisateur est passé à un nouvel écran");
};

```# Détecter l’écran de fin

Lorsque l’utilisateur atteint l’écran de fin du jeu, le widget renvoie une route correspondant à :

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



Remplacez `YOUR_APP_ID` par l’identifiant de votre application.

# Récupérer les informations de l’utilisateur (`gameInfo`)

Une fois l’écran de fin détecté, vous pouvez récupérer les données :

event.data.gameInfo



`gameInfo` contient un **tableau d’informations sur l’utilisateur**, qui peut inclure :
* Les données saisies par l’utilisateur
* Les résultats ou les scores du jeu
* Les champs renseignés au cours de l’expérience

Ces données ne sont disponibles que sur l’écran de fin des expériences utilisées dans **Dynamic Path**, **Advent Calendar** ou **Combo**.

# Exemple

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


Mis à jour le : 29/10/2026

Cet article a-t-il répondu à vos questions ?

Partagez vos commentaires

Annuler

Merci !