Améliorez l'engagement dans votre application en touchant vos utilisateurs là où ils se trouvent. Intégrez le SDK Engage pour proposer des recommandations personnalisées et du contenu de continuité directement aux utilisateurs sur différentes surfaces sur l'appareil, comme Collections, Entertainment Space et le Play Store. L'intégration ajoute moins de 50 Ko (compressés) à la taille moyenne de l'APK et prend environ une semaine de temps de développement pour la plupart des applications. Pour en savoir plus, consultez notre site dédié aux entreprises.
Ce guide explique aux développeurs partenaires comment diffuser des contenus liés à la santé et au fitness sur les surfaces de contenu Engage.
Détails de l'intégration
Terminologie
Cette intégration comprend les trois types de clusters suivants : Recommendation (Recommandations), Featured (Sélection) et Continuation (Suite).
Les clusters Recommendation affichent des suggestions personnalisées de forme et de bien-être provenant d'un développeur partenaire individuel. Ces recommandations peuvent être personnalisées en fonction de l'utilisateur ou généralisées (par exemple, les tendances en matière de forme physique et de santé). Utilisez-les pour afficher des articles ou des personnes liés à la santé et au fitness.
- Un cluster "Recommendation" peut être constitué de fiches
ArticleEntity
,PersonEntity
ouEventEntity
, mais pas de types d'entités différents.
Les recommandations présentent la structure suivante :
Cluster "Recommendations" : vue de l'interface utilisateur contenant un groupe de recommandations du même développeur partenaire.
Entité : objet représentant un seul élément dans un cluster. Cette intégration propose certaines entités qui seraient affichées à l'aide du cluster de recommandations :
ArticleEntity : ArticleEntity représente une recommandation de contenu textuel lié à la santé et au fitness. Il peut être utilisé pour des articles, des billets de blog, des contenus marketing, des extraits d'actualités, etc.
Figure 1 : interface utilisateur affichant une seule ArticleEntity dans le cluster "Recommandations". PersonEntity : PersonEntity représente une personne. Les recommandations peuvent mettre en avant un coach ou toute personne liée à la santé et au fitness, etc.
Figure 2 : Interface utilisateur affichant une seule PersonEntity dans un cluster de recommandations. EventEntity : EventEntity représente un événement à venir. L'heure de début d'un événement est une information essentielle qui doit être communiquée aux utilisateurs. Cette entité peut être utilisée pour mettre en avant des événements liés à la santé et au fitness, comme des collectes de sang, des séances d'entraînement, des cours de sport ou de yoga, etc.
Figure 3 : Interface utilisateur affichant une seule EventEntity dans le cluster "Recommandations".
- Un cluster "Recommendation" peut être constitué de fiches
Le cluster Suite affiche dans un regroupement d'UI le contenu de plusieurs partenaires développeurs avec lequel les utilisateurs ont interagi récemment. Chaque développeur partenaire est autorisé à diffuser au maximum 10 entités dans le cluster "Continuation".
Votre contenu de continuation peut prendre la structure suivante :
ArticleEntity : ArticleEntity représente une recommandation de contenu textuel lié à la santé et au fitness. Cette entité peut être utilisée pour représenter des articles d'actualité ou d'autres contenus inachevés que l'utilisateur souhaite continuer à consommer là où il s'est arrêté. Ex. : extrait d'article de presse ou d'article de blog sur des thèmes liés à la santé ou au fitness.
Figure 6 : Interface utilisateur montrant une seule ArticleEntity dans un cluster de continuation. EventReservationEntity : EventReservationEntity représente une réservation pour un événement et aide les utilisateurs à suivre les réservations d'événements de remise en forme et de santé à venir ou en cours. Exemple : sessions de formation
Figure 8 : Interface utilisateur montrant une seule EventReservationEntity dans un cluster "Continuation".
Le cluster Featured affiche une sélection d'entités de plusieurs développeurs partenaires dans un même groupe d'UI. Il n'existe qu'un seul cluster "Featured", situé dans la partie supérieure de l'UI avec un emplacement prioritaire au-dessus de tous les clusters "Recommendation". Chaque développeur partenaire est autorisé à diffuser jusqu'à 10 entités dans le cluster "Featured".
GenericFeaturedEntity : GenericFeaturedEntity diffère de l'élément de recommandation en ce que l'élément mis en avant doit être utilisé pour un seul contenu principal des développeurs et doit représenter le contenu le plus important qui sera intéressant et pertinent pour les utilisateurs.
Figure 12 : Interface utilisateur affichant une seule carte GenericFeaturedEntity de héros dans un cluster de mises en avant
Travail préalable
Niveau d'API minimal : 19
Ajoutez la bibliothèque com.google.android.engage:engage-core
à votre application :
dependencies {
// Make sure you also include that repository in your project's build.gradle file.
implementation 'com.google.android.engage:engage-core:1.5.2'
}
Résumé
La conception repose sur l'implémentation d'un service lié.
Les données qu'un client peut publier sont soumises aux limites suivantes pour chaque type de cluster :
Type de cluster | Nombre limite de clusters | Limites minimales d'entités dans un cluster | Limites maximales d'entités dans un cluster |
---|---|---|---|
Cluster(s) "Recommendation" | 7 maximum | Au moins un | 50 maximum (ArticleEntity , PersonEntity ou EventEntity ) |
Cluster "Continuation" | 1 maximum | Au moins un | 20 maximum (ArticleEntity ou EventReservationEntity ) |
Cluster "Featured" | 1 maximum | Au moins un | 20 maximum (GenericFeaturedEntity ) |
Étape 1 : Fournir les données d'entité
Le SDK a défini différentes entités pour représenter chaque type d'élément. Nous prenons en charge les entités suivantes pour la catégorie "Santé et remise en forme" :
GenericFeaturedEntity
ArticleEntity
PersonEntity
EventEntity
EventReservationEntity
Les tableaux ci-dessous décrivent les attributs disponibles pour chaque type et indiquent s'ils sont obligatoires.
GenericFeaturedEntity
Attribut | Obligatoire ? | Description | Format |
---|---|---|---|
URI d'action | Obligatoire |
Lien profond vers l'entité dans l'application pour les fournisseurs. Remarque : Vous pouvez utiliser des liens profonds pour l'attribution. Consultez ces questions fréquentes. |
URI |
Images poster | Obligatoire | Nous n'afficherons qu'une seule image lorsque plusieurs images seront fournies. Le format recommandé est 16:9. Remarque : Si un badge est fourni, veuillez vous assurer qu'il y a un espace de sécurité de 24 dps en haut et en bas de l'image. |
Consultez la section Caractéristiques des images pour en savoir plus. |
Titre | Facultatif | Titre de l'entité. | Texte libre Taille de texte recommandée : 50 caractères |
Description | Facultatif | Un seul paragraphe de texte décrivant l'entité. Remarque : Seule la description ou la liste des sous-titres sera affichée à l'utilisateur, et non les deux. |
Texte libre Taille de texte recommandée : 180 caractères |
Liste des sous-titres | Facultatif | Jusqu'à trois sous-titres, chacun sur une seule ligne de texte. Remarque : Seule la description ou la liste des sous-titres sera affichée à l'utilisateur, et non les deux. |
Texte libre Taille de texte recommandée pour chaque sous-titre : 50 caractères maximum |
Badges | Facultatif | Chaque badge est soit un texte libre (15 caractères maximum), soit une petite image. Traitement UX spécial en plus de l'image/vidéo, par exemple sous forme de badge superposé sur l'image
|
|
Badge - Texte | Facultatif | Titre du badge Remarque : Vous devez indiquer un texte ou une image pour le badge. |
Texte libre Taille de texte recommandée : 15 caractères maximum |
Badge : image | Facultatif | Petite image Traitement spécial de l'UX, par exemple sous forme de badge superposé à la miniature de l'image/vidéo. Remarque : Vous devez indiquer un texte ou une image pour le badge. |
Consultez la section Caractéristiques des images pour en savoir plus. |
Catégories de contenu | Facultatif | Décrivez la catégorie du contenu de l'entité. | Liste des énumérations Pour obtenir de l'aide, consultez la section Catégorie de contenu. |
ArticleEntity
Attribut | Obligatoire ? | Description | Format |
---|---|---|---|
URI d'action | Obligatoire |
Lien profond vers l'entité dans l'application pour les fournisseurs. Remarque : Vous pouvez utiliser des liens profonds pour l'attribution. Consultez ces questions fréquentes. |
URI |
Titre | Obligatoire | Titre de l'entité. | Texte libre Taille de texte recommandée : 50 caractères maximum |
Images poster | Facultatif | Nous n'afficherons qu'une seule image lorsque plusieurs images seront fournies. Le format recommandé est 16:9. Remarque : Nous vous recommandons vivement d'ajouter une image. Si un badge est fourni, veuillez laisser un espace de sécurité de 24 dps en haut et en bas de l'image. |
Consultez la section Caractéristiques des images pour en savoir plus. |
Source – Titre | Facultatif | Nom de l'auteur, de l'organisation ou du journaliste | Texte libre Taille de texte recommandée : 25 caractères maximum |
Source : image | Facultatif | Une image de la source, comme l'auteur, l'organisation ou le journaliste | Consultez la section Caractéristiques des images pour en savoir plus. |
Description | Facultatif | Un seul paragraphe de texte décrivant l'entité. Remarque : Seule la description ou la liste des sous-titres sera affichée à l'utilisateur, et non les deux. |
Texte libre Taille de texte recommandée : 180 caractères |
Liste des sous-titres | Facultatif | Jusqu'à trois sous-titres, chacun sur une seule ligne de texte. Remarque : Seule la description ou la liste des sous-titres sera affichée à l'utilisateur, et non les deux. |
Texte libre Taille de texte recommandée pour chaque sous-titre : 50 caractères maximum |
Badges | Facultatif | Chaque badge est soit un texte libre (15 caractères maximum), soit une petite image. Traitement UX spécial en plus de l'image/vidéo, par exemple sous forme de badge superposé sur l'image
|
|
Badge - Texte | Facultatif | Titre du badge Remarque : Vous devez indiquer un texte ou une image pour le badge. |
Texte libre Taille de texte recommandée : 15 caractères maximum |
Badge : image | Facultatif | Petite image Traitement spécial de l'UX, par exemple sous forme de badge superposé à la miniature de l'image/vidéo. Remarque : Vous devez indiquer un texte ou une image pour le badge. |
Consultez la section Caractéristiques des images pour en savoir plus. |
Heure de publication du contenu | Facultatif | Il s'agit du code temporel de l'epoch en millisecondes indiquant la date de publication ou de mise à jour du contenu dans l'application. | Code temporel de l'epoch (en millisecondes) |
Durée du dernier engagement | Obligatoire sous certaines conditions | Timestamp epoch en millisecondes indiquant la dernière interaction de l'utilisateur avec cette entité. Remarque : Ce champ est obligatoire si cette entité fait partie du cluster de continuation. |
Code temporel de l'epoch (en millisecondes) |
Pourcentage de progression | Obligatoire sous certaines conditions | Pourcentage du contenu complet consommé par l'utilisateur à ce jour. Remarque : Ce champ est obligatoire si cette entité fait partie du cluster de continuation. |
Valeur int comprise entre 0 et 100 inclus. |
Catégories de contenu | Facultatif | Décrivez la catégorie du contenu de l'entité. | Liste des énumérations Pour obtenir de l'aide, consultez la section Catégorie de contenu. |
PersonEntity
Attribut | Obligatoire ? | Description | Format |
---|---|---|---|
URI d'action | Obligatoire |
Lien profond vers l'entité dans l'application pour les fournisseurs. Remarque : Vous pouvez utiliser des liens profonds pour l'attribution. Consultez ces questions fréquentes. |
URI |
Profil : nom | Obligatoire | Nom ou identifiant du profil, par exemple "Jean Dupont", "@TeamPixel", etc. | Chaîne Taille de texte recommandée : 50 caractères maximum |
Profil : avatar | Obligatoire |
Photo de profil ou avatar de l'utilisateur. Remarque : L'image doit être carrée (1:1). |
Consultez la section Caractéristiques des images pour en savoir plus. |
Profil : texte supplémentaire | Facultatif | Texte libre, comme le pseudo du profil. | Texte libre Taille de texte recommandée : 15 caractères maximum |
Profil : image supplémentaire | Facultatif | Petite image, comme un badge de validation. | Consultez la section Caractéristiques des images pour en savoir plus. |
Image d'en-tête | Facultatif | Nous n'afficherons qu'une seule image lorsque plusieurs images seront fournies. Le format recommandé est 16:9. Remarque : Nous vous recommandons vivement d'ajouter une image. Si un badge est fourni, veuillez laisser un espace de sécurité de 24 dps en haut et en bas de l'image. |
Consultez la section Caractéristiques des images pour en savoir plus. |
Popularité : nombre | Facultatif |
Indiquez le nombre d'abonnés ou la valeur de popularité (par exemple, "3,7 M"). Remarque : Si le nombre et la valeur du nombre sont fournis, le nombre sera utilisé. |
Chaîne Taille de texte recommandée : 20 caractères maximum au total pour le nombre et le libellé |
Popularité : valeur du nombre | Facultatif | Nombre d'abonnés ou valeur de popularité. Remarque : Indiquez la valeur du nombre si votre application ne souhaite pas gérer la logique d'optimisation d'un grand nombre pour différentes tailles d'affichage. Si le nombre et la valeur du nombre sont fournis, le nombre sera utilisé. |
Longue |
Popularité : libellé | Facultatif | Indiquez le libellé de popularité. Par exemple, "Mentions J'aime". | Chaîne Taille de texte recommandée : 20 caractères maximum au total pour le nombre et le libellé |
Popularité : visuel | Facultatif |
Indiquez à quoi sert l'interaction. Par exemple : Image montrant l'icône J'aime et les emoji. Peut fournir plusieurs images, mais il est possible qu'elles ne s'affichent pas toutes avec tous les facteurs de forme. Remarque : L'image doit être carrée (1:1). |
Consultez la section Caractéristiques des images pour en savoir plus. |
Note (valeur maximale) | Obligatoire | Valeur maximale de l'échelle d'évaluation. À fournir si la valeur de la note actuelle est également indiquée. |
Nombre >= 0.0 |
Note (valeur actuelle) | Obligatoire | Valeur actuelle de l'échelle d'évaluation. À fournir si la valeur maximale de la note est également indiquée. |
Nombre >= 0.0 |
Nombre de notes | Facultatif | Nombre de notes pour l'entité. Remarque : Renseignez ce champ si votre application contrôle la façon dont le nombre est affiché aux utilisateurs. Utilisez une chaîne concise. Par exemple, si le nombre est de 1 000 000, pensez à utiliser une abréviation telle que "1M" pour éviter qu'il ne soit tronqué sur les petits écrans. |
Chaîne |
Nombre de notes | Facultatif | Nombre de notes pour l'entité. Remarque : Renseignez ce champ si vous ne gérez pas vous-même la logique d'abréviation de l'affichage. Si "Nombre" et "Valeur du nombre" sont tous deux présents, "Nombre" est affiché aux utilisateurs. |
Longue |
Emplacement : pays | Facultatif | Pays où se trouve ou sert la personne. | Texte libre Taille de texte recommandée : 20 caractères maximum |
Ville | Facultatif | Ville où se trouve ou exerce la personne. | Texte libre Taille de texte recommandée : 20 caractères maximum |
Emplacement : adresse à afficher | Facultatif | L'adresse où se trouve la personne ou où elle exerce sa fonction sera affichée à l'utilisateur. | Texte libre Taille de texte recommandée : 20 caractères maximum |
Adresse postale | Facultatif | Adresse (le cas échéant) où se trouve la personne ou où elle travaille. | Texte libre Taille de texte recommandée : 20 caractères maximum |
Zone géographique : État | Facultatif | État (le cas échéant) où se trouve la personne ou où elle exerce. | Texte libre Taille de texte recommandée : 20 caractères maximum |
Zone géographique : code postal | Facultatif | Code postal (le cas échéant) où se trouve la personne ou où elle exerce son activité. | Texte libre Taille de texte recommandée : 20 caractères maximum |
Emplacement : quartier | Facultatif | Quartier (le cas échéant) où se trouve la personne ou où elle exerce son activité. | Texte libre Taille de texte recommandée : 20 caractères maximum |
Badges | Facultatif |
Chaque badge est soit un texte libre (15 caractères maximum), soit une petite image. |
|
Badge - Texte | Facultatif | Titre du badge Remarque : Vous devez indiquer un texte ou une image pour le badge. |
Texte libre Taille de texte recommandée : 15 caractères maximum |
Badge : image | Facultatif | Petite image Traitement spécial de l'UX, par exemple sous forme de badge superposé à la miniature de l'image/vidéo. Remarque : Vous devez indiquer un texte ou une image pour le badge. |
Consultez la section Caractéristiques des images pour en savoir plus. |
Description | Facultatif | Un seul paragraphe de texte décrivant l'entité. Remarque : Seule la description ou la liste des sous-titres sera affichée à l'utilisateur, et non les deux. |
Texte libre Taille de texte recommandée : 180 caractères |
Liste des sous-titres | Facultatif | Jusqu'à trois sous-titres, chacun sur une seule ligne de texte. Remarque : Seule la description ou la liste des sous-titres sera affichée à l'utilisateur, et non les deux. |
Texte libre Taille de texte recommandée pour chaque sous-titre : 50 caractères maximum |
Catégories de contenu | Facultatif | Décrivez la catégorie du contenu de l'entité. | Liste des énumérations éligibles
Pour obtenir de l'aide, consultez la section Catégorie de contenu. |
EventEntity
Attribut | Obligatoire ? | Description | Format |
---|---|---|---|
URI d'action | Obligatoire |
Lien profond vers l'entité dans l'application pour les fournisseurs. Remarque : Vous pouvez utiliser des liens profonds pour l'attribution. Consultez ces questions fréquentes. |
URI |
Titre | Obligatoire | Titre de l'entité. | Chaîne Taille de texte recommandée : 50 caractères maximum |
Heure de début | Obligatoire |
Code temporel Unix auquel l'événement doit commencer. Remarque : Cette valeur sera exprimée en millisecondes. |
Code temporel de l'epoch (en millisecondes) |
Mode événement | Obligatoire | Champ permettant d'indiquer si l'événement sera virtuel, en présentiel ou les deux. |
Énumération : VIRTUAL, IN_PERSON ou HYBRID |
Images poster | Obligatoire | Nous n'afficherons qu'une seule image lorsque plusieurs images seront fournies. Le format recommandé est 16:9. Remarque : Nous vous recommandons vivement d'ajouter une image. Si un badge est fourni, veuillez laisser un espace de sécurité de 24 dps en haut et en bas de l'image. |
Consultez la section Caractéristiques des images pour en savoir plus. |
Emplacement : pays | Obligatoire sous certaines conditions | Pays dans lequel l'événement a lieu. Remarque : Cette information est obligatoire pour les événements EN_PRÉSENCE ou HYBRIDES. |
Texte libre Taille de texte recommandée : 20 caractères maximum |
Ville | Obligatoire sous certaines conditions | Ville où se déroule l'événement. Remarque : Cette information est obligatoire pour les événements EN_PRÉSENCE ou HYBRIDES. |
Texte libre Taille de texte recommandée : 20 caractères maximum |
Emplacement : adresse à afficher | Obligatoire sous certaines conditions | Adresse ou nom du lieu où se déroulera l'événement, qui doit être affiché à l'utilisateur. Remarque : Cette information est obligatoire pour les événements EN_PRÉSENCE ou HYBRIDES. |
Texte libre Taille de texte recommandée : 20 caractères maximum |
Adresse postale | Facultatif | Adresse (le cas échéant) du lieu où se déroule l'événement. | Texte libre Taille de texte recommandée : 20 caractères maximum |
Zone géographique : État | Facultatif | Région ou département (le cas échéant) où l'événement est organisé. | Texte libre Taille de texte recommandée : 20 caractères maximum |
Zone géographique : code postal | Facultatif | Code postal (le cas échéant) du lieu où se déroule l'événement. | Texte libre Taille de texte recommandée : 20 caractères maximum |
Emplacement : quartier | Facultatif | Quartier (le cas échéant) dans lequel l'événement est organisé. | Texte libre Taille de texte recommandée : 20 caractères maximum |
Heure de fin | Facultatif |
Horodatage de l'époque où l'événement devrait se terminer. Remarque : Cette valeur sera exprimée en millisecondes. |
Code temporel de l'epoch (en millisecondes) |
Description | Facultatif | Un seul paragraphe de texte décrivant l'entité. Remarque : Seule la description ou la liste des sous-titres sera affichée à l'utilisateur, et non les deux. |
Texte libre Taille de texte recommandée : 180 caractères |
Liste des sous-titres | Facultatif | Jusqu'à trois sous-titres, chacun sur une seule ligne de texte. Remarque : Seule la description ou la liste des sous-titres sera affichée à l'utilisateur, et non les deux. |
Texte libre Taille de texte recommandée pour chaque sous-titre : 50 caractères maximum |
Badges | Facultatif |
Chaque badge est soit un texte libre (15 caractères maximum), soit une petite image. |
|
Badge - Texte | Facultatif | Titre du badge Remarque : Vous devez indiquer un texte ou une image pour le badge. |
Texte libre Taille de texte recommandée : 15 caractères maximum |
Badge : image | Facultatif | Petite image Traitement spécial de l'UX, par exemple sous forme de badge superposé à la miniature de l'image/vidéo. Remarque : Vous devez indiquer un texte ou une image pour le badge. |
Consultez la section Caractéristiques des images pour en savoir plus. |
Prix : CurrentPrice | Obligatoire sous certaines conditions |
Prix actuel du billet/pass pour l'événement. À fournir si le prix barré est indiqué. |
Texte libre |
Prix (prix barré) | Facultatif | Prix d'origine du billet/pass pour l'événement. | Texte libre |
Accroche de prix | Facultatif | Accroche de prix qui met en avant une promotion, un événement ou une remise réservée aux membres, le cas échéant. | Texte libre Taille de texte recommandée : 45 caractères maximum (si le texte est trop long, des points de suspension peuvent s'afficher) |
Catégories de contenu | Facultatif | Décrivez la catégorie du contenu de l'entité. | Liste des énumérations éligibles
Pour obtenir de l'aide, consultez la section Catégorie de contenu. |
EventReservationEntity
Attribut | Obligatoire ? | Description | Format |
---|---|---|---|
URI d'action | Obligatoire |
Lien profond vers l'entité dans l'application pour les fournisseurs. Remarque : Vous pouvez utiliser des liens profonds pour l'attribution. Consultez ces questions fréquentes. |
URI |
Titre | Obligatoire | Titre de l'entité. | Chaîne Taille de texte recommandée : 50 caractères maximum |
Heure de début | Obligatoire |
Code temporel Unix auquel l'événement doit commencer. Remarque : Cette valeur sera exprimée en millisecondes. |
Code temporel de l'epoch (en millisecondes) |
Mode événement | Obligatoire | Champ permettant d'indiquer si l'événement sera virtuel, en présentiel ou les deux. |
Énumération : VIRTUAL, IN_PERSON ou HYBRID |
Emplacement : pays | Obligatoire sous certaines conditions | Pays dans lequel l'événement a lieu. Remarque : Cette information est obligatoire pour les événements EN_PRÉSENCE ou HYBRIDES. |
Texte libre Taille de texte recommandée : 20 caractères maximum |
Ville | Obligatoire sous certaines conditions | Ville où se déroule l'événement. Remarque : Cette information est obligatoire pour les événements EN_PRÉSENCE ou HYBRIDES. |
Texte libre Taille de texte recommandée : 20 caractères maximum |
Emplacement : adresse à afficher | Obligatoire sous certaines conditions | Adresse ou nom du lieu où se déroulera l'événement, qui doit être affiché à l'utilisateur. Remarque : Cette information est obligatoire pour les événements EN_PRÉSENCE ou HYBRIDES. |
Texte libre Taille de texte recommandée : 20 caractères maximum |
Adresse postale | Facultatif | Adresse (le cas échéant) du lieu où se déroule l'événement. | Texte libre Taille de texte recommandée : 20 caractères maximum |
Zone géographique : État | Facultatif | Région ou département (le cas échéant) où l'événement est organisé. | Texte libre Taille de texte recommandée : 20 caractères maximum |
Zone géographique : code postal | Facultatif | Code postal (le cas échéant) du lieu où se déroule l'événement. | Texte libre Taille de texte recommandée : 20 caractères maximum |
Emplacement : quartier | Facultatif | Quartier (le cas échéant) dans lequel l'événement est organisé. | Texte libre Taille de texte recommandée : 20 caractères maximum |
Images poster | Facultatif | Nous n'afficherons qu'une seule image lorsque plusieurs images seront fournies. Le format recommandé est 16:9. Remarque : Nous vous recommandons vivement d'ajouter une image. Si un badge est fourni, veuillez laisser un espace de sécurité de 24 dps en haut et en bas de l'image. |
Consultez la section Caractéristiques des images pour en savoir plus. |
Heure de fin | Facultatif |
Horodatage de l'époque où l'événement devrait se terminer. Remarque : Cette valeur sera exprimée en millisecondes. |
Code temporel de l'epoch (en millisecondes) |
Fournisseur de services : nom | Facultatif |
Nom du fournisseur de services. Remarque : Vous devez fournir du texte ou une image pour le fournisseur de services. |
Texte libre. Par exemple, le nom de l'organisateur de l'événement ou de la visite |
Fournisseur de services : image | Facultatif |
Logo/Image du fournisseur de services. Remarque : Vous devez fournir du texte ou une image pour le fournisseur de services. |
Consultez la section Caractéristiques des images pour en savoir plus. |
Description | Facultatif | Un seul paragraphe de texte décrivant l'entité. Remarque : Seule la description ou la liste des sous-titres sera affichée à l'utilisateur, et non les deux. |
Texte libre Taille de texte recommandée : 180 caractères |
Liste des sous-titres | Facultatif | Jusqu'à trois sous-titres, chacun sur une seule ligne de texte. Remarque : Seule la description ou la liste des sous-titres sera affichée à l'utilisateur, et non les deux. |
Texte libre Taille de texte recommandée pour chaque sous-titre : 50 caractères maximum |
Badges | Facultatif |
Chaque badge est soit un texte libre (15 caractères maximum), soit une petite image. |
|
Badge - Texte | Facultatif | Titre du badge Remarque : Vous devez indiquer un texte ou une image pour le badge. |
Texte libre Taille de texte recommandée : 15 caractères maximum |
Badge : image | Facultatif | Petite image Traitement spécial de l'UX, par exemple sous forme de badge superposé à la miniature de l'image/vidéo. Remarque : Vous devez indiquer un texte ou une image pour le badge. |
Consultez la section Caractéristiques des images pour en savoir plus. |
ID de réservation | Facultatif | ID de réservation pour la réservation de l'événement. | Texte libre |
Prix : CurrentPrice | Obligatoire sous certaines conditions |
Prix actuel du billet/pass pour l'événement. À fournir si le prix barré est indiqué. |
Texte libre |
Prix (prix barré) | Facultatif | Prix d'origine du billet/pass pour l'événement. | Texte libre |
Accroche de prix | Facultatif | Accroche de prix qui met en avant une promotion, un événement ou une remise réservée aux membres, le cas échéant. | Texte libre Taille de texte recommandée : 45 caractères maximum (si le texte est trop long, des points de suspension peuvent s'afficher) |
Note (valeur maximale) | Facultatif | Valeur maximale de l'échelle d'évaluation. À fournir si la valeur de la note actuelle est également indiquée. |
Nombre >= 0.0 |
Note (valeur actuelle) | Facultatif | Valeur actuelle de l'échelle d'évaluation. À fournir si la valeur maximale de la note est également indiquée. |
Nombre >= 0.0 |
Nombre de notes | Facultatif | Nombre de notes pour l'événement. Remarque : Renseignez ce champ si votre application souhaite contrôler la façon dont cette information est affichée aux utilisateurs. Veuillez fournir la chaîne concise qui peut être affichée pour l'utilisateur. Par exemple, si le nombre est de 1 000 000, pensez à utiliser des abréviations comme "1M" pour éviter qu'il ne soit tronqué sur les petits écrans. |
Chaîne |
Nombre de notes | Facultatif | Nombre de notes pour l'événement. Remarque : Renseignez ce champ si vous ne souhaitez pas gérer vous-même la logique d'abréviation de l'affichage. Si les deux valeurs (Nombre et Valeur du nombre) sont présentes, nous utiliserons le nombre pour l'afficher aux utilisateurs. |
Longue |
Catégories de contenu | Facultatif | Décrivez la catégorie du contenu de l'entité. | Liste des énumérations éligibles
Pour obtenir de l'aide, consultez la section Catégorie de contenu. |
Caractéristiques des images
Vous trouverez ci-dessous les spécifications requises pour les composants Image :
Format | Nombre minimal de pixels | Nombre de pixels recommandé |
---|---|---|
Carré (1x1) Préféré |
300 x 300 | 1 200 x 1 200 |
Paysage (1,91 x 1) | 600 x 314 | 1 200 x 628 |
Format portrait (4 x 5) | 480 x 600 | 960 x 1200 |
Les images doivent être hébergées sur des CDN publics pour que Google puisse y accéder.
Formats des fichiers
PNG, JPG, GIF statique, WebP
Taille maximale des fichiers
5 120 Ko
Autres recommandations
- Zone de sécurité de l'image : placez le contenu important dans les 80 % les plus au centre de l'image.
- Utilisez un arrière-plan transparent pour que l'image s'affiche correctement avec les paramètres du thème sombre et clair.
Catégorie de contenu
La catégorie de contenu permet aux applications de publier du contenu appartenant à plusieurs catégories. Le contenu est mappé à certaines catégories prédéfinies, à savoir :
TYPE_EDUCATION
TYPE_SPORTS
TYPE_MOVIES_AND_TV_SHOWS
TYPE_BOOKS
TYPE_AUDIOBOOKS
TYPE_MUSIC
TYPE_DIGITAL_GAMES
TYPE_TRAVEL_AND_LOCAL
TYPE_HOME_AND_AUTO
TYPE_BUSINESS
TYPE_NEWS
TYPE_FOOD_AND_DRINK
TYPE_SHOPPING
TYPE_HEALTH_AND_FITENESS
TYPE_MEDICAL
TYPE_PARENTING
TYPE_DATING
Les images doivent être hébergées sur des CDN publics pour que Google puisse y accéder.
Consignes pour utiliser les catégories de contenu
- Certaines entités, comme ArticleEntity et GenericFeaturedEntity, peuvent utiliser n'importe quelle catégorie de contenu. Pour les autres entités telles que EventEntity, EventReservationEntity et PersonEntity, seule une partie de ces catégories est éligible. Consultez la liste des catégories éligibles pour un type d'entité avant de la remplir.
Utilisez le type d'entité spécifique pour certaines catégories de contenu plutôt qu'une combinaison des entités génériques et de ContentCategory :
- TYPE_MOVIES_AND_TV_SHOWS : consultez les entités du guide d'intégration Watch avant d'utiliser les entités génériques.
- TYPE_BOOKS : consultez EbookEntity avant d'utiliser les entités génériques.
- TYPE_AUDIOBOOKS : consultez AudiobookEntity avant d'utiliser les entités génériques.
- TYPE_SHOPPING : consultez ShoppingEntity avant d'utiliser les entités génériques.
- TYPE_FOOD_AND_DRINK : consultez le guide d'intégration des aliments avant d'utiliser les entités génériques.
Le champ "ContentCategory" est facultatif et doit être laissé vide si le contenu n'appartient à aucune des catégories mentionnées précédemment.
Si plusieurs catégories de contenu sont fournies, indiquez-les par ordre de pertinence pour le contenu, en plaçant la catégorie de contenu la plus pertinente en premier dans la liste.
Étape 2 : Fournir les données de cluster
Il est recommandé d'exécuter la tâche de publication de contenu en arrière-plan (par exemple, à l'aide de WorkManager) et de la programmer régulièrement ou sur la base d'un événement précis (par exemple, chaque fois que l'utilisateur ouvre l'application ou lorsqu'il vient d'ajouter quelque chose à son panier).
AppEngagePublishClient
permet la publication des clusters.
Les API suivantes permettent de publier des clusters dans le client :
isServiceAvailable
publishRecommendationClusters
publishFeaturedCluster
publishContinuationCluster
publishUserAccountManagementRequest
updatePublishStatus
deleteRecommendationsClusters
deleteFeaturedCluster
deleteContinuationCluster
deleteUserManagementCluster
deleteClusters
isServiceAvailable
Cette API permet de vérifier si le service est disponible pour l'intégration et de déterminer si le contenu peut être présenté sur l'appareil.
Kotlin
client.isServiceAvailable.addOnCompleteListener { task ->
if (task.isSuccessful) {
// Handle IPC call success
if(task.result) {
// Service is available on the device, proceed with content publish
// calls.
} else {
// Service is not available, no further action is needed.
}
} else {
// The IPC call itself fails, proceed with error handling logic here,
// such as retry.
}
}
Java
client.isServiceAvailable().addOnCompleteListener(task - > {
if (task.isSuccessful()) {
// Handle success
if(task.getResult()) {
// Service is available on the device, proceed with content publish
// calls.
} else {
// Service is not available, no further action is needed.
}
} else {
// The IPC call itself fails, proceed with error handling logic here,
// such as retry.
}
});
publishRecommendationClusters
Cette API permet de publier une liste d'objets RecommendationCluster
.
Kotlin
client.publishRecommendationClusters(
PublishRecommendationClustersRequest.Builder()
.addRecommendationCluster(
RecommendationCluster.Builder()
.addEntity(entity1)
.addEntity(entity2)
.setTitle("Top Picks For You")
.build()
)
.build()
)
Java
client.publishRecommendationClusters(
new PublishRecommendationClustersRequest.Builder()
.addRecommendationCluster(
new RecommendationCluster.Builder()
.addEntity(entity1)
.addEntity(entity2)
.setTitle("Top Picks For You")
.build())
.build());
Lorsque le service reçoit la requête, les actions suivantes ont lieu dans une seule transaction :
- Les données
RecommendationCluster
existantes du développeur partenaire sont supprimées. - Les données de la requête sont analysées et stockées dans le cluster "Recommendation" mis à jour.
En cas d'erreur, la requête entière est rejetée, et l'état existant est maintenu.
publishFeaturedCluster
Cette API permet de publier une liste d'objets FeaturedCluster
.
Kotlin
client.publishFeaturedCluster(
PublishFeaturedClusterRequest.Builder()
.setFeaturedCluster(
FeaturedCluster.Builder()
.addEntity(entity1)
.addEntity(entity2)
.build())
.build())
Java
client.publishFeaturedCluster(
new PublishFeaturedClustersRequest.Builder()
.addFeaturedCluster(
new FeaturedCluster.Builder()
.addEntity(entity1)
.addEntity(entity2)
.build())
.build());
Lorsque le service reçoit la requête, les actions suivantes ont lieu dans une seule transaction :
- Les données
FeaturedCluster
existantes du développeur partenaire sont supprimées. - Les données de la requête sont analysées et stockées dans le cluster "Featured" mis à jour.
En cas d'erreur, la requête entière est rejetée, et l'état existant est maintenu.
publishContinuationCluster
Cette API permet de publier un objet ContinuationCluster
.
Kotlin
client.publishContinuationCluster(
PublishContinuationClusterRequest.Builder()
.setContinuationCluster(
ContinuationCluster.Builder()
.addEntity(entity1)
.addEntity(entity2)
.build())
.build())
Java
client.publishContinuationCluster(
new PublishContinuationClusterRequest.Builder()
.setContinuationCluster(
new ContinuationCluster.Builder()
.addEntity(entity1)
.addEntity(entity2)
.build())
.build());
Lorsque le service reçoit la requête, les actions suivantes ont lieu dans une seule transaction :
- Les données
ContinuationCluster
existantes du développeur partenaire sont supprimées. - Les données de la requête sont analysées et stockées dans le cluster "Continuation" mis à jour.
En cas d'erreur, la requête entière est rejetée, et l'état existant est maintenu.
publishUserAccountManagementRequest
Cette API permet de publier une fiche de connexion. L'action de connexion redirige les utilisateurs vers la page de connexion de l'application afin que celle-ci puisse publier du contenu (ou fournir un contenu plus personnalisé).
Les métadonnées suivantes font partie de la fiche de connexion :
Attribut | Obligatoire ? | Description |
---|---|---|
URI d'action | Obligatoire | Lien profond vers l'action (par exemple, accès à la page de connexion de l'application) |
Image | Facultatif : si aucun titre n'est fourni, vous devez en fournir un |
Image affichée sur la fiche Images au format 16:9 avec une résolution de 1 264 x 712 |
Titre | Facultatif : si aucune image n'est fournie, vous devez en fournir une | Titre sur la fiche |
Texte de l'action | Facultatif | Texte affiché sur l'incitation à l'action (par exemple, "Se connecter") |
Sous-titre | Facultatif | Sous-titre facultatif sur la fiche |
Kotlin
var SIGN_IN_CARD_ENTITY =
SignInCardEntity.Builder()
.addPosterImage(
Image.Builder()
.setImageUri(Uri.parse("http://www.x.com/image.png"))
.setImageHeightInPixel(500)
.setImageWidthInPixel(500)
.build())
.setActionText("Sign In")
.setActionUri(Uri.parse("http://xx.com/signin"))
.build()
client.publishUserAccountManagementRequest(
PublishUserAccountManagementRequest.Builder()
.setSignInCardEntity(SIGN_IN_CARD_ENTITY)
.build());
Java
SignInCardEntity SIGN_IN_CARD_ENTITY =
new SignInCardEntity.Builder()
.addPosterImage(
new Image.Builder()
.setImageUri(Uri.parse("http://www.x.com/image.png"))
.setImageHeightInPixel(500)
.setImageWidthInPixel(500)
.build())
.setActionText("Sign In")
.setActionUri(Uri.parse("http://xx.com/signin"))
.build();
client.publishUserAccountManagementRequest(
new PublishUserAccountManagementRequest.Builder()
.setSignInCardEntity(SIGN_IN_CARD_ENTITY)
.build());
Lorsque le service reçoit la requête, les actions suivantes ont lieu dans une seule transaction :
- Les données
UserAccountManagementCluster
existantes du développeur partenaire sont supprimées. - Les données de la requête sont analysées et stockées dans le cluster "UserAccountManagementCluster" mis à jour.
En cas d'erreur, la requête entière est rejetée, et l'état existant est maintenu.
updatePublishStatus
Si, pour une raison opérationnelle interne, aucun des clusters n'est publié, nous vous recommandons vivement de mettre à jour l'état de publication à l'aide de l'API updatePublishStatus. Ce point est important pour les raisons suivantes :
- Il est essentiel d'indiquer l'état dans tous les scénarios, même lorsque le contenu est publié (STATUS == PUBLISHED) pour renseigner les tableaux de bord qui utilisent cet état explicite afin de transmettre l'état et d'autres métriques de votre intégration.
- Si aucun contenu n'est publié, mais que l'état de l'intégration fonctionne correctement (STATUS == NOT_PUBLISHED), Google peut éviter de déclencher des alertes dans les tableaux de bord concernant l'état de l'application. Cela confirme que le contenu n'est pas publié en raison d'une situation attendue du point de vue du fournisseur.
- Cela permet aux développeurs de fournir des informations concernant la date de publication des données.
- Google peut utiliser les codes d'état pour encourager l'utilisateur à effectuer certaines actions dans l'application, afin qu'il puisse afficher ou contourner le contenu de l'application.
Voici la liste des codes d'état de publication éligibles :
// Content is published
AppEngagePublishStatusCode.PUBLISHED,
// Content is not published as user is not signed in
AppEngagePublishStatusCode.NOT_PUBLISHED_REQUIRES_SIGN_IN,
// Content is not published as user is not subscribed
AppEngagePublishStatusCode.NOT_PUBLISHED_REQUIRES_SUBSCRIPTION,
// Content is not published as user location is ineligible
AppEngagePublishStatusCode.NOT_PUBLISHED_INELIGIBLE_LOCATION,
// Content is not published as there is no eligible content
AppEngagePublishStatusCode.NOT_PUBLISHED_NO_ELIGIBLE_CONTENT,
// Content is not published as the feature is disabled by the client
// Available in v1.3.1
AppEngagePublishStatusCode.NOT_PUBLISHED_FEATURE_DISABLED_BY_CLIENT,
// Content is not published as the feature due to a client error
// Available in v1.3.1
AppEngagePublishStatusCode.NOT_PUBLISHED_CLIENT_ERROR,
// Content is not published as the feature due to a service error
// Available in v1.3.1
AppEngagePublishStatusCode.NOT_PUBLISHED_SERVICE_ERROR,
// Content is not published due to some other reason
// Reach out to engage-developers@ before using this enum.
AppEngagePublishStatusCode.NOT_PUBLISHED_OTHER
Si le contenu n'est pas publié parce que l'utilisateur n'est pas connecté, Google vous recommande de publier la fiche de connexion. Si, pour une raison quelconque, les fournisseurs ne peuvent pas publier la fiche de connexion, nous vous recommandons d'appeler l'API updatePublishStatus avec le code d'état NOT_PUBLISHED_REQUIRES_SIGN_IN.
Kotlin
client.updatePublishStatus(
PublishStatusRequest.Builder()
.setStatusCode(AppEngagePublishStatusCode.NOT_PUBLISHED_REQUIRES_SIGN_IN)
.build())
Java
client.updatePublishStatus(
new PublishStatusRequest.Builder()
.setStatusCode(AppEngagePublishStatusCode.NOT_PUBLISHED_REQUIRES_SIGN_IN)
.build());
deleteRecommendationClusters
Cette API permet de supprimer le contenu des clusters "Recommendation".
Kotlin
client.deleteRecommendationClusters()
Java
client.deleteRecommendationClusters();
Lorsque le service reçoit la requête, il supprime les données existantes des clusters "Recommendation". En cas d'erreur, la requête entière est rejetée, et l'état existant est maintenu.
deleteFeaturedCluster
Cette API permet de supprimer le contenu du cluster "Featured".
Kotlin
client.deleteFeaturedCluster()
Java
client.deleteFeaturedCluster();
Lorsque le service reçoit la requête, il supprime les données existantes du cluster "Featured". En cas d'erreur, la requête entière est rejetée, et l'état existant est maintenu.
deleteContinuationCluster
Cette API permet de supprimer le contenu du cluster "Continuation".
Kotlin
client.deleteContinuationCluster()
Java
client.deleteContinuationCluster();
Lorsque le service reçoit la requête, il supprime les données existantes du cluster "Continuation". En cas d'erreur, la requête entière est rejetée, et l'état existant est maintenu.
deleteUserManagementCluster
Cette API permet de supprimer le contenu du cluster "UserAccountManagement".
Kotlin
client.deleteUserManagementCluster()
Java
client.deleteUserManagementCluster();
Lorsque le service reçoit la requête, il supprime les données existantes du cluster "UserAccountManagement". En cas d'erreur, la requête entière est rejetée, et l'état existant est maintenu.
deleteClusters
Cette API permet de supprimer le contenu d'un type de cluster donné.
Kotlin
client.deleteClusters(
DeleteClustersRequest.Builder()
.addClusterType(ClusterType.TYPE_CONTINUATION)
.addClusterType(ClusterType.TYPE_FEATURED)
.addClusterType(ClusterType.TYPE_RECOMMENDATION)
.build())
Java
client.deleteClusters(
new DeleteClustersRequest.Builder()
.addClusterType(ClusterType.TYPE_CONTINUATION)
.addClusterType(ClusterType.TYPE_FEATURED)
.addClusterType(ClusterType.TYPE_RECOMMENDATION)
.build());
Lorsque le service reçoit la requête, il supprime les données existantes de tous les clusters correspondant aux types de clusters spécifiés. Les clients peuvent choisir de transmettre un ou plusieurs types de clusters. En cas d'erreur, la requête entière est rejetée, et l'état existant est maintenu.
Gestion des exceptions
Il est fortement recommandé d'écouter le résultat de la tâche à partir des API de publication afin qu'une action de suivi puisse être effectuée pour récupérer et renvoyer une tâche réussie.
Kotlin
client.publishRecommendationClusters(
PublishRecommendationClustersRequest.Builder()
.addRecommendationCluster(..)
.build())
.addOnCompleteListener { task ->
if (task.isSuccessful) {
// do something
} else {
val exception = task.exception
if (exception is AppEngageException) {
@AppEngageErrorCode val errorCode = exception.errorCode
if (errorCode == AppEngageErrorCode.SERVICE_NOT_FOUND) {
// do something
}
}
}
}
Java
client.publishRecommendationClusters(
new PublishRecommendationClustersRequest.Builder()
.addRecommendationCluster(...)
.build())
.addOnCompleteListener(
task -> {
if (task.isSuccessful()) {
// do something
} else {
Exception exception = task.getException();
if (exception instanceof AppEngageException) {
@AppEngageErrorCode
int errorCode = ((AppEngageException) exception).getErrorCode();
if (errorCode == AppEngageErrorCode.SERVICE_NOT_FOUND) {
// do something
}
}
}
});
L'erreur est renvoyée au format AppEngageException
. La cause est incluse sous la forme d'un code d'erreur.
Code d'erreur | Nom de l'erreur | Remarque |
---|---|---|
1 |
SERVICE_NOT_FOUND |
Le service n'est pas disponible sur l'appareil donné. |
2 |
SERVICE_NOT_AVAILABLE |
Le service est disponible sur l'appareil donné, mais pas au moment de l'appel (par exemple, il est explicitement désactivé). |
3 |
SERVICE_CALL_EXECUTION_FAILURE |
L'exécution de la tâche a échoué en raison de problèmes de thread. Dans ce cas, vous pouvez réessayer. |
4 |
SERVICE_CALL_PERMISSION_DENIED |
L'appelant n'est pas autorisé à effectuer l'appel du service. |
5 |
SERVICE_CALL_INVALID_ARGUMENT |
La requête contient des données non valides (par exemple, un nombre plus élevé que le nombre de clusters autorisé). |
6 |
SERVICE_CALL_INTERNAL |
Une erreur s'est produite au niveau du service. |
7 |
SERVICE_CALL_RESOURCE_EXHAUSTED |
L'appel du service est effectué trop fréquemment. |
Étape 3 : Gérer les intents de diffusion
En plus d'effectuer des appels d'API de publication de contenu via une tâche, vous devez également configurer un objet BroadcastReceiver
pour recevoir la requête de publication de contenu.
L'objectif des intents de diffusion est principalement de réactiver des applications et de forcer la synchronisation des données. Les intents de diffusion ne sont pas conçus pour être envoyés très fréquemment. Ils ne se déclenchent que lorsque le service Engage détermine que le contenu est peut-être obsolète (par exemple, s'il date d'il y a une semaine). De cette façon, l'utilisateur a plus de chances de bénéficier d'une expérience de contenu actualisée, même si l'application n'a pas été exécutée pendant une longue période.
Le BroadcastReceiver
doit être configuré de deux manières :
Enregistrez dynamiquement une instance de la classe
BroadcastReceiver
à l'aide deContext.registerReceiver()
. Cela permet la communication à partir d'applications restées actives en mémoire.
Kotlin
class AppEngageBroadcastReceiver : BroadcastReceiver(){
// Trigger recommendation cluster publish when PUBLISH_RECOMMENDATION broadcast
// is received
// Trigger featured cluster publish when PUBLISH_FEATURED broadcast is received
// Trigger continuation cluster publish when PUBLISH_CONTINUATION broadcast is
// received
}
fun registerBroadcastReceivers(context: Context){
var context = context
context = context.applicationContext
// Register Recommendation Cluster Publish Intent
context.registerReceiver(AppEngageBroadcastReceiver(),
IntentFilter(Intents.ACTION_PUBLISH_RECOMMENDATION),
com.google.android.engage.service.BroadcastReceiverPermissions.BROADCAST_REQUEST_DATA_PUBLISH_PERMISSION,
/*scheduler=*/null)
// Register Featured Cluster Publish Intent
context.registerReceiver(AppEngageBroadcastReceiver(),
IntentFilter(Intents.ACTION_PUBLISH_FEATURED),
com.google.android.engage.service.BroadcastReceiverPermissions.BROADCAST_REQUEST_DATA_PUBLISH_PERMISSION,
/*scheduler=*/null)
// Register Continuation Cluster Publish Intent
context.registerReceiver(AppEngageBroadcastReceiver(),
IntentFilter(Intents.ACTION_PUBLISH_CONTINUATION),
com.google.android.engage.service.BroadcastReceiverPermissions.BROADCAST_REQUEST_DATA_PUBLISH_PERMISSION,
/*scheduler=*/null)
}
Java
class AppEngageBroadcastReceiver extends BroadcastReceiver {
// Trigger recommendation cluster publish when PUBLISH_RECOMMENDATION broadcast
// is received
// Trigger featured cluster publish when PUBLISH_FEATURED broadcast is received
// Trigger continuation cluster publish when PUBLISH_CONTINUATION broadcast is
// received
}
public static void registerBroadcastReceivers(Context context) {
context = context.getApplicationContext();
// Register Recommendation Cluster Publish Intent
context.registerReceiver(new AppEngageBroadcastReceiver(),
new IntentFilter(com.google.android.engage.service.Intents.ACTION_PUBLISH_RECOMMENDATION),
com.google.android.engage.service.BroadcastReceiverPermissions.BROADCAST_REQUEST_DATA_PUBLISH_PERMISSION,
/*scheduler=*/null);
// Register Featured Cluster Publish Intent
context.registerReceiver(new AppEngageBroadcastReceiver(),
new IntentFilter(com.google.android.engage.service.Intents.ACTION_PUBLISH_FEATURED),
com.google.android.engage.service.BroadcastReceiverPermissions.BROADCAST_REQUEST_DATA_PUBLISH_PERMISSION,
/*scheduler=*/null);
// Register Continuation Cluster Publish Intent
context.registerReceiver(new AppEngageBroadcastReceiver(),
new IntentFilter(com.google.android.engage.service.Intents.ACTION_PUBLISH_CONTINUATION),
com.google.android.engage.service.BroadcastReceiverPermissions.BROADCAST_REQUEST_DATA_PUBLISH_PERMISSION,
/*scheduler=*/null);
}
Déclarez une implémentation de manière statique avec la balise
<receiver>
dans le fichierAndroidManifest.xml
. Cela permet à l'application de recevoir des intents de diffusion lorsqu'elle n'est pas en cours d'exécution, et de publier le contenu.
<application>
<receiver
android:name=".AppEngageBroadcastReceiver"
android:permission="com.google.android.engage.REQUEST_ENGAGE_DATA"
android:exported="true"
android:enabled="true">
<intent-filter>
<action android:name="com.google.android.engage.action.PUBLISH_RECOMMENDATION" />
</intent-filter>
<intent-filter>
<action android:name="com.google.android.engage.action.PUBLISH_FEATURED" />
</intent-filter>
<intent-filter>
<action android:name="com.google.android.engage.action.PUBLISH_CONTINUATION" />
</intent-filter>
</receiver>
</application>
Les intents suivants sont envoyés par le service :
com.google.android.engage.action.PUBLISH_RECOMMENDATION
Nous vous recommandons de démarrer un appelpublishRecommendationClusters
lors de la réception de cet intent.com.google.android.engage.action.PUBLISH_FEATURED
Nous vous recommandons de démarrer un appelpublishFeaturedCluster
lors de la réception de cet intent.com.google.android.engage.action.PUBLISH_CONTINUATION
Nous vous recommandons de démarrer un appelpublishContinuationCluster
lors de la réception de cet intent.
Workflow d'intégration
Pour vous procurer un guide par étapes sur la validation de votre intégration une fois celle-ci terminée, consultez la page Workflow d'intégration pour les développeurs d'Engage.
Questions fréquentes
Pour en savoir plus, consultez les questions fréquentes concernant le SDK Engage.
Contact
Contactez engage-developers@google.com
si vous avez des questions au cours du processus d'intégration.
Étapes suivantes
Une fois cette intégration effectuée, procédez comme suit :
- Envoyez un e-mail à l'adresse
engage-developers@google.com
et joignez-y votre APK intégré prêt à être testé par Google. - Google effectue une vérification et des examens en interne pour s'assurer que l'intégration fonctionne comme prévu. Si des modifications sont nécessaires, nous vous contacterons avec toutes les informations nécessaires.
- Une fois les tests terminés, si aucune modification n'est nécessaire, nous vous informerons que vous pouvez commencer à publier le fichier APK mis à jour et intégré sur le Play Store.
- Une fois que nous aurons confirmé la publication de votre APK mis à jour sur le Play Store, vos clusters Recommendation (Recommandations), Featured (Sélection) et Continuation (Suite) pourront être publiés et visibles par les utilisateurs.