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 de widget



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

   <!-- Setup the widget on page load -->
   <script>
       window.addEventListener('load', function () {
           var widget = DigitaService.Widget.Create({
               autoscroll: true,
               element: 'gamification-widget',
               engine: 'https://apps.drimify.com/XBs15jKF/',
               fixed: false,
               height:['auto'],
               sharingurl: 'https://apps.drimify.com/XBs15jKF/',
               width: '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 Options à la fonction Create :

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


Options de configuration



Obligatoires



OptionTypeDescription
options.elementstring - HTMLElementLe widget sera intégré dans cet HTMLElement. Vous pouvez passer un accès direct à un HTMLElement existant ou fournir l'ID string de cet élément. Si cette propriété n'est pas fournie, il tentera de trouver un ID “digitaservice-widget” sur la page.
options.enginestringL'URL absolue de l'application qui sera chargée dans le widget.


Optionnelles



OptionTypeValeur par défautDescription
options.heightstringautoLe widget a une hauteur par défaut de zéro avant d'être chargé. Vous pouvez remplacer cela par une valeur de substitution pour éviter les sauts de page selon l'emplacement du widget sur la page parente. La valeur est en pixels comme “600px”. En utilisant options.fixed = true, la hauteur sera verrouillée à la valeur fournie, introduisant des barres de défilement.
options.autoscrollbooleantrueSelon la longueur du contenu du widget et l'affichage de l'utilisateur, il peut être nécessaire de faire défiler la page hébergeant le widget. Le comportement par défaut lorsque l'utilisateur utilise le Widget est de défiler la page hôte jusqu'en haut du widget pour faciliter l'utilisation. Pour désactiver cette fonctionnalité, définissez autoscroll sur false. Cette propriété sera false si options.fixed est true.
options.sharingurlstringL'URL hébergeant le widgetLors de l'utilisation du Partage Social, c'est l'URL que les gens partageront sur les réseaux sociaux pour les amener à votre campagne. Si le partage est une chaîne vide, il utilisera la page hébergeante (contenant le widget) comme URL.
options.fixedbooleanfalseHabituellement, le widget changera de taille automatiquement pour s'adapter au contenu du moteur et éviter les barres de défilement. Si cela est défini sur true, alors la hauteur du widget sera fixe et ne changera pas. En utilisant cette option, la valeur de options.height ne doit pas être “auto”. Si la hauteur du moteur est supérieure à la valeur de la hauteur, des barres de défilement seront nécessaires pour naviguer.
options.widthstring“100%”La largeur du widget. Peut être définie en une unité de mesure CSS comme “%” ou “px” par exemple.


Chargement



Une fois qu'un Widget est configuré, vous devez le charger. Vous pouvez charger le widget à tout moment.

Remarque : Assurez-vous de configurer tout retour de fonction ci-dessous avant de le charger afin de pouvoir capturer tous les événements.

widget.load();

Rappels d'Événements



onReady


Une fois que widget.load() a été appelé, cela chargera et initialisera le widget. Lorsque le widget aura terminé ce processus, il invoquera un rappel onReady optionnel.

widget.onReady = function (event) {
   // chargé et prêt à être utilisé
   console.log(event.type); // “ready”
   console.log(event.data); // {}
};


onError


Une fois que widget.load() a été appelé, cela chargera et initialisera le widget. Toute erreur fatale survenant après ce point déclenchera un rappel onError optionnel.

widget.onError = function (event) {
   throw new Error(event.message);
};


onComplete


Une fois que le jeu est terminé et que l'utilisateur regarde l'écran final. Il fournit également un objet de données décrivant ce qui s'est passé dans le jeu.

Remarque : si vous souhaitez agir sur cela, vous pouvez envisager de mettre un délai d'attente dans le rappel pour donner à l'utilisateur le temps de lire l'Écran De Fin car il intervient instantanément lorsque le dernier écran est atteint. Vous pouvez également utiliser onClose.

widget.onComplete = function (event) {
   console.log(event.type); // “complete”
   console.log(event.data); // {}
   console.log("Le score de l'utilisateur était" + event.data.gameMetrics.score);
};


onResize


Se produit lorsque le moteur a changé de taille, fournit la 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);
};


onClose


L'application peut être configurée avec un bouton fermer dédié qui permet à l'utilisateur de fermer l'expérience de manière explicite. Si ce bouton est configuré et que l'utilisateur l'utilise, l'événement fermer sera envoyé. C'est un bon moment pour détruire le widget de votre page et terminer le cycle de vie du widget.

widget.onClose = function () {
   DigitaService.Widget.Destroy();
};


onFirstInteraction


Lorsque l'utilisateur interagit (touche/clic) avec l'application chargée pour la première fois.

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


onRouteChange


Se produit lorsque l'application a changé de route au sein du widget. (Navigue entre les écrans). L'événement peut contenir ou non un objet de données selon le contexte.

widget.onRouteChange = function (event) {
   console.log(event.type) // “routechange”
   console.log(event.data) // {} ou non défini
   console.log("L'utilisateur a navigué vers un nouvel écran");
};


onScrollToTop


Se produit lorsque l'Application tente de faire défiler retour en haut de la page. Peut être utilisé sur la page parente pour s'assurer que le défilement n'est pas activé (CORS) ou doit être ajusté. L'événement ne contient pas d'objet de données.

widget.onScrollToTop = function () {
   console.log("Défilement En Haut");
};


Indicateurs



Voici une liste des indicateurs clés qui peuvent être utilisés selon le type de jeu :

CléDescription
data.gameMetrics.CurrentAttemptLes tentatives de l'utilisateur une fois qu'il a terminé le jeu.
data.gameMetrics.prizeIDL'ID du prix.
data.gameMetrics.prizeImageL'image du prix.
data.gameMetrics.prizeNameLe nom du prix.
data.gameMetrics.prizeRefLa référence du prix.
data.gameMetrics.totalPossibleAttemptsLe nombre total de tentatives possibles.
data.gameMetrics.userWonVrai/faux selon l'état de l'utilisateur.
data.gameMetrics.scoreLe montant total des points accumulés avec lesquels cet utilisateur termine le jeu.


Identifiants


CléDescription
data.credentials.isPreviewModeVérifie si le jeu est en mode prévisualisation.
data.credentials.projectIDL'ID de l'application actuelle jouée.
data.credentials.projectLanguageLa langue du projet dans le widget (en, fr).
data.credentials.projectNameLe nom de l'application.
data.credentials.projectTypeLe type d'application (quiz, memory...).
data.credentials.publisherIDL'ID de l'éditeur.
data.credentials.sessionIDL'ID de session du joueur actuel.


Gestion des erreurs



Il existe deux manières principales de détecter les erreurs et de récupérer des informations sur les problèmes survenant dans le widget :

Rappel onError



Le rappel onError capture toutes les erreurs graves qui se produisent après le chargement du widget. Cela peut être utile pour identifier lorsqu'une page n'existe pas ou si un échec critique se produit.

widget.onError = function (event) {
    if (typeof event.data.message !== 'undefined') {
        switch (event.data.message) {
            par défaut:
                // Ne rien faire
                break;
            case 'ERR_15':
                console.log("La page n'existe pas");
                break;
        }
    }
};


Rappel onRouteChange



Le rappel onRouteChange est déclenché lorsque l'application navigue entre les différentes écrans à l'intérieur du widget. Cela est utile pour suivre les erreurs liées à l'état de l'application et la disponibilité du contenu.

widget.onRouteChange = function (event) {
    if (typeof event.data.errorCode !== 'undefined') {
        switch (event.data.errorCode) {
            par défaut:
                // Ne rien faire
                break;
            case 'ERR_01':
                console.log("Aucun forfait disponible");
                break;
            case 'ERR_02':
                console.log("Contenu non encore disponible");
                break;
            case 'ERR_03':
                console.log("Contenu expiré");
                break;
            case 'ERR_04':
                console.log("Plus de vues disponibles");
                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 non disponible");
                break;
            case 'ERR_09':
                console.log("Session Uid non détectée");
                break;
            case 'ERR_10':
                console.log("Session Uid déjà utilisée");
                break;
            case 'ERR_11':
                console.log("Forfait non activé");
                break;
            case 'ERR_12':
                console.log("Données reçues incorrectes");
                break;
            case 'ERR_13':
                console.log("Appel SSO échoué");
                break;
            case 'ERR_14':
                console.log("Langue indisponible");
                break;
        }
    }
};


En utilisant à la fois onError et onRouteChange, vous pouvez efficacement suivre et contrôler les problèmes qui pourraient survenir dans le widget, garantissant ainsi une meilleure expérience utilisateur.

Mis à jour le : 05/03/2025

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

Partagez vos commentaires

Annuler

Merci !