Scénarios de dépannage des activités en direct courantes troubleshoot-mobile-live

Sur cette page : Diagnostiquez systématiquement pourquoi vos activités Live ne s’affichent pas, ne se mettent pas à jour ou ne se terminent pas afin de pouvoir résoudre les problèmes de jeton de profil, de configuration de campagne, de payload et de diffusion dans les cas d’utilisation unitaires et de diffusion.

Trouver votre scénario find-your-scenario

Symptôme ou tâche
Commencer ici
L’activité en direct ne démarre pas
Scénario 1 : profil et jetons, puis Scénario 2 : campagne et payload
Les vérifications de configuration réussissent, mais la diffusion échoue
Scénario 3 : diffusions en échec
L’activité Live unitaire d’iOS démarre, mais ne se met pas à jour ni ne se termine
Scénario 4 : mise à jour de la synchronisation des jetons
L’activité Android Live démarre mais ne se met pas à jour ni ne se termine
Onglets Android dans scénario 2 et scénario 3
Vérification de l’état de traitement d’une demande unitaire
Scénario 5 : API du statut d’exécution
La diffusion ne démarre, ne met pas à jour et ne se termine pas
Scénario 6 : configuration de diffusion
Certains profils d’audience ne reçoivent pas la diffusion
Scénario 7 : appartenance et fraîcheur de l’audience
Examen des problèmes de production ou de l’historique de la diffusion
Requêtes de jeu de données

Scénario 1 : problèmes de profil ou de jeton push scenario-1-profile-or-push-token-issues

[S’applique aux cas d’utilisation unitaires et de diffusion]{class="badge informative"}

L’API de déclenchement accepte la requête, mais l’activité Live n’apparaît pas. Causes fréquentes :

  • Le profil n’existe pas dans Adobe Experience Platform.
  • Le jeton push requis n’a pas été synchronisé avec le profil : un jeton push d’activité active sur iOS ou le jeton d’enregistrement FCM standard sur Android.
  • Les détails du jeton push contiennent une configuration incorrecte, telle qu’un appId, une plateforme ou un attributeType iOS incorrect.

Pour les diffusions : échantillonnez plusieurs profils d’audience pour vérifier l’enregistrement du jeton. Sur iOS, les vérifications de jeton de profil s’appliquent aux événements de début distants, et non aux événements de mise à jour ou de fin basés sur un canal. Sur Android, vérifiez également l’abonnement à la rubrique FCM de l’appareil à l’aide du Scénario 6.

Vérifier que le profil existe

Pour iOS et Android, commencez par cette vérification. Pour les diffusions, répétez-la pour plusieurs profils d’audience.

  1. Dans Journey Optimizer, accédez à Client > Profils.
  2. Effectuez une recherche à l’aide de l’espace de noms et de la valeur d’identité de votre requête API.
  3. Si le profil est introuvable, c’est qu’il n’existe pas ou l’ingestion n’est pas terminée. Créez le profil ou attendez la fin de l’ingestion avant de déclencher l’activité Live .
  4. Si le profil est trouvé, continuez avec les vérifications de jeton pour votre plateforme.

Vérifier le jeton push

iOS

Contrôles préalables

  • Configuration requise pour l’application iOS :

    • iOS 16.1+
    • NSSupportsLiveActivities défini sur YES dans Info.plist
    • ActivityAttributes correctement implémentée.
  • Intégration de Mobile SDK :

    • Adobe Experience Platform Mobile SDK (messagerie SDK 5.11.0+)
    • Messaging.registerLiveActivities implémenté et appelé avec le jeton push d’activité dynamique.

Étapes de débogage

accordion
​1. Vérifier si le jeton push d’activité dynamique est synchronisé

Vous pouvez utiliser Assurance pour vérifier l’enregistrement des jetons :

  1. Dans Assurance, à partir de la liste Événements, filtrez ou recherchez des événements eventType = "liveActivity.pushToStart".
  2. Sélectionnez l’événement Event et examinez la payload.
  3. Vérifiez que les valeurs token, appId et attributeType sont présentes.
  4. Vérifiez que l’événement a bien été envoyé.

Vous pouvez également archiver le profil Adobe Experience Platform.

  1. Dans Adobe Experience Platform, à partir de votre Profil, accédez à l’onglet Événements.
  2. Recherchez des événements liveActivity.pushToStart.
  3. Vérifiez la date et l’heure de l’événement ainsi que la payload.

Si aucun événement n’est trouvé, l’application n’appelle pas Messaging.registerLiveActivities correctement. Correction de l’intégration de SDK.

accordion
​2. Valider les détails du jeton sur le profil
  1. À partir de votre Profil, accédez à l’onglet Attributs.

  2. Localisez liveActivityPushNotificationDetails.

  3. Vérifiez la configuration du jeton :

    code language-json
    {
       "liveActivityPushNotificationDetails": [
       {
          "appId": "com.example.myapp",
          "token": "abc123def456...",
          "platform": "apns",
          "denylisted": false,
          "attributeType": "OrderTrackingAttributes",
          "identity": {}
       }
       ]
    }
    

Valider chaque champ :

table 0-row-3 1-row-3 2-row-3 3-row-3 4-row-3 5-row-3
Champ Exigence Problème courant
appId Doit correspondre exactement à l’identifiant du bundle iOS Incompatibilité entre les ID de bundle de développement/production
attributeType Doit correspondre exactement au nom de la structure de ActivityAttributes Swift (sensible à la casse) Frappe ou nom de structure incorrect
platform Doit être "apns" ou "apnsSandbox" Valeur de plateforme incorrecte
denylisted Doit être false Jeton marqué comme non valide ou désactivé par l’utilisateur
token Jeton push APNS valide Jeton expiré ou application réinstallée

Si un champ est incorrect, mettez à jour l’application mobile, réenregistrez-la à l’aide de l’Messaging.registerLiveActivities, patientez entre 5 et 10 minutes, puis vérifiez à nouveau.

Si liveActivityPushNotificationDetails est manquant, le jeton n’a pas encore été synchronisé. Patientez 5 à 10 minutes après avoir affiché l’événement liveActivity.pushToStart dans Assurance, puis revérifiez.

Android

Contrôles préalables

  • Configuration requise pour l’application Android :

    • Exécutez l’application sur Android 16.1 (niveau API 36.1) ou une version ultérieure, avec la targetSdk définie sur 36.
    • Assurez-vous que les autorisations POST_NOTIFICATIONS et POST_PROMOTED_NOTIFICATIONS sont accordées.
    • Créez le canal de notification utilisé par l’activité Live .
  • Intégration de Mobile SDK :

    • Intégrez Adobe Experience Platform Mobile SDK à Messaging et à l’extension Live Activities.
    • Transférez le jeton d’enregistrement FCM vers SDK à l’aide de MobileCore.setPushIdentifier(token).

Étapes de débogage

accordion
​1. Vérifier l’enregistrement du jeton FCM

Android utilise le jeton d’enregistrement FCM standard pour les activités dynamiques. Il n’existe aucun événement liveActivity.pushToStart ou jeton push d’activité dynamique distinct.

  1. Dans Assurance, ouvrez la liste Événements et recherchez l’événement d’enregistrement de jeton push standard.
  2. Sélectionnez l’événement et examinez sa payload pour vérifier que le jeton d’enregistrement FCM est présent.
  3. Vérifiez que l’événement d’enregistrement a bien été envoyé.
  4. Dans Adobe Experience Platform, ouvrez l’onglet Attributs de votre profil et vérifiez que le jeton est présent dans pushNotificationDetails, comme décrit à l’étape 2.

Si l’événement d’enregistrement ou le jeton de profil est manquant, vérifiez que l’application transfère le jeton d’enregistrement FCM vers SDK à l’aide de MobileCore.setPushIdentifier(token).

accordion
​2. Valider les détails du jeton sur le profil
  1. À partir de votre profil, accédez à l’onglet Attributs.

  2. Localisez pushNotificationDetails. Android utilise cet objet au lieu de liveActivityPushNotificationDetails et ne nécessite pas de champ attributeType.

  3. Vérifiez que la configuration du jeton suit cette structure :

    code language-json
    {
       "pushNotificationDetails": [
          {
             "appId": "com.adobe.marketing.mobile.liveupdatessample",
             "token": "fcm-registration-token...",
             "platform": "fcm",
             "denylisted": false,
             "identity": {}
          }
       ]
    }
    

Valider chaque champ :

table 0-row-3 1-row-3 2-row-3 3-row-3 4-row-3
Champ Exigence Problème courant
appId Doit correspondre exactement au nom du package Android. Incohérence entre les noms de packages de développement et de production
platform Doit être "fcm" Valeur de plateforme incorrecte
denylisted Doit être false Jeton marqué comme non valide ou désactivé par l’utilisateur
token Doit correspondre au jeton d’enregistrement FCM actuel de l’appareil. Jeton expiré ou application réinstallée

Si un champ est incorrect, corrigez la configuration d’application selon les besoins, transférez à nouveau le jeton FCM à l’aide de MobileCore.setPushIdentifier(token), patientez 5 à 10 minutes, puis vérifiez à nouveau le profil.

Si pushNotificationDetails est manquant, le jeton n’a pas encore été synchronisé. Après avoir confirmé l’enregistrement du jeton dans Assurance, patientez 5 à 10 minutes, puis vérifiez à nouveau le profil.

Scénario 2 : problèmes de configuration de Campaign et de payload scenario-2-campaign-configuration-and-payload-issues

[S’applique aux cas d’utilisation unitaires et de diffusion]{class="badge informative"}

Le profil existe et possède des jetons valides, mais l’activité Live n’apparaît pas. Causes possibles :

  • Mauvaise configuration de surface ou de canal.
  • Structure de la payload de l’API incorrecte.
  • Les champs de payload ne correspondent pas à l’implémentation de l’application : iOS ActivityAttributes ou le mapping du fournisseur de style Android .
  • timestamp obsolètes (critiques pour la mise à jour/la fin).

Pour les diffusions : la campagne doit être marketing déclenché par l’API, et non transactionnelle. La payload utilise audience au lieu de recipients. Voir Scénario 6 pour les payloads de diffusion spécifiques à la plateforme et la documentation Adobe Developer pour obtenir des spécifications d’API complètes.

iOS

Contrôles préalables

  • Vérifiez que la campagne est transactionnelle déclenchée par l’API (unitaire) ou marketing déclenché par l’API (diffusion). Gardez la case à cocher Débit élevé désactivée, car elle est incompatible avec les activités dynamiques.
  • Vérifiez que le profil existe et que ses jetons sont synchronisés à l’aide des contrôles iOS dans Scénario 1.

Étapes de débogage

accordion
​1. Vérifier la configuration de la surface de campagne
  1. Dans Journey Optimizer, ouvrez votre Campagne et accédez au menu Actions.
  2. Vérifiez la configuration de l’activité dynamique. La surface doit être configurée pour l’application iOS avec un identifiant de lot correspondant à l’appId dans le liveActivityPushNotificationDetails de votre profil. Par exemple, si votre profil a "appId": "com.example.myapp", la surface doit cibler cette même application.
  3. Vérifiez que le type d’activité dans votre configuration de campagne correspond exactement au attributeType dans le liveActivityPushNotificationDetails de votre profil. Par exemple, si votre profil a "attributeType": "FoodDeliveryLiveActivityAttributes", la campagne doit spécifier le même type d’activité.
accordion
​2. Validation de la structure de la payload de l’API

Lors de l’exécution de la campagne par le biais de l’API, assurez-vous que la payload suit la structure correcte.

Payload unitaire :

code language-json
{
   "campaignId": "your-campaign-id",
   "recipients": [{
      "type": "aep",
      "userId": "user@example.com",
      "namespace": "email",
      "context": {
         "requestPayload": {
            "aps": {
               "content-available": 1,
               "timestamp": 1756984054,
               "event": "start",
               "attributes-type": "FoodDeliveryLiveActivityAttributes",
               "content-state": { ... },
               "attributes": { ... }
            }
         }
      }
   }]
}

Problèmes courants de payload :

table 0-row-3 1-row-3 2-row-3 3-row-3 4-row-3 5-row-3 6-row-3
Champ Exigence Problème courant
attributes-type Doit correspondre au type d’activité de campagne et au attributeType de profil Incompatibilité ou faute de frappe
campaignId Doit correspondre à l’identifiant de campagne activé Identifiant de campagne incorrect ou manquant
content-available Doit être 1 Valeur manquante ou incorrecte
event Doit être "start", "update" ou "end" Type d’événement non valide
timestamp Doit toujours être l’heure Unix actuelle/la plus récente en secondes Utilisation de l’ancien horodatage/de l’horodatage mis en cache
userId / namespace Doit correspondre à un profil existant dans AEP Incompatibilité de l’identifiant du profil

Critique : utilisez toujours un nouvel horodatage

  • Définissez timestamp sur l’heure Unix actuelle (en secondes) au moment où vous effectuez chaque appel API. Cela s’applique à tous les types d’événements : start, update et end.
  • Un horodatage obsolète ou réutilisé entraîne l’échec ou l’ignorance des requêtes de mise à jour et de fin par l’appareil. Ne réutilisez pas les horodatages des requêtes précédentes ou les valeurs mises en cache.

Champs facultatifs (tous les types d’événements) :

  • requestId : identifiant unique pour le tracking (recommandé).
  • alert : objet avec title et body pour la notification. Utile pour attirer l’attention sur les mises à jour.

À propos de dismissal-date:

  • Facultatif. Heure Unix epoch en secondes. Pertinent uniquement lorsque event est "end".
  • Indique à quel moment l’activité Live est automatiquement supprimée de l’appareil. Si vous l’omettez, l’activité Live reste visible jusqu’à ce que l’utilisateur la ferme.
  • Doit être un horodatage ultérieur, postérieur à timestamp.
accordion
​3. Alignement de la payload sur l’implémentation d’iOS

Assurez-vous que la payload de l’API correspond à la mise en œuvre ActivityAttributes de l’application iOS. Le protocole LiveActivityAttributes d’Adobe SDK étend la ActivityAttributes d’iOS et nécessite une propriété liveActivityData.

Validez le mappage :

  1. Votre ActivityAttributes doit mettre en œuvre le protocole LiveActivityAttributes d’Adobe. Exemple :

    code language-swift
    struct FoodDeliveryLiveActivityAttributes: LiveActivityAttributes {
       public struct ContentState: Codable, Hashable {
          var orderStatus: String
          var estimatedDeliveryTime: String
       }
    
       // Adobe SDK requirement
       var liveActivityData: LiveActivityData
    
       // Your custom attributes
       var restaurantName: String
    }
    

    Notez que le champ liveActivityData est requis par Adobe SDK et doit être inclus dans toutes les implémentations.

  2. La payload de l’API doit refléter la structure d’iOS :

    code language-json
    {
       "aps": {
          "event": "start",
          "timestamp": 1756984054,
          "attributes-type": "FoodDeliveryLiveActivityAttributes",
          "content-state": {
             "orderStatus": "Preparing",
             "estimatedDeliveryTime": "20 mins"
          },
          "attributes": {
             "liveActivityData": {
                "liveActivityID": "order-12345"
             },
             "restaurantName": "Pizza Palace"
          }
       }
    }
    

Liste de contrôle de validation :

  • Incluez tous les champs ContentState dans content-state (obligatoire pour tous les types d’événements).

  • Incluez tous les champs LiveActivityAttributes dans attributes (événements de début uniquement), notamment :

    • liveActivityData (obligatoire ; contient généralement un identifiant liveActivityID ou similaire)
    • Tous les champs personnalisés de votre structure
  • Faire correspondre exactement les noms des champs (respect de la casse).

  • Faire correspondre les types de données (chaîne, entier, booléen, objets imbriqués).

  • Conserver la structure de l’objet imbriqué.

Erreurs courantes :

table 0-row-3 1-row-3 2-row-3 3-row-3 4-row-3 5-row-3 6-row-3 7-row-3
Problème Impact Corriger
liveActivityData manquant dans les attributs L’activité en direct ne démarrera pas Toujours inclure liveActivityData objet dans l’événement de début
Champ obligatoire manquant dans l’événement de début L’activité en direct ne démarrera pas Ajouter tous les champs de la structure iOS
Nom de champ incorrect (faute de frappe/casse) Champ ignoré ou erreur d’analyse Correspondance exacte des noms de champ iOS
Type de données incorrect Erreur d’analyse Correspondance des types de données iOS
Objet imbriqué manquant Données incomplètes Inclure toutes les structures imbriquées
Inclusion de attributes dans la mise à jour/fin Inutile, mais généralement ignoré Inclure uniquement les attributes dans l’événement de début
Horodatage obsolète à la mise à jour/fin Mise à jour/fin ignorée par l’appareil Toujours générer un nouvel horodatage

Pour consulter d’autres exemples, consultez la page Créer une activité en direct.

accordion
​4. Tester avec Assurance

Vérifiez l’exécution de l’API et la diffusion de la payload à l’aide d’Assurance :

  1. Ouvrez votre session Assurance.

  2. Exécutez l’appel API pour déclencher l’activité Live .

  3. Dans la Liste des événements, vérifiez les éléments suivants :

    • Événements d’exécution de campagne.
    • Événements de diffusion d’activité en direct.
    • Événements d’erreur de validation de la payload.
  4. Examinez les payloads d’événement pour vérifier les éléments suivants :

    • La payload a été traitée correctement.
    • Aucune erreur de validation ne s’est produite.
    • L’activité en direct a été envoyée aux APNs.
Android

Contrôles préalables

  • Vérifiez que la campagne est transactionnelle déclenchée par l’API (unitaire) ou marketing déclenché par l’API (diffusion). Gardez la case à cocher Débit élevé désactivée, car elle est incompatible avec les activités dynamiques.
  • Vérifiez que le profil existe et que son jeton FCM est synchronisé à l’aide des contrôles Android dans Scénario 1.

Étapes de débogage

accordion
​1. Vérifier la configuration de la surface de campagne
  1. Dans Journey Optimizer, ouvrez votre Campagne et accédez au menu Actions.
  2. Vérifiez la configuration de l’activité dynamique. La surface doit cibler l’application Android avec un nom de package correspondant au appId dans le pushNotificationDetails du profil.
  3. Vérifiez que la surface utilise les informations d’identification FCM pour cette application. La plateforme de jeton du profil doit être "fcm".
  4. Vérifiez que la notification_channel_id dans la payload correspond à un canal de notification créé par l’application.
accordion
​2. Validation de la structure de la payload de l’API

Placez les champs d’activité Android Live sous context.requestPayload.fcm.

Payload de début unitaire :

code language-json
{
   "requestId": "your-request-id",
   "campaignId": "your-campaign-id",
   "recipients": [
      {
         "type": "aep",
         "userId": "your-device-ECID",
         "namespace": "ECID",
         "context": {
            "requestPayload": {
               "fcm": {
                  "notification_id": "flight-DL-321",
                  "timestamp": 1756984054,
                  "notification_channel_id": "live_updates_channel",
                  "priority": "PRIORITY_HIGH",
                  "event_type": "start",
                  "title": "Flight DL-321",
                  "body": "Boarding starts shortly",
                  "critical_text": "25 min",
                  "content_state": {
                     "custom_key_template_type": "progress",
                     "custom_key_journey_start": "DEL",
                     "custom_key_journey_progress": 10,
                     "custom_key_journey_end": "MUM"
                  }
               }
            }
         }
      }
   ]
}

Remplacez l’exemple d’horodatage par l’heure Unix actuelle en secondes. Les clés content_state sont des exemples et doivent correspondre au fournisseur de style de votre application.

Pour les diffusions, utilisez une campagne marketing déclenchée par API avec audience.id et placez l’objet fcm sous context.requestPayload. Définissez topic_name sur la rubrique FCM à laquelle les appareils cibles sont abonnés. Conservez la rubrique et le notification_id inchangés pour les événements de début, de mise à jour et de fin. Consultez les exemples de payload de diffusion ​.

Problèmes courants de payload :

table 0-row-3 1-row-3 2-row-3 3-row-3 4-row-3 5-row-3 6-row-3 7-row-3 8-row-3
Champ Exigence Problème courant
campaignId Doit correspondre à l’identifiant de campagne activé Identifiant de campagne incorrect ou manquant
notification_id Conservez la même valeur pour les événements de début, de mise à jour et de fin de l’activité Live L’identifiant modifié cible une notification différente
notification_channel_id Doit correspondre à un canal créé par l’application Android Canal manquant ou incompatible
event_type Doit être "start", "update" ou "end" Événement de cycle de vie non valide
timestamp Secondes Epoch ; doit augmenter strictement pour chaque événement ciblant la même instance ou le même sujet de diffusion. Les dates et heures antérieures ou égales sont ignorées
content_state Utiliser les champs pris en charge par le fournisseur de style de l’application Clés non prises en charge ou types de valeur incorrects
userId / namespace Pour une diffusion unitaire, utilisez l’ECID de l’appareil avec l’espace de noms ECID Incompatibilité de l’identifiant du profil
topic_name Pour les diffusions, utilisez la rubrique à laquelle sont abonnés les appareils cibles Rubrique incorrecte ou appareils non abonnés

Vérifications d’horodatage et de cycle de vie :

  • Utilisez une nouvelle timestamp en quelques secondes pour chaque événement de début, de mise à jour et de fin. Assurez-vous qu’elle est supérieure à la valeur précédente pour la même notification_id (ou topic_name pour les diffusions), même lorsque les demandes sont effectuées dans la même seconde.
  • Les dates et heures antérieures ou égales sont ignorées. Ne réutilisez pas les horodatages mis en cache.
  • Le champ facultatif when contrôle l’heure d’affichage de la notification, et non l’ordre des messages. Conservez-le à jour et exprimez-le en quelques secondes.
  • Pour mettre à jour ou terminer une activité, modifiez les event_type tout en conservant les notification_id inchangées. Android utilise le même jeton d’enregistrement FCM pour les trois événements de cycle de vie ; aucun jeton de mise à jour distinct n’est requis.

Rejet de l’événement de fin :

Par event_type: "end", vous pouvez éventuellement définir la dismiss_after sur le nombre de secondes pendant lesquelles l’activité Live terminée doit rester visible avant la suppression. Il s’agit d’une durée, et non d’une date et heure Unix.

accordion
​3. Alignement de la payload avec la mise en œuvre d’Android

Le fournisseur de style de l’application détermine le rendu des valeurs content_state dans la notification d’activité dynamique.

  1. Vérifiez que la messagerie et l’extension Activités en direct sont intégrées dans l’application.
  2. Vérifiez que chaque champ de content_state correspond à une clé gérée par le fournisseur de style, y compris son type de valeur attendu.
  3. Vérifiez que title, body et critical_text contiennent le texte d’affichage prévu. critical_text est utilisé pour la puce de la barre d’état.
  4. Vérifiez que les autorisations de notification sont accordées et que le canal identifié par notification_channel_id existe.

Erreurs courantes :

table 0-row-3 1-row-3 2-row-3 3-row-3 4-row-3 5-row-3
Problème Impact Corriger
Clé content_state ou type valeur non pris en charge Le contenu est manquant ou son rendu est incorrect Correspondance avec le mappage du fournisseur de style de l’application
Canal de notification manquant ou incompatible La notification ne peut pas être publiée sur le canal prévu Créer le canal et utiliser son identifiant exact
Autorisations de notification non accordées L’activité en direct peut ne pas apparaître comme prévu Vérification des autorisations POST_NOTIFICATIONS et POST_PROMOTED_NOTIFICATIONS
notification_id modifié La mise à jour ou la fin ne cible pas la notification d’origine Conserver l’identifiant inchangé tout au long du cycle de vie
timestamp plus ancien ou égal Événement ignoré Utiliser une valeur supérieure à la date et heure du dernier traitement

Pour consulter d’autres exemples, voir Création d’activités dynamiques.

accordion
​4. Tester avec Assurance

Utilisez Assurance sur un appareil de test Android connecté.

  1. Ouvrez une session Assurance et vérifiez que l’enregistrement du jeton FCM est visible.
  2. Exécutez l’appel API pour démarrer l’activité Live, puis envoyez les événements de mise à jour et de fin avec la même notification_id et des horodatages croissants.
  3. Consultez les événements et payloads SDK disponibles pour le traitement ou la validation des erreurs. Vérifiez que la payload Android utilise fcm et les valeurs de cycle de vie prévues.
  4. Dans l’onglet Événements du profil, inspectez les événements message.feedback correspondants. Vérifiez que serviceProvider est fcm et passez en revue les feedbackStatus, errorCode et errorMessage en cas d’échec de la diffusion.
  5. Si la diffusion réussit, mais que l’activité Live n’est pas rendue, examinez les journaux d’application, les mappages de fournisseur de style, les autorisations de notification et la configuration des canaux sur l’appareil.

Scénario 3 : échecs de diffusion et analyse des erreurs scenario-3-delivery-failures-and-error-analysis

[S’applique aux cas d’utilisation unitaires et de diffusion]{class="badge informative"}

Dans ce scénario, toutes les vérifications précédentes ont réussi :

Si l’activité Live ne s’affiche toujours pas, ne se met pas à jour ou ne se termine pas, vérifiez le traitement de la campagne, la diffusion au fournisseur push (APNs sur iOS ou FCM sur Android) et le comportement côté appareil.

Pour les diffusions : les rapports affichent des mesures pour tous les membres de l’audience. Certains profils peuvent réussir tandis que d’autres échouent.

Vérifier les rapports de campagne check-campaign-reports

Pour iOS et Android, commencez par le rapport de campagne. Elle indique si Journey Optimizer a tenté l’envoi, exclu le profil ou atteint une erreur.

  1. Accédez à votre Campagne d’activité dynamique.

  2. Cliquez sur le bouton Rapports.

  3. Sélectionnez Afficher le rapport en tout temps.

  4. Vérifiez les mesures Statistiques d’envoi pour comprendre le succès de la diffusion :

    table 0-row-3 1-row-3 2-row-3 3-row-3 4-row-3 5-row-3
    Mesure Signification Éléments à rechercher
    Ciblés Nombre de profils qualifiés pour l’audience Doit inclure votre profil de test
    Envois Nombre total de notifications push ayant fait l’objet d’une tentative Doit correspondre à vos appels API
    Délivrés Mesure de diffusion signalée Comparer avec Envois ; vérifier le rendu de l’appareil séparément
    Erreurs d’envoi Notifications push dont l’envoi a échoué Rechercher les raisons de l’erreur
    Envoyer les exclusions Profils exclus par Adobe Journey Optimizer Vérifier si votre profil a été exclu
  5. Si Envoyer les erreurs > 0, vérifiez le tableau Causes des erreurs. Utilisez l’étape 1 de l’onglet pour que votre plateforme interprète les erreurs.

  6. Si Envoyer les exclusions > 0, cochez le tableau Causes d’exclusion :

    table 0-row-3 1-row-3 2-row-3 3-row-3
    Exclusion courante Signification Résolution
    Profil désinscrit L’utilisateur s’est opposé aux notifications Vérifier le statut de consentement du profil
    Jeton placé sur la liste bloquée Jeton marqué comme non valide Réenregistrez le jeton (iOS) ou transférez le jeton FCM actuel (Android), ou vérifiez le statut de la liste bloquée
    Profil non éligible Le profil ne répond pas aux critères de la campagne. Vérifier les règles d’audience de campagne
  7. Consultez la section Cycle de vie des activités dynamiques :

    table 0-row-2 1-row-2 2-row-2 3-row-2 4-row-2
    Mesure Éléments à vérifier
    Démarrages à distance Doit afficher le nombre de démarrages déclenchés par l’API
    Mises à jour Doit afficher le nombre d’événements de mise à jour
    Se termine Doit afficher le nombre d’événements de fin
    Nombre de totaux Volume global des événements d’activité en direct

    Si ces mesures sont nulles ou ne correspondent pas à vos appels API, vérifiez le traitement de la campagne et la diffusion du fournisseur de notifications push à l’aide des vérifications spécifiques à la plateforme ci-dessous.

Pour en savoir plus, consultez la page ​ Rapport de campagne d’activité dynamique ​.

Vérifier la diffusion pour votre plateforme

iOS

Pré-contrôles

  • Scénarios précédents validés :

    • Le profil existe avec le liveActivityPushNotificationDetails correct.
    • La surface de campagne et le type d’activité sont corrects.
    • La payload de l’API est valide avec l’horodatage actuel.
    • Les jetons de mise à jour sont synchronisés (événements de mise à jour unitaire et de fin uniquement).
  • Appel API confirmé :

    • L’API de déclenchement a accepté la requête. Cela ne confirme pas la diffusion ou le rendu de l’appareil.
    • L’identifiant de campagne et les détails du destinataire sont corrects.

Étapes de débogage

accordion
​1. Interpréter les erreurs d’envoi

Ignorer cette étape si le rapport de campagne n’affiche aucune erreur d’envoi. Sinon, faites correspondre l’erreur du tableau Raisons de l’erreur aux erreurs APNs courantes suivantes :

table 0-row-3 1-row-3 2-row-3 3-row-3 4-row-3
Erreur courante Signification Résolution
Jeton non valide Jeton push non valide ou expiré Réenregistrer les jetons d’activité dynamiques sur l’appareil
Jeton introuvable Aucun jeton valide associé au profil Vérifier lliveActivityPushNotificationDetailsexistence
APNs rejetés Le service de notification push Apple a rejeté la notification push Vérifier le certificat APNS, l’ID de lot, l’environnement
Timeout réseau Impossible d’atteindre les APNs Problème transitoire ; réessayez l’appel API
accordion
​2. Vérifier les événements de retour de message dans le profil
  1. Accédez à Client > Profils dans Journey Optimizer.

  2. Recherchez et ouvrez le profil.

  3. Sélectionnez l’onglet Événements.

  4. Filtrez ou recherchez des événements avec eventType = "message.feedback".

  5. Recherchez des événements de retour correspondant au type de liveActivityID et de event de votre activité Live.

  6. Examinez les champs clés suivants :

    table 0-row-3 1-row-3 2-row-3 3-row-3 4-row-3
    Champ Valeurs possibles Signification
    feedbackStatus sent, error, denylist Résultat de diffusion du prestataire
    serviceProvider apns/apnsSandbox Doit être un APN pour les activités iOS Live
    errorCode Code numérique ou null Code d’erreur spécifique à APNS en cas d’échec
    errorMessage Description ou null de l’erreur Message d’erreur lisible par l’utilisateur
  7. If feedbackStatus: "error":

    • Vérifiez les errorCode et les errorMessage pour détecter les erreurs APNs spécifiques.
    • Les erreurs APNs courantes incluent un jeton expiré, un certificat non valide, un ID de lot incorrect.
  8. Si aucun événement de retour n’est trouvé :

Si feedbackStatus est sent : Journey Optimizer a remis la notification aux APNs. Cela ne confirme pas le rendu de l’appareil. Poursuivez les vérifications côté appareil à l’étape 4.

accordion
​3. Vérifier la diffusion de l’activité en direct aux APNs dans Assurance
  1. Ouvrez votre session Assurance et maintenez-la active pendant l’appel API.

  2. Exécutez l’appel API (début, mise à jour ou fin).

  3. Dans la Liste des événements, recherchez les événements de diffusion d’activité en direct .

  4. Recherchez des événements liés à la diffusion des notifications push APNS.

  5. Recherchez les indicateurs suivants :

    • Requête push aux APNs : confirme qu’Adobe a envoyé la notification push aux serveurs Apple.
    • Réponse APNs : indique si APNs a accepté ou rejeté la notification push.
    • Statut de la diffusion : indication de succès ou d’échec
  6. Si des problèmes sont détectés, reportez-vous aux problèmes de diffusion APNS courants suivants :

    table 0-row-3 1-row-3 2-row-3 3-row-3 4-row-3 5-row-3
    Problème Symptôme dans Assurance Résolution
    Certificat APNS expiré Erreur d’authentification Renouveler et charger un nouveau certificat APNS
    Mauvais environnement (développement ou production) Erreur de correspondance de jeton S’assurer que le certificat correspond au type de build de l’application
    Incompatibilité de l’ID de lot Identifiant de lot non valide Vérifier que l’ID de groupe de certificats correspond à l’application
    Jeton expiré Erreur InvalidToken depuis APNS Réenregistrer les jetons d’activité actifs
    Limitation de débit Trop de requêtes Réduire la fréquence des appels API
accordion
​4. Vérification du comportement côté appareil

Si Adobe affiche une diffusion réussie mais que l’appareil n’affiche pas l’activité Live :

  • Recherchez des erreurs d’activité en direct dans les journaux des appareils iOS.
  • Vérifiez que l’application est au premier plan ou en arrière-plan (non terminée).
  • Vérifiez que l’appareil dispose d’une connectivité réseau.
  • Testez plusieurs appareils pour exclure les problèmes spécifiques à l’appareil.
  • Vérifiez qu’iOS version 16.1 ou ultérieure.
accordion
​5. Transmission à l’assistance Adobe

Si vous avez terminé toutes les étapes et que le problème n’est pas résolu, contactez l’assistance clientèle d’Adobe à l’adresse suivante :

Informations requises :

  • Identifiant et nom de campagne
  • Espace de noms et ID du profil
  • liveActivityID à partir de la payload de l’API
  • Horodatages des appels API
  • Captures d’écran des rapports de campagne présentant les statistiques d’envoi, les raisons d’erreur et les raisons d’exclusion
  • Événements de profil pertinents (liveActivity.updateToken pour les problèmes et message.feedback de mise à jour/de fin unitaires)
  • Détails de la session Assurance et captures d’écran d’événement pertinentes
  • Payload et réponse de requête API, avec les informations d’identification et les jetons d’appareil supprimés
  • Détails du certificat APNS (expiration, environnement, ID de lot)
Android

Pré-contrôles

  • Scénarios précédents validés :

    • Un profil existe avec des pushNotificationDetails valides, y compris le jeton FCM actuel, le nom du package Android et le platform: "fcm".
    • La surface Campaign cible l’application Android appropriée et utilise les informations d’identification FCM correspondantes.
    • La payload fcm est valide et sa timestamp est plus récente que l’événement précédent pour la même notification_id (ou topic_name pour les diffusions).
    • Les événements de début, de mise à jour et de fin utilisent le même notification_id. Les événements unitaires utilisent le même jeton d’enregistrement FCM ; aucun jeton de mise à jour distinct n’est requis.
  • Appel API confirmé :

    • L’appel API a renvoyé un HTTP 202 (accepté). Cela confirme l’acceptation de la requête, et non la diffusion ou le rendu de l’appareil.
    • L’identifiant de campagne et les détails du destinataire sont corrects. Pour les diffusions, vérifiez l’ID d’audience et la rubrique FCM.

Étapes de débogage

accordion
​1. Interpréter les erreurs d’envoi

Ignorer cette étape si le rapport de campagne n’affiche aucune erreur d’envoi. Sinon, faites correspondre l’erreur du tableau Raisons de l’erreur aux erreurs FCM courantes suivantes :

table 0-row-3 1-row-3 2-row-3 3-row-3 4-row-3 5-row-3
Erreur courante Signification Résolution
Jeton non valide/non enregistré Jeton FCM non valide ou application désinstallée Obtenir le jeton d’appareil actuel et le transférer à l’aide de MobileCore.setPushIdentifier(token)
Jeton introuvable Aucun jeton FCM valide n’est associé au profil Vérifier que pushNotificationDetails contient le jeton actif
Incompatibilité de l’ID de l’expéditeur Jeton émis pour un autre projet Firebase Aligner les informations d’identification FCM sur le projet Firebase de l’application
Argument non valide La payload a été rejetée par FCM Validation de la structure de payload fcm
Timeout réseau Impossible d’atteindre FCM Problème transitoire ; réessayez l’appel API
accordion
​2. Vérifier les événements de retour de message dans le profil
  1. Accédez à Client > Profils dans Journey Optimizer.

  2. Recherchez et ouvrez le profil.

  3. Sélectionnez l’onglet Événements.

  4. Filtrez ou recherchez des événements avec eventType = "message.feedback".

  5. Recherchez les événements de retour pour la campagne et les horodatages d’appel API que vous recherchez.

  6. Examinez les champs clés suivants :

    table 0-row-3 1-row-3 2-row-3 3-row-3 4-row-3
    Champ Valeurs possibles Signification
    feedbackStatus sent, error, denylist Résultat de diffusion du prestataire
    serviceProvider fcm Diffusion de notifications push Android gérée par FCM
    errorCode Code d’erreur ou null du fournisseur Code d’erreur spécifique à FCM en cas d’échec de la diffusion
    errorMessage Description ou null de l’erreur Message d’erreur lisible par l’utilisateur
  7. If feedbackStatus: "error":

    • Inspectez errorCode et errorMessage et appliquez la résolution FCM correspondante à partir de l’étape 1.
  8. Si aucun événement de retour n’est trouvé :

    • Il se peut que la notification push n’ait pas été tentée ou que les commentaires ne soient pas encore disponibles.
    • Vérifiez si le profil a été exclu du ​ rapport de campagne ​.

Si feedbackStatus est sent : FCM a accepté la notification. Cela ne confirme pas que l’appareil a rendu l’activité En direct . Poursuivez les vérifications côté appareil à l’étape 4.

accordion
​3. Inspecter la diffusion FCM dans Assurance

Utilisez Assurance sur un appareil de test Android connecté.

  1. Ouvrez une session Assurance et maintenez-la active pendant l’appel API.
  2. Exécutez l’appel API avec event_type défini sur start, update ou end.
  3. Dans la liste Événements, examinez les événements de diffusion push disponibles pour la requête à FCM et sa réponse.
  4. Vérifiez si FCM a accepté ou rejeté la demande et examinez tous les détails d’erreur signalés.
  5. Pour les requêtes rejetées, utilisez les erreurs FCM de l’étape 1 pour vérifier le jeton, les informations d’identification du projet Firebase et la payload. Si les événements du fournisseur ne sont pas disponibles dans la session, utilisez les événements message.feedback et les rapports de campagne.
accordion
​4. Vérification du comportement côté appareil

Si Adobe affiche une diffusion réussie mais que l’appareil n’affiche pas ou ne met pas à jour l’activité Live :

  • Inspectez les journaux de l’application Android pour détecter les erreurs de gestion des notifications push et de rendu des activités dynamiques.
  • Vérifiez que les notifications sont autorisées et que les notifications promues sont autorisées à l’aide de canPostPromotedNotifications().
  • Vérifiez que les autorisations POST_NOTIFICATIONS et POST_PROMOTED_NOTIFICATIONS sont accordées et que le canal identifié par notification_channel_id existe.
  • Assurez-vous que timestamp est plus récent que le dernier événement traité et que notification_id n’a pas changé. Pour les diffusions, vérifiez également l’abonnement de l’appareil à topic_name.
  • Vérifiez que l’application n’est pas arrêtée de force.
  • Vérifiez que l’appareil dispose d’une connectivité réseau.
  • Testez plusieurs appareils pour exclure les problèmes spécifiques à l’appareil.
  • Vérifiez que l’appareil exécute Android 16.1 (niveau API 36.1) ou une version ultérieure et que l’application utilise targetSdk 36.
  • Vérifiez que les clés content_state et les types valeur correspondent au fournisseur de style de l’application.
accordion
​5. Transmission à l’assistance Adobe

Si vous avez terminé toutes les étapes et que le problème n’est pas résolu, contactez l’assistance clientèle d’Adobe à l’adresse suivante :

Informations requises :

  • Identifiant et nom de campagne
  • Espace de noms et ID du profil
  • notification_id et event_type de la payload de l’API ; pour les diffusions, incluez également les topic_name et l’ID d’audience
  • Horodatages des appels API
  • Captures d’écran des rapports de campagne présentant les statistiques d’envoi, les raisons d’erreur et les raisons d’exclusion
  • Événements de message.feedback de profil pertinents, y compris les codes d’erreur FCM et les messages
  • Détails de la session Assurance et captures d’écran d’événement pertinentes
  • Payload et réponse de requête API, avec les informations d’identification et les jetons d’appareil supprimés
  • Nom du package Android, projet Firebase, ID de l’expéditeur et détails de configuration des informations d’identification FCM ; n’incluez pas de clés privées
  • Version du système d’exploitation Android, modèle d’appareil, statut d’autorisation des notifications et journaux d’application pertinents

Scénario 4 : jeton de mise à jour de l’activité active non synchronisé scenario-4-live-activity-update-token-not-synced

[S’applique uniquement aux cas d’utilisation unitaires]{class="badge informative"}

[S’applique uniquement à iOS]{class="badge positive"}

L’activité En direct démarre sur l’appareil, mais les demandes d’API update ou end acceptées ne les mettent pas à jour ni ne les ignorent. La raison possible est que le jeton de mise à jour d’activité dynamique par instance n’a pas été synchronisé avec le système Adobe. Effectuez les vérifications ci-dessous pour confirmer si la synchronisation des jetons pose problème.

Présentation des jetons de mise à jour

Lorsqu’une activité Live démarre sur un appareil, iOS génère un jeton de mise à jour unique pour cette instance d’activité Live spécifique. Ce jeton est requis pour :

  • Envoi de mises à jour à l’activité Live
  • Terminaison à distance de l’activité Live

Chaque instance d’activité active possède son propre jeton de mise à jour unique. Adobe a besoin de ce jeton pour diffuser les événements de mise à jour et de fin.

Comportement attendu

Pour que les événements de mise à jour et de fin fonctionnent, les événements suivants doivent se produire :

  1. L’activité en direct démarre correctement sur l’appareil.
  2. L’appareil génère un jeton de mise à jour pour cette instance d’activité active.
  3. Mobile SDK capture et envoie le jeton de mise à jour à Adobe.
  4. Le jeton de mise à jour est synchronisé et stocké dans le système Adobe.
  5. Les appels API suivants pour la mise à jour/l’utilisation finale de ce jeton pour la diffusion.

Pré-vérifications :

  • Autorisation utilisateur : la première fois qu’une activité Live démarre sur un appareil, iOS affiche une invite système indiquant « Autoriser [Nom de l’application] à fournir des mises à jour d’activité Live ? » L’utilisateur doit appuyer sur « Autoriser » pour que les jetons de mise à jour soient générés et synchronisés. Si l’utilisateur clique sur « Ne pas autoriser », aucun jeton de mise à jour n’est créé et les requêtes de mise à jour/fin échouent. Il s’agit d’une autorisation unique par application.
  • Validation des profils et des campagnes : effectuez les vérifications Scénario 1 et Scénario 2 pour vous assurer que le profil, les jetons et la configuration de la campagne sont corrects.

Étapes de débogage

​1. Vérification de la synchronisation des jetons de mise à jour dans Assurance
  1. Ouvrez votre session Assurance.

  2. Assurez-vous que la session était active lorsque l’activité En direct a démarré sur l’appareil.

  3. Filtrez ou recherchez des événements avec eventType = "liveActivity.updateToken".

  4. Sélectionnez l’événement et examinez la payload :

    • Vérifiez que le champ token contient une chaîne de jeton de mise à jour valide.
    • Vérifiez que le liveActivityID correspond à votre instance d’activité active.
    • Vérifiez que la activityType correspond à votre attributes-type.
  5. Si l’événement est introuvable :

    • Le jeton de mise à jour n’a pas été généré ou capturé par le SDK.
    • Vérifiez si l’utilisateur a accordé des autorisations d’activité en direct.
    • Vérifiez que l’activité Live a démarré correctement sur l’appareil.
    • Vérifiez que le SDK mobile est correctement intégré pour capturer les jetons de mise à jour.
  6. Si l’événement est trouvé, passez à l’étape 2.

​2. Vérifier le jeton de mise à jour dans les événements de profil
  1. Accédez à Client > Profils dans Journey Optimizer.

  2. Recherchez et ouvrez le profil.

  3. Sélectionnez l’onglet Événements.

  4. Recherchez les événements liveActivity.updateToken.

  5. Vérifiez les détails de l’événement :

    • Vérifiez que l’horodatage est récent (correspond au démarrage de l’activité Live ).
    • Vérifiez que les token et les liveActivityID sont présents.
    • Assurez-vous que la activityType est correcte.
  6. Si l’événement est introuvable dans le profil :

    • L’événement de jeton de mise à jour n’a peut-être pas encore été ingéré dans le profil.
    • Patientez 5 à 10 minutes et vérifiez à nouveau.
    • S’il manque toujours après 15 minutes, il peut y avoir un problème d’ingestion d’événement.
  7. Si l’événement est trouvé, le jeton de mise à jour a été synchronisé. Passez à l’étape 3.

​3. Vérifier les événements de diffusion des activités en direct dans Assurance
  1. Au cours de votre session Assurance, exécutez une mise à jour ou terminez un appel API.

  2. Dans la Liste des événements, recherchez les événements de diffusion d’activité en direct (événements push APNs).

  3. Recherchez des événements indiquant :

    • Notification push envoyée aux APNs.
    • Réponse des APNs (succès ou erreur).
    • Confirmation de diffusion.
  4. Si un événement de diffusion APNS est présent : la notification push a été envoyée. Si l’appareil n’est toujours pas mis à jour, le problème peut concerner l’appareil (l’application ne gère pas la notification push, problèmes réseau, etc.).

  5. Si l’événement de diffusion APNs est manquant : le jeton de mise à jour peut ne pas être correctement stocké ou associé au profil dans le système Adobe.

  6. Si des événements d’erreur sont présents : examinez les détails de l’erreur pour des raisons d’échec spécifiques (jeton non valide, APN rejetés, etc.).

Scénario 5 : vérification du statut d’exécution via l’API scenario-5-checking-execution-status-via-the-api

[S’applique uniquement aux cas d’utilisation unitaires]{class="badge informative"}

Après le déclenchement d’une activité Live unitaire, l’API GET Message Execution renvoie l’état actuel de l’exécution. Utilisez-la pour confirmer si une exécution est en file d’attente, en cours, terminée ou en échec, sans attendre que l’événement de retour arrive dans le jeu de données.

L’executionId est l’identifiant du message renvoyé dans la réponse du déclencheur. Pour les exécutions unitaires, il comporte le préfixe HUOC-.

Point d’entrée et exemple de requête

Point d’entrée : GET https://cjm.adobe.io/imp/message/executions/{executionId}

curl --location 'https://cjm.adobe.io/imp/message/executions/HUOC-123456' \
  --header 'x-gw-ims-org-id: <IMS_ORG_ID>' \
  --header 'Authorization: Bearer <ACCESS_TOKEN>' \
  --header 'x-sandbox-name: <SANDBOX_NAME>' \
  --header 'x-sandbox-id: <SANDBOX_UUID>' \
  --header 'x-api-key: <API_KEY>'

Codes de réponse HTTP

Code
Signification
200 OK
Exécution trouvée et renvoyée avec succès
401 Non Autorisé
Jeton porteur manquant ou non valide
403 Interdit
Jeton valide mais autorisations insuffisantes
404 Introuvable
L’ID d’exécution n’existe pas

Valeurs du statut d’exécution

Le champ status dans une réponse 200 indique la progression de l’exécution :

Statut
Description
PENDING
Exécution en file d’attente mais pas encore démarrée
INPROGRESS
L’exécution est en cours de traitement.
COMPLETED
Exécution terminée avec succès
FAILED
L’exécution a rencontré une erreur

La réponse 200 renvoie également executionType (unitary ou batch), executionRunMode (default ou test) et un bloc de source avec des métadonnées (campaignId, journeyId, batchInstanceId, informations sur les ressources) qui relient l’exécution à la campagne ou au parcours de déclenchement.

Scénario 6 : problèmes de configuration de campagne de diffusion et de payload broadcast-config

[S’applique uniquement aux cas d’utilisation de diffusion]{class="badge informative"}

Cette section aborde les scénarios de dépannage spécifiques aux activités de diffusion en direct, qui nécessitent des approches de débogage différentes de celles des campagnes unitaires.

Lorsque les profils disposent de jetons valides mais que l’activité Live n’apparaît pas, ne met pas à jour ou ne se comporte pas comme prévu pour les membres de l’audience, le problème provient généralement de l’un des éléments suivants :

  • La campagne n’est pas configurée en tant que marketing déclenché par l’API.
  • La payload de l’API n’a pas d’audience ou l’identifiant de diffusion spécifique à la plateforme : input-push-channel sur iOS ou topic_name sur Android.
  • Les champs de payload ne correspondent pas à l’implémentation d’iOS ActivityAttributes ni au mappage fournisseur de style Android.
  • Le canal push Apple n’est pas configuré correctement ou l’appareil Android n’est pas abonné à la rubrique FCM.

Ce scénario de dépannage s’applique à tous les événements d’activité Live dans les campagnes de diffusion : start, update et end.

iOS

Pré-vérifications :

  • Type de campagne :

    • Vérifiez que la campagne est créée en tant que marketing déclenché par l’API (obligatoire pour les campagnes diffusées/basées sur l’audience).
    • Vérifiez qu’une audience est définie dans la configuration de la campagne.
  • Validation des profils et des jetons : échantillonnez plusieurs profils de l’audience pour vérifier qu’ils disposent de liveActivityPushNotificationDetails valides. Pour obtenir des étapes de validation détaillées, suivez Scénario 1.

Étapes de débogage

accordion
​1. Vérifier la configuration de l’audience de la campagne
  1. Ouvrez votre campagne marketing déclenchée par API dans Journey Optimizer.

  2. Accédez à la section Audience et vérifiez les éléments suivants :

    • Une audience est sélectionnée pour la campagne.
    • L’ID d’audience correspond à celui utilisé dans votre payload d’API.
    • L’audience contient les profils attendus.
  3. Accédez à la section Actions.

  4. Vérifiez la Configuration de l’activité dynamique :

    • La configuration doit être définie pour l’application iOS avec l’identifiant de lot approprié.
    • Le type d’activité doit correspondre à la attributes-type de votre payload API. Par exemple, si votre payload contient des "attributes-type": "AirplaneTrackingAttributes", la campagne doit spécifier le même type d’activité.
accordion
​2. Validation de la structure de la payload de l’API de diffusion

La structure de la payload de diffusion diffère des campagnes unitaires. Vérifiez que la payload respecte le format de diffusion approprié.

Champs obligatoires pour la diffusion :

code language-json
{
   "campaignId": "878a11d4-b519-47bd-8313-fecfee19857b",
   "audience": {
      "id": "8c3dbdea-2957-401f-acf0-3966fba1601e"
   },
   "context": {
      "requestPayload": {
         "aps": {
            "input-push-channel": "FEt0NgvLEfEAAOqA6AXdIQ==",
            "content-available": 1,
            "timestamp": 1771829292,
            "event": "start",
            "attributes-type": "AirplaneTrackingAttributes",
            "content-state": { ... },
            "attributes": { ... }
         }
      }
   }
}

Problèmes courants de payload :

table 0-row-3 1-row-3 2-row-3 3-row-3 4-row-3 5-row-3 6-row-3 7-row-3
Champ Exigence Problème courant
campaignId Doit correspondre à l’identifiant de campagne marketing activé Mauvais identifiant de campagne ou utilisation de la campagne transactionnelle
audience.id Doit correspondre à une audience existante dans AEP ID d’audience incorrect ou audience inexistante
input-push-channel Obligatoire pour la diffusion - Identifiant unique de cette instance de diffusion Il manque ou ne correspond pas au channelID dans liveActivityData
timestamp Doit toujours être l’heure Unix actuelle/la plus récente en secondes Utilisation de l’ancien horodatage/de l’horodatage mis en cache
event Doit être "start", "update" ou "end" Type d’événement non valide
attributes-type Doit correspondre au type d’activité de campagne Incompatibilité ou faute de frappe
content-available Doit être 1 Valeur manquante ou incorrecte

Champs critiques spécifiques à la diffusion :

  • input-push-channel:

    • Obligatoire pour toutes les activités de diffusion en direct.
    • Sert d’identifiant unique pour cette instance de diffusion spécifique.
    • Tous les profils de l’audience reçoivent des activités en direct liées à ce canal.
    • Doit correspondre à la channelID dans liveActivityData.channelID (voir étape 3).
    • Doit être créé pour le appID dans le portail Apple Developer Portal par votre équipe.
    • Seuls les canaux créés pour l’appID spécifique peuvent être utilisés pour la diffusion d’activités en direct sur cette application.
  • audience.id:

    • Un segment d’audience valide créé dans Adobe Experience Platform doit être référencé.
    • Tous les profils de cette audience sont ciblés pour l’activité En direct .
    • L’audience doit être activée et contenir des profils avec des liveActivityPushNotificationDetails valides.

Utilisez toujours la dernière date et heure :

  • Le champ timestamp doit toujours correspondre à l’heure Unix actuelle (en secondes) pour chaque appel API.
  • Cette exigence s’applique à tous les types d’événements : start, update et end.
  • Critique pour les mises à jour/fin : l’utilisation d’horodatages obsolètes entraîne l’échec des demandes de mise à jour et de fin.
  • Générez un nouvel horodatage pour chaque appel API de diffusion.

Champs facultatifs :

  • dismissal-date : époque Unix pour le rejet automatique (pertinent uniquement pour les événements end)
  • alert : objet avec title et body pour la notification

Consultez la documentation de l’API de messagerie Adobe Journey Optimizer 🔗 pour obtenir des spécifications d’API complètes.

accordion
​3. Alignement de l’état du contenu, des attributs et du canal push d’entrée avec l’implémentation d’iOS

Assurez-vous que les champs de payload correspondent à l’implémentation ActivityAttributes de votre application iOS et que le input-push-channel correspond au channelID dans liveActivityData.

  1. Vérifiez votre définition d’Attributs d’activité iOS.

Votre structure de ActivityAttributes personnalisée doit implémenter le protocole LiveActivityAttributes d’Adobe :

code language-swift
struct AirplaneTrackingAttributes: LiveActivityAttributes {
   public struct ContentState: Codable, Hashable {
      var journeyProgress: Int
   }

   // Adobe SDK requirement
   var liveActivityData: LiveActivityData

   // Your custom attributes
   var arrivalAirport: String
   var departureAirport: String
   var arrivalTerminal: String
}
  1. Mappez les champs iOS à la payload de l’API de diffusion.

Incluez des content-state pour tous les types d’événements. Incluez les attributes, y compris les liveActivityData.channelID, pour les événements de début uniquement :

code language-json
{
   "aps": {
      "input-push-channel": "FEt0NgvLEfEAAOqA6AXdIQ==",
      "event": "start",
      "timestamp": 1771829292,
      "attributes-type": "AirplaneTrackingAttributes",
      "content-state": {
         "journeyProgress": 0
      },
      "attributes": {
         "arrivalAirport": "DEL",
         "departureAirport": "MUM",
         "arrivalTerminal": "T1",
         "liveActivityData": {
            "channelID": "FEt0NgvLEfEAAOqA6AXdIQ=="
         }
      }
   }
}

Critique : input-push-channel doit correspondre àchannelID

  • La valeur input-push-channel à la racine de aps doit correspondre exactement à la channelID dans liveActivityData.
  • Dans l’exemple ci-dessus, les deux valeurs sont "FEt0NgvLEfEAAOqA6AXdIQ==".
  • Cette correspondance associe l’instance de diffusion aux données d’activité en direct.
  • Une incohérence entraîne des échecs de diffusion.

Points clés de validation :

  • Incluez tous les champs ContentState dans content-state pour tous les types d’événements.
  • Incluez tous les champs de LiveActivityAttributes personnalisés dans attributes pour les événements de début uniquement.
  • Pour les événements de début, les liveActivityData.channelID doivent correspondre aux input-push-channel.
  • Les noms des champs sont sensibles à la casse et doivent correspondre exactement.
  • Les types de données doivent correspondre (chaîne, entier, booléen, objets imbriqués, etc.).
  • Pour les événements de mise à jour/fin, utilisez le même input-push-channel que l’événement de début d’origine.

Erreurs courantes :

table 0-row-3 1-row-3 2-row-3 3-row-3 4-row-3 5-row-3 6-row-3 7-row-3
Problème Impact Corriger
input-push-channel manquant La diffusion ne fonctionnera pas Ajouter un identifiant de canal unique pour chaque diffusion
input-push-channel ne correspond pas à channelID L’activité en direct ne démarrera pas Assurez-vous que les deux valeurs sont identiques
Différents input-push-channel pour la mise à jour/fin La mise à jour/la fin n’atteindra pas les activités actives Utiliser le même identifiant de canal tout au long du cycle de vie
liveActivityData.channelID manquant L’activité en direct ne sera pas liée à la diffusion. Inclure les channelID dans les attributs pour l’événement de début
Champ obligatoire manquant dans l’événement de début L’activité en direct ne démarrera pas Ajouter tous les champs de la structure iOS
Nom de champ incorrect (faute de frappe/casse) Champ ignoré ou erreur d’analyse Correspondance exacte des noms de champ iOS
Horodatage obsolète à la mise à jour/fin Mise à jour/fin ignorée par les appareils Toujours générer un nouvel horodatage
accordion
​4. Tester avec Assurance

Vérifiez l’exécution de l’API et la diffusion de la payload à l’aide d’Assurance :

  1. Ouvrez votre session Assurance sur un appareil de test qui fait partie de l’audience.

  2. Exécutez l’appel API de diffusion.

  3. Dans la Liste des événements, recherchez :

    • Événements d’exécution de campagne.
    • Événements de diffusion d’activité en direct.
    • Événements d’erreur indiquant les échecs de validation de la payload.
  4. Inspectez les payloads d’événement pour confirmer :

    • La payload a été traitée correctement.
    • Le input-push-channel est présent.
    • Aucune erreur de validation ne s’est produite.
    • Des activités en direct ont été envoyées aux APNs pour les membres de l’audience.
Android

Pré-vérifications :

  • Type de campagne : vérifiez que la campagne est marketing déclenché par l’API et qu’une audience est définie.
  • Validation des profils et des jetons : échantillonnez plusieurs profils d’audience pour vérifier qu’ils disposent de pushNotificationDetails valides avec platform: "fcm". Suivez les vérifications Android dans Scénario 1.
  • Abonnement à la rubrique : vérifiez que l’appareil de test est abonné à la rubrique FCM utilisée pour la diffusion.

Étapes de débogage

accordion
​1. Vérifier la configuration de l’audience de la campagne
  1. Ouvrez votre campagne marketing déclenchée par API dans Journey Optimizer.

  2. Accédez à la section Audience et vérifiez les éléments suivants :

    • Une audience est sélectionnée pour la campagne.
    • L’ID d’audience correspond à celui utilisé dans votre payload d’API.
    • L’audience contient les profils attendus.
  3. Accédez à la section Actions.

  4. Vérifiez que la Configuration de l’activité dynamique cible le package Android correct et utilise les informations d’identification FCM correspondantes. Android n’utilise ni type d’activité ni champ attributes-type.

accordion
​2. Validation de la structure de la payload de l’API de diffusion

Les diffusions Android utilisent une rubrique FCM . Incluez audience.id et placez l’objet fcm sous context.requestPayload, plutôt que sous un destinataire individuel.

Exemple de payload de début de diffusion :

code language-json
{
   "requestId": "your-request-id",
   "campaignId": "your-marketing-campaign-id",
   "audience": {
      "id": "your-audience-id"
   },
   "context": {
      "requestPayload": {
         "fcm": {
            "topic_name": "flight_DL321",
            "notification_id": "flight-DL-321",
            "notification_channel_id": "live_updates_channel",
            "timestamp": 1771829292,
            "priority": "PRIORITY_HIGH",
            "event_type": "start",
            "title": "Flight DL-321",
            "body": "Boarding starts shortly",
            "critical_text": "25 min",
            "content_state": {
               "custom_key_template_type": "progress",
               "custom_key_journey_start": "DEL",
               "custom_key_journey_progress": 10,
               "custom_key_journey_end": "MUM"
            }
         }
      }
   }
}

Remplacez l’exemple d’horodatage par l’heure Unix actuelle en secondes. Adaptez les clés content_state au fournisseur de style de votre application.

Problèmes courants de payload :

table 0-row-3 1-row-3 2-row-3 3-row-3 4-row-3 5-row-3 6-row-3 7-row-3 8-row-3
Champ Exigence Problème courant
campaignId Doit correspondre à l’identifiant de campagne marketing activé Mauvais identifiant de campagne ou utilisation de la campagne transactionnelle
audience.id Doit correspondre à l’audience configurée dans la campagne Mauvais ID d’audience ou audience manquante
topic_name Doit être non vide et inchangé au début, à la mise à jour et à la fin La rubrique manquante est rejetée comme incorrecte ; les sauts de rubrique modifiés mettent à jour/terminent le ciblage
notification_id Doit rester inchangé tout au long du cycle de vie de l’activité Mettre à jour ou terminer cible une notification différente
notification_channel_id Doit correspondre à un canal de notification créé par l’application Canal manquant ou incompatible
timestamp Secondes Epoch ; doit être supérieur à la valeur précédente pour le même sujet. Les dates et heures antérieures ou égales sont ignorées
event_type Doit être "start", "update" ou "end" Événement de cycle de vie non valide
content_state Doit utiliser des clés et des types valeur pris en charge par le fournisseur de style de l’application Clés non prises en charge ou types incorrect

Champs critiques spécifiques à la diffusion :

  • topic_name: identifie la rubrique FCM à laquelle les équipements cibles sont abonnés. Incluez la même valeur non vide dans chaque requête de début, de mise à jour et de fin.
  • audience.id: identifie l’audience de la campagne dans Adobe Experience Platform. Vérifiez son appartenance et ses profils types pour obtenir des pushNotificationDetails valides.

Horodatage et champs facultatifs :

  • Générez une nouvelle timestamp en secondes epoch pour chaque événement et assurez-vous qu’elle est strictement supérieure à la dernière valeur pour le même sujet. Les valeurs antérieures ou égales sont ignorées.
  • when permet éventuellement de définir l’heure affichée par la notification en secondes epoch. Il ne contrôle pas l’ordre des messages.
  • Par event_type: "end", dismiss_after spécifie éventuellement le nombre de secondes pendant lesquelles l’activité terminée reste visible avant la suppression. Il s’agit d’une durée, et non d’un horodatage d’époque.

Consultez la documentation de l’API de messagerie Adobe Journey Optimizer 🔗 pour obtenir des spécifications d’API complètes.

accordion
​3. Vérifier l’abonnement à la rubrique et le rendu de l’application
  1. Vérifiez que l’appareil de test s’abonne à la rubrique exacte spécifiée dans topic_name, à l’aide de FirebaseMessaging.getInstance().subscribeToTopic(topic).
  2. Vérifiez que l’abonnement a réussi et que l’application le signale par le biais de l’API de suivi d’abonnement aux rubriques prise en charge par son extension Adobe Live Activities installée.
  3. Conservez les topic_name et notification_id inchangés pour les événements de début, de mise à jour et de fin.
  4. Vérifiez que les clés content_state et les types valeur correspondent au fournisseur de style de l’application.
  5. Vérifiez que les autorisations de notification sont accordées et qu’notification_channel_id correspond à un canal créé par l’application.

Erreurs courantes :

table 0-row-3 1-row-3 2-row-3 3-row-3 4-row-3 5-row-3
Problème Impact Corriger
topic_name manquant ou vide La demande est rejetée comme incorrecte Incluez une rubrique non vide dans chaque requête de cycle de vie
Appareil non abonné à la rubrique L’appareil ne reçoit pas d’événements de diffusion S’abonner à la rubrique exacte et vérifier la réussite de l’abonnement
Modification de la rubrique ou de l’ID de notification La mise à jour/fin ne cible pas l’activité d’origine Conserver les deux valeurs inchangées tout au long du cycle de vie
Clés ou types de content_state non pris en charge Le contenu est manquant ou son rendu est incorrect Correspondance avec le mappage du fournisseur de style de l’application
timestamp plus ancien ou égal Événement ignoré Utiliser une valeur supérieure à la date et heure du dernier traitement

Voir l’exemple de payload de diffusion Android 🔗 pour des champs et des exemples supplémentaires.

accordion
​4. Tester avec Assurance

Utilisez Assurance sur un appareil de test Android connecté, qui fait partie de l’audience et est abonné à la rubrique de diffusion.

  1. Ouvrez votre session Assurance avant d’exécuter l’appel API de diffusion.
  2. Envoyez des requêtes de début, de mise à jour et de fin avec les mêmes topic_name et notification_id et avec des horodatages croissants.
  3. Dans la liste Événements, recherchez les erreurs de traitement de la payload dans les événements SDK et de diffusion disponibles.
  4. Vérifiez que la payload contient les valeurs d’objet, de topic_name et de event_type fcm prévues.
  5. Consultez les rapports de campagne et les événements message.feedback disponibles pour confirmer les résultats de la diffusion FCM. La valeur de la serviceProvider Android est fcm.
  6. Si FCM accepte le message mais que l’appareil n’effectue pas le rendu de l’activité, inspectez l’abonnement à la rubrique, les autorisations de notification, la configuration du canal et les journaux d’application. L’acceptation du fournisseur ne confirme pas le rendu de l’appareil.

Scénario 7 : profil non présent dans l’audience ou instantané d’audience obsolète scenario-7-profile-not-in-audience-or-stale-audience-snapshot

[S’applique uniquement aux cas d’utilisation de diffusion]{class="badge informative"}

Dans ce scénario, la campagne et la payload sont correctement configurées, mais des profils spécifiques ne reçoivent pas l’activité En direct . Cela se produit généralement lorsque :

  • Le profil n’est pas membre de l’audience liée à la campagne.
  • L’audience est une audience par lots et contient un instantané obsolète des données de profil.
  • Les détails du jeton push du profil (liveActivityPushNotificationDetails sur iOS ou pushNotificationDetails sur Android) ont été mis à jour récemment, mais n’ont pas encore été reflétés dans l’instantané de l’audience.

Ce scénario de dépannage s’applique spécifiquement aux campagnes de diffusion utilisant le ciblage basé sur l’audience.

Comprendre l’évaluation des audiences

Adobe Experience Platform utilise différentes méthodes d’évaluation d’audience qui déterminent à quel moment les mises à jour de profil sont répercutées dans l’audience :

Méthode
Fréquence d’évaluation
Actualisation des données
Idéal pour
Lot
Une fois par jour (planifié)
Peut être périmé jusqu’à 24 heures.
Audiences volumineuses, non sensibles à l’heure
Diffusion en continu
Temps réel (lors des modifications de profil)
En temps quasi réel pour les profils mis à jour
Sensible à l’heure, nécessite des mises à jour de profil
Edge
Temps réel sur les sites périphériques
Temps quasi réel
Cas d’utilisation évalués par Edge

Contrôles préalables

  • Validation des campagnes et des payload :

    • Effectuez les vérifications dans Scénario 6 pour votre plateforme afin de vous assurer que la campagne et la payload sont correctes.
    • Vérifiez que la audience.id dans la payload de l’API correspond à la configuration de la campagne.
  • Le profil existe : vérifiez que le profil existe dans Adobe Experience Platform avec des détails de jeton push valides. Suivez les vérifications dans Scénario 1. Les détails à rechercher dépendent de la plateforme :

    • iOS: liveActivityPushNotificationDetails avec un jeton valide.
    • Android: pushNotificationDetails qui inclut le jeton d’enregistrement FCM actuel, une appId correspondant au nom, à la platform: "fcm" et à la denylisted: false du package Android.
  • Abonnement à une rubrique (Android uniquement) : vérifiez que l’appareil est abonné à la rubrique FCM exacte spécifiée dans topic_name. L’appartenance à l’audience n’abonne pas l’appareil à la rubrique. Suivez les vérifications topic-subscription d’Android dans Scénario 6.

Étapes de débogage

​1. Vérifier que le profil est dans l’audience

Tout d’abord, vérifiez si le profil qui doit recevoir l’activité En direct fait réellement partie de l’audience.

  1. Accédez à Audiences dans Adobe Experience Platform.

  2. Recherchez et ouvrez l’audience à l’aide du audience.id de votre campagne.

  3. Cliquez sur Parcourir ou Exemples de profils pour afficher les membres de l’audience.

  4. Recherchez votre profil de test à l’aide de l’espace de noms et de la valeur d’identité.

  5. Si le profil est introuvable dans l’audience :

    • Le profil ne répond pas aux critères d’audience ou aux règles de segment.
    • Consultez la définition de l’audience pour comprendre les exigences d’appartenance.
    • Mettez à jour les données de profil ou la définition d’audience pour inclure le profil.
    • Attendez la fin de l’évaluation de l’audience (voir étape 2).
  6. Si un profil est trouvé dans l’audience : passez à l’étape 2 pour vérifier l’actualisation des données.

​2. Vérifier le type et le planning d’évaluation des audiences

Déterminez si l’audience utilise une évaluation par lots, par flux ou Edge, car cela détermine l’actualisation des données.

note
NOTE
L’évaluation de l’audience n’enregistre pas les jetons push et n’abonne pas les appareils Android aux rubriques FCM. Il détermine uniquement les données de profil que l’instantané d’audience contient.
  1. Sur la page Détails de l’audience, vérifiez la méthode Évaluation :

    • Lot : évalué une fois par jour selon un planning.
    • Streaming : évalué en temps réel lorsque des mises à jour de profil se produisent.
    • ​​: évalué aux emplacements Edge en temps réel.

Suivez les étapes de dépannage appropriées en fonction de la méthode d’évaluation :

Si l’audience utilise l’évaluation par lots :

  1. Comprendre les limites des audiences par lots :

    • Les audiences par lots sont évaluées une fois par jour (généralement le soir).
    • L’instantané d’audience peut avoir jusqu’à 24 heures.
    • Si un profil a récemment enregistré ou actualisé ses détails de jeton push (liveActivityPushNotificationDetails sur iOS ou pushNotificationDetails sur Android), les détails mis à jour peuvent ne pas se trouver dans l’instantané actuel.
    • Les mises à jour apportées aux profils ne seront reflétées que lors de la prochaine évaluation par lots.
  2. Vérifier à quel moment s’est produite la dernière évaluation :

    • Dans les détails de l’audience, recherchez l’horodatage Dernière évaluation.
    • Si les détails du jeton push du profil ont été mis à jour après cet horodatage, l’instantané d’audience n’inclut pas le jeton actif.
  3. Résoudre les données obsolètes :

    1. Option 1 : attendre l’évaluation par lots planifiée

      • La prochaine évaluation par lot inclura les données de profil mises à jour.
      • Cela se produit automatiquement une fois par jour.
      • Idéal pour les scénarios non urgents.
    2. Option 2 : déclencher l’évaluation des audiences à la demande

      1. Accédez à Audiences dans AEP.
      2. Sélectionnez votre audience.
      3. Cliquez sur Évaluer maintenant ou Activer à la demande.
      4. Attendez la fin de l’évaluation (cela peut prendre de quelques minutes à plusieurs heures selon la taille de l’audience).
      5. Vérifiez que le profil contient désormais des données mises à jour dans l’instantané d’audience.
      6. Réessayez l’appel API de diffusion.

Si l’audience utilise l’évaluation par flux :

  1. Comprendre le comportement de l’audience de diffusion en continu :

    • Les audiences en flux continu sont évaluées en temps réel lorsque des mises à jour de profil se produisent.
    • Nouveaux profils : remplissez les conditions peu de temps après leur création s’ils répondent aux critères du segment.
    • Profils mis à jour : qualifiez-vous ou disqualifiez-vous peu de temps après la mise à jour.
    • Profils inchangés existants : ne sont pas réévalués, sauf si une mise à jour est effectuée.
  2. Identifier le problème :

    • Si un profil existe déjà et répond aux critères du segment, mais qu’aucune mise à jour n’a lieu sur ce profil, il ne peut pas être ajouté à une audience de diffusion en continu nouvellement créée.
    • Le profil doit recevoir une mise à jour (toute modification d’attribut) pour déclencher une réévaluation.
  3. Résolvez le problème :

    • Pour les nouveaux profils : ils sont automatiquement qualifiés si les critères sont remplis. Aucune action n’est nécessaire.

    • Pour les profils existants sans mises à jour récentes :

      • Apportez une mise à jour mineure au profil (par exemple, mettez à jour un champ d’horodatage).
      • Cela déclenche l’évaluation en flux continu et ajoute le profil à l’audience.
      • Alternative : utilisez une audience par lots ou une audience Edge pour les profils existants.

Avancé : débogage via des requêtes de jeux de données advanced-debugging-via-dataset-queries

NOTE
Ces requêtes s’appliquent à la fois à iOS et Android. Les deux plateformes utilisent des événements message.feedback dans le jeu de données d’événement de retour de message AJO, avec les mêmes chemins de schéma et valeurs de feedbackStatus que ci-dessous.
Un statut sent indique la remise au fournisseur push : APNs sur iOS ou FCM sur Android.

Audience : développeurs et ingénieurs de données. Nécessite un accès SQL aux jeux de données Journey Optimizer via Adobe Experience Platform Query Service.

Utilisation : Assurance se limite aux appareils de test connectés au cours d’une session active. Utilisez des requêtes de jeux de données pour examiner les problèmes signalés par les utilisateurs finaux de production ou pour auditer l’historique des diffusions après coup. Le jeu de données expose les mêmes informations de cycle de vie et d’échec que le plug-in Assurance.

Localisation du jeu de données

  1. Dans Journey Optimizer, accédez à Gestion des données > Jeux de données.

  2. Activez le bouton Afficher les jeux de données système et ouvrez le Jeu de données d’événement de retour de message AJO.

Notez le nom exact de la table qui s’affiche sur la page de détails. Les requêtes ci-dessous utilisent ajo_message_feedback_event_dataset, remplacez-la par votre nom de table réel s’il diffère. Pour les champs de ce jeu de données, voir Référence du schéma Adobe Journey Optimizer 🔗.

Requête par ID d’activité dynamique

Utilisez cette option lorsque vous connaissez l’ID d’activité dynamique (par exemple, un UUID de commande ou un ID de suivi d’expédition) et que vous souhaitez que chaque événement de retour lui soit associé tout au long du cycle de vie.

SELECT
  timestamp,
  identitymap,
  _experience.customerJourneyManagement
    .messageDeliveryfeedback.feedbackStatus AS status,
  _experience.customerJourneyManagement
    .messageDeliveryfeedback.messageFailure.reason AS failure_reason,
  _experience.customerJourneyManagement
    .pushChannelContext.liveActivity.event AS la_event,
  _experience.customerJourneyManagement
    .messageExecution.campaignID AS campaign_id,
  _experience.customerJourneyManagement
    .messageExecution.batchInstanceID AS batch_id,
  _id
FROM ajo_message_feedback_event_dataset
WHERE
  _experience.customerJourneyManagement
    .pushChannelContext.liveActivity.liveActivityID
    = '<YOUR_LIVE_ACTIVITY_ID>'
  AND eventtype = 'message.feedback'
ORDER BY timestamp ASC

Requête par ECID

Utilisez cette option lorsque l’ECID du profil affecté est connu. Remplacez <YOUR_ECID> par la valeur ECID récupérée à partir du profil.

SELECT
  timestamp,
  _experience.customerJourneyManagement
    .messageDeliveryfeedback.feedbackStatus AS status,
  _experience.customerJourneyManagement
    .messageDeliveryfeedback.messageFailure.reason AS failure_reason,
  _experience.customerJourneyManagement
    .pushChannelContext.liveActivity.event AS la_event,
  _experience.customerJourneyManagement
    .pushChannelContext.liveActivity.liveActivityID AS la_id,
  _experience.customerJourneyManagement
    .messageExecution.campaignID AS campaign_id,
  _id
FROM ajo_message_feedback_event_dataset
WHERE
  identityMap['ECID'][0].id = '<YOUR_ECID>'
  AND eventtype = 'message.feedback'
ORDER BY timestamp ASC
NOTE
identityMap est un type MAP structuré, et non une chaîne. Utilisez la syntaxe de tableau et d'accesseur struct indiquée ci-dessus. Les fonctions de chaîne telles que LIKE renvoient une erreur DATATYPE_MISMATCH.
Le jeu de données d’événement de retour de message stocke uniquement l’ECID dans son identityMap. Si le profil affecté est identifié par un espace de noms personnalisé plutôt que par un ECID, résolvez d’abord l’ECID : accédez à Profils dans AEP, recherchez le profil à l’aide de l’espace de noms personnalisé et de la valeur d’identité, puis récupérez l’ECID à partir des détails d’identité du profil. Utilisez cette valeur ECID dans la requête ci-dessus.

valeurs feedbackStatus

Valeur
Signification
sent
Transmis au fournisseur push (APNs sur iOS, FCM sur Android) ; ne confirme pas le rendu de l’appareil (voir ci-dessous).
error
Erreur de diffusion — inspecter la failure_reason pour plus de détails
denylist
Jeton non valide, non enregistré ou placé sur la liste bloquée (par exemple, une application désinstallée) ; réenregistrez le jeton de l’appareil
exclude
Profil exclu avant envoi (jeton manquant, problème de consentement ou règles de typologie)
delay
Diffusion retardée ; fera l’objet d’une nouvelle tentative
duplicate
Un envoi répété a été supprimé par le dédoublonnage au niveau de la diffusion
bounce
Diffusion retournée par le fournisseur push (par exemple, retour d’un échec hard pour le jeton)
NOTE
Pour la_event champ , le jeu de données enregistre remotestart, et non start, pour les événements de diffusion initiaux. Filtrez en conséquence lors de l’interrogation par type d’événement.

Interprétation du statut d’envoi interpreting-the-sent-status

IMPORTANT
La limite de durée de l’activité active de 8 heures s’applique uniquement à iOS, et non à Android.

Une feedbackStatus de sent confirme que Journey Optimizer a correctement transmis la notification au fournisseur push (APNs sur iOS, FCM sur Android). Cela ne confirme pas que l’activité En direct a été générée sur l’appareil.

Le jeu de données ne confirme pas le rendu de l’appareil après la remise au fournisseur push. Les échecs côté appareil, tels qu’une restriction du système d’exploitation, une interruption du réseau entre le fournisseur et l’appareil ou la limite de durée d’activité active de 8 heures atteinte sur iOS, ne sont pas observables à partir du jeu de données.

Si feedbackStatus est sent mais qu’aucune activité Live ne s’affiche sur l’appareil, étudiez le comportement en dehors du pipeline de diffusion Journey Optimizer. Utilisez la journalisation au niveau de l’application ou d’Assurance, y compris les logcat sur Android, pour diagnostiquer le comportement côté appareil.

AI Knowledge Reference

This section contains structured knowledge intended to support interpretation, retrieval, and question answering related to this topic.

For complete understanding, this information should be combined with the documentation on this page. Neither source is intended to stand alone; the page describes the feature, while this section provides additional context that helps disambiguate terminology, intent, applicability, and constraints.

  • TL;DR: This page provides a systematic approach to diagnose why Live activities fail to appear, update, or end even when the API returns HTTP 200, covering profile and token, campaign configuration, payload, and delivery issues for unitary and broadcast use cases on iOS and Android.

Intents:

  • Distinguish the unitary (API-triggered Transactional) and broadcast (API-triggered Marketing) debugging paths
  • Verify profile existence and Live activity push token sync (Scenario 1)
  • Validate campaign surface, Activity type, and API payload structure (Scenario 2)
  • Analyze delivery failures via campaign reports and message.feedback events (Scenario 3)
  • Diagnose unsynced iOS update tokens (Scenario 4) and check unitary execution status via the GET Message Execution API (Scenario 5)
  • Troubleshoot broadcast payload and audience-freshness issues (Scenarios 6 and 7) and query the feedback dataset directly (Advanced)

Glossary:

  • pushNotificationDetails: The AEP profile attribute used for Android FCM registration-token details, including appId, platform, and denylisted (product-specific)

  • topic_name: The FCM topic subscribed to by target Android devices for broadcast Live activities (product-specific)

  • Push-to-start token: An iOS APNs token used for remote start; registered by the mobile SDK and stored on the AEP profile (product-specific)

  • Update token: A per-instance APNs token generated when an iOS Live activity starts; required for iOS unitary update and end events. Android uses the same FCM registration token for start, update, and end; no separate update token is required (product-specific)

  • input-push-channel: A unique channel identifier created on the Apple Developer Portal for iOS broadcast Live activities (product-specific)

  • liveActivityData: A required property on the Adobe SDK LiveActivityAttributes protocol; the iOS examples include liveActivityID for unitary or channelID for broadcast (product-specific)

  • channelID: The value in liveActivityData.channelID; must exactly match input-push-channel for iOS broadcasts (product-specific)

  • attributeType / attributes-type: The name of the Swift ActivityAttributes struct; stored as attributeType (camelCase) on the profile and sent as attributes-type (hyphenated) in APS JSON — the same value in different representations (product-specific)

  • liveActivityPushNotificationDetails: The AEP profile attribute that stores a device’s push-to-start token, appId, platform, and attributeType (product-specific)

  • APS payload: The iOS JSON structure sent under context.requestPayload.aps, containing the event, content-state, and control fields; attributes includes the iOS struct fields for start events (product-specific)

  • Assurance: A debugging tool limited to test devices connected during an active session; use dataset queries for production end-user diagnostics (product-specific)

  • topic_name (Android): The shared FCM topic through which subscribed devices receive broadcast events; the Android equivalent of iOS input-push-channel

  • notification_id (Android): Client-generated identifier for a Live activity instance; keep it unchanged across start, update, and end events to target the same instance

  • timestamp (Android): Message ordering key, expressed in epoch seconds

  • when (Android): Optional notification display time, expressed in epoch seconds; it does not control message ordering

  • dismiss_after (Android): Used only for end events; specifies how many seconds the completed Live activity remains visible before removal

Guardrails:

  • Android audience membership does not subscribe a device to the FCM topic; verify topic subscription separately from audience evaluation.

  • Use API-triggered Transactional campaigns for unitary Live activities and API-triggered Marketing campaigns for broadcasts.

  • The High Throughput option must not be enabled, since it is incompatible with Live activity.

  • Assurance sessions are for test and QA devices only; end-user production devices are not connected to Assurance.

  • Android: unitary Live activities use the same regular FCM push token to start, update, and end, and no separate activity tokens are required; broadcast events reach subscribed devices through the shared FCM topic identified by topic_name.

  • Android timestamp must strictly increase for every event with the same notification_id (or topic_name for broadcasts); updates are displayed only if their timestamp is newer than the last processed value, and older or equal timestamps are ignored.

  • Android action_type / action_uri are not read by the current Android SDK.

  • iOS requirements: a physical iOS device on iOS 16.1 or later; the Xcode Simulator supports local start only (remote push via APNs is not supported on Simulator); remote start from Assurance requires iOS 17.1 or later, a valid push-to-start token, and a valid channel configuration; Adobe Experience Platform Mobile SDK 5.11.0 or later.

  • Batch audiences may be up to 24 hours stale (batch evaluation, once daily); this audience-freshness risk is not applicable to unitary use cases.

  • The first time a Live activity starts on a device, iOS shows a one-time permission prompt; the user must tap “Allow” for update tokens to be generated and synced.

  • For iOS broadcasts, input-push-channel must exactly match liveActivityData.channelID; a mismatch causes delivery failures.

  • For iOS, a feedbackStatus of sent confirms hand-off to APNs only, not device rendering; device-side failures and the 8-hour Live activity duration limit are not observable from the dataset.

Terminology:

  • Canonical name: API Triggered Campaign — Acronym: n/a — campaign types used for Live activities: API-triggered Transactional (unitary), API-triggered Marketing (broadcast)
  • Synonyms: “attributeType” = “attributes-type” (the same value; camelCase on the profile, hyphenated in APS JSON)
  • Do not confuse: input-push-channel (in the iOS APS payload) ≠ liveActivityData.channelID (in the iOS attributes); their values must match for broadcasts.
  • Do not confuse: “Push-to-start token” (starts an iOS Live activity, stored on the profile) ≠ “Update token” (updates or ends an iOS unitary instance, per instance)
  • Do not confuse: “Unitary” (API-triggered Transactional, individual profile) ≠ “Broadcast” (API-triggered Marketing, audience segment)
  • Do not confuse: execution statuses “PENDING” ≠ “INPROGRESS” ≠ “COMPLETED” ≠ “FAILED”
  • Do not confuse: feedbackStatus “sent” ≠ “error” ≠ “exclude” ≠ “delay”
  • Do not confuse: “timestamp” (iOS: the current Unix epoch time in seconds for every call; Android: the ordering key that must strictly increase per notification_id or topic_name) ≠ “when” (Android: optional notification display time that does not control ordering)
  • Do not confuse: la_event value “remotestart” (recorded in the dataset for initial delivery) ≠ “start” (the event field value in the payload)

FAQ:

  • Q: Why does the API return 200 OK but the Live activity does not appear? — A successful response (200 OK) does not guarantee the Live activity appears; the delivery can fail at multiple points, from API request validation through device rendering, so work through Scenarios 1 to 3.
  • Q: Can I use Assurance for production end-user devices? — No; Assurance sessions are for test and QA devices only. For production diagnostics, use the dataset queries.
  • Q: Why do update and end calls fail after the Live activity started? — The per-instance update token may not be synced; the user must have tapped “Allow” on the one-time permission prompt for update tokens to be generated (Scenario 4).
  • Q: How do I check execution status programmatically? — Use the GET Message Execution API; for unitary executions the executionId is prefixed with HUOC-, and the status field returns PENDING, INPROGRESS, COMPLETED, or FAILED.
  • Q: What does a feedbackStatus of sent mean on iOS? — It confirms Journey Optimizer successfully handed the notification to APNs; it does not confirm that the Live activity was rendered on the device.
  • Q: Why are some audience members not receiving a broadcast? — The profile may not be in the audience, or a batch audience snapshot may be up to 24 hours stale; trigger on-demand evaluation or ensure a streaming update occurs (Scenario 7).

Personas:

  • marketer: Can open the Reports button on a Live activity Campaign and select View all time report to check Sending Statistics metrics. Can review the Live activity lifecycle section for Remote starts, Updates, Ends, and Totals count figures. The page states that if Send errors are greater than 0, check the Error Reasons table. Where: “Check campaign reports”.

Onboarding:

  • Level: Intermediate
  • First minimal step: Navigate to Customer, then Profiles, in Journey Optimizer to search for a profile using the namespace and identity value from the API request.
  • Success check: The profile is found, and you can continue with the token checks for your platform.
  • Previous: Creating the Live activity message before triggering it: Create a Live activity message (mobile-live/create-mobile-live.md)
  • Next: Learning more about Live activity campaign reporting metrics: Campaign Live activity report (reports/campaign-global-report-cja-activity.md)
recommendation-more-help
journey-optimizer-help