Erstellen einer Live-Aktivität create-mobile-live

Auf dieser Seite: Erstellen Sie eine durch API ausgelöste Kampagne in Journey Optimizer, damit Sie Live-Aktivitäten für einzelne Benutzende oder Zielgruppen remote starten, aktualisieren und beenden können.

Nachdem Sie Ihre Mobile-Konfiguration konfiguriert und Ihr Adobe Experience Platform Mobile SDK implementiert haben, können Sie mit der Erstellung Ihrer Live-Aktivität in Journey Optimizer beginnen:

  1. Rufen Sie das Menü Kampagnen auf und klicken Sie auf Kampagne erstellen.

  2. Wählen Sie den Kampagnentyp Durch API ausgelöst aus.

    • Wählen Sie API-ausgelöst (Marketing) für zielgruppenbasierte Kampagnen aus.

    • Wählen Sie API-ausgelöst (Transaktion) für einzelne Kampagnen aus.

    note important
    IMPORTANT
    Beachten Sie, dass für API-ausgelöst (Transaktion) die Option Hoher Durchsatz nicht aktiviert werden sollte.

  3. Bearbeiten Sie im Bereich Eigenschaften den Titel und die Beschreibung Ihrer Kampagne.

  4. Wählen Sie im Abschnitt Aktionen die Option Live-Aktivität und eine Konfiguration aus oder erstellen Sie eine neue Konfiguration.

    Weitere Informationen zur Konfiguration von Live-Aktivitäten finden Sie auf dieser Seite.

  5. Klicken Sie auf Experiment erstellen, um mit der Konfiguration Ihres Inhaltsexperiments zu beginnen und Abwandlungen zu erstellen, deren Performance zu messen und die beste Option für Ihre Zielgruppe zu ermitteln. Weitere Informationen

  6. Wählen Sie auf der Registerkarte Zielgruppe Ihren Identitätstyp aus. Weitere Informationen.

    note
    NOTE
    Bei durch API ausgelösten Marketing-Kampagnen können Sie eine vorhandene Zielgruppe auswählen, die als erste Segmentierung fungiert, bevor Sie das APNs-channelID-Abonnement über die API-Payload überprüfen.
  7. Kampagnen sind so konzipiert, dass sie an einem bestimmten Datum oder in regelmäßigen Abständen ausgeführt werden. Erfahren Sie in diesem Abschnitt, wie Sie den Zeitplan der Kampagne konfigurieren können.

  8. Klicken Sie nach der Konfiguration auf Zum Aktivieren überprüfen und dann auf Aktivieren.

  9. Verwenden Sie nach dem Aktivieren der Kampagne die bereitgestellte cURL-Anfrage als Vorlage, um Start-, Aktualisierungs- und Endereignisse für Live-Aktivitäten auszulösen. Aktualisieren Sie die Beispiel-Payload vor der Ausführung mit Ihren konkreten Daten.

    Stellen Sie sicher, dass Sie auch die Kampagnen-ID-Kennungen kopieren, die in Ihre Payload aufgenommen werden sollen.

    ➡️ Informationen zu Authentifizierungspflichten, einschließlich OAuth-Token und API-Schlüsseln, finden Sie der Dokumentation zu durch API ausgelösten Kampagnen.

Nachdem Sie Ihre Live-Aktivität entworfen haben, können Sie mit integrierten Berichten die Wirkung Ihrer Live-Aktivität messen.

TIP
Wenn Ihre Live-Aktivität nicht erwartungsgemäß angezeigt oder aktualisiert wird, finden Sie unter Fehlerbehebung bei Live-Aktivitäten eine schrittweise Debugging-Anleitung.

Payload-Beispiele payload

Die Payload-Struktur hängt davon ab, ob iOS das aps-Objekt des Push-Benachrichtigungs-Service (APNs) von Apple verwendet, während Android das fcm-Objekt von Firebase Cloud Messaging (FCM) verwendet. Verwenden Sie die folgenden Beispiele für Ihre Plattform und Ihren Kampagnentyp.

iOS-Payload

Platzieren Sie für iOS Personalisierungs- und Lebenszyklusfelder im APNs-aps. Stellen Sie sicher, dass attributes-type mit dem Namen der LiveActivityAttributes Struktur Ihrer App übereinstimmt und dass attributes mit den in dieser Struktur definierten Feldern übereinstimmt.

Einzelne Anwendungsfälle (API-ausgelöste Transaktionskampagne)

Dieses Payload-Beispiel ist für einzelne Kampagnen mit dem Kampagnentyp API-ausgelöst – Transaktion vorgesehen. Beachten Sie, dass die meisten Felder aus dem folgenden Payload-Beispiel obligatorisch sind. Nur requestId, dismissal-date und alert sind optional.

Beispiel-Payload anzeigen
code language-json
{
    "requestId": "your-request-id",
    "campaignId": "your-campaign-id",
    "recipients": [
        {
            "type": "aep",
            "userId": "testemail@gmail.com",
            "namespace": "email",
            "context": {
                "requestPayload": {
                    "aps": {
                        "content-available": 1,
                        "timestamp": 1756984054,              // current epoch time
                        "dismissal-date": 1756984084,         // optional – auto remove when event="end"
                        "event": "update",                    // start | update | end

                        // Fields from FoodDeliveryLiveActivityAttributes
                        "content-state": {
                            "orderStatus": "Delivered"
                        },

                        "attributes-type": "FoodDeliveryLiveActivityAttributes",
                        "attributes": {
                            "restaurantName": "Pizza",
                            "liveActivityData": {
                                "liveActivityID": "orderId1"       // customer reference ID
                            }
                        },

                        "alert": {
                            "title": "Order Delivered!",
                            "body": "Your pizza has arrived."
                        }
                    }
                }
            }
        }
    ]
}

Broadcast-Anwendungsfälle (API-ausgelöste Marketing-Kampagne)

Dieses Payload-Beispiel ist für zielgruppenbasierte Kampagnen vorgesehen, bei denen der Kampagnentyp API-ausgelöst – Marketing verwendet wird.

Beispiel-Payload anzeigen
code language-json
{
    "requestId": "123400000",
    "campaignId": "d32e6f6c-56df-4a98-a2c0-6db6008f8f32",
    "audience": {
        "id": "508f9416-52d0-4898-ba47-08baaa22e9c7"
    },
    "context": {
        "requestPayload": {
            "aps": {
                "input-push-channel": "V+8UslywEfAAAOq9SbTrLg==",  //apns-channel-id
                "content-available": 1,
                "timestamp": 1770808339,
                "event": "update",   // start | update | end

                // Fields from GameScoreLiveActivityAttributes
                "content-state": {
                    "homeTeamScore": 33,
                    "awayTeamScore": 49,
                    "statusText": "Wingdom keeps scoring!"
                },
                "attributes-type": "GameScoreLiveActivityAttributes",
                "attributes": {
                    "liveActivityData": {
                        "channelID": "V+8UslywEfAAAOq9SbTrLg=="   //apns-channel-id, must match the "input-push-channel" value
                    }
                },
                "alert": {
                    "title": "This is the title for game",
                    "body": "This is the body for body"
                }
            }
        }
    }
}

Android-Payload

Platzieren Sie für Android Live-Aktivitätsfelder im Firebase Cloud Messaging (FCM)-fcm. Definieren Sie dynamische Werte in content_state mithilfe von custom_key_*, für die der Stilanbieter Ihrer App konfiguriert ist.

Einzelne Anwendungsfälle (API-ausgelöste Transaktionskampagne)

IMPORTANT
Das fcm-Objekt enthält zwei Zeitfelder, die beide in Epochensekunden ausgedrückt werden:
  • timestampsteuert die Nachrichtenreihenfolge. Jedes Start-, Update- und End-Ereignis muss einen größeren Wert als das vorherige Ereignis für dieselbe notification_id (oder topic_name für Sendungen) verwenden. Aktualisierungen werden nur angezeigt, wenn ihr Zeitstempel neuer als der zuletzt verarbeitete Wert ist. Ältere oder gleiche Zeitstempel werden ignoriert.
  • whensteuert die angezeigte Zeit der Benachrichtigung. Dieses optionale Feld entspricht der setWhen von Android und hat keine Auswirkungen auf die Nachrichtenreihenfolge. Halten Sie den Wert relativ aktuell, da ein veralteter Wert zu Anzeigeproblemen führen kann.
Weitere Informationen ​ Sie unter „Fehlerbehebung bei ​".

Verwenden Sie diese Payloads für einzelne Kampagnen des Typs API-ausgelöste Transaktion.

Verwenden Sie dieselben notification_id für alle Start-, Update- und End-Ereignisse, um sicherzustellen, dass sie dieselbe Live-Aktivitätsinstanz ansprechen.

Payload für Startereignis-Beispiel
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,           // required - ordering key; must strictly increase on every event
                        "notification_channel_id": "live_updates_channel",
                        "priority": "PRIORITY_HIGH",
                        "when": 1756984054,              // optional - time shown on the notification (seconds)
                        "event_type": "start",             // start | update | end
                        "title": "Flight DL-321",
                        "body": "Boarding starts shortly",
                        "critical_text": "25 min",
                        "action_type": "DEEPLINK",
                        "action_uri": "myapp://flight/DL241",
                        "content_state": {                 // custom updating values specific to keys defined in every Live activity on the app
                            "custom_key_template_type": "progress",
                            "custom_key_journey_start": "DEL",
                            "custom_key_journey_progress": 10,
                            "custom_key_journey_end": "MUM"
                        }
                    }
                }
            }
        }
    ]
}
Beispiel-Payload des Ereignisses aktualisieren

Um eine Live -Aktivität zu aktualisieren, setzen Sie event_type auf update und halten Sie notification_id unverändert. Aktualisieren Sie body, critical_text und die Werte in content_state nach Bedarf, um den neuesten Status widerzuspiegeln.

code language-json
"fcm": {
    "notification_id": "flight-DL-321",
    "timestamp": 1756984114,           // increased from the start event
    "notification_channel_id": "live_updates_channel",
    "priority": "PRIORITY_HIGH",
    "when": 1756984054,
    "event_type": "update",
    "title": "Flight DL-321",
    "body": "Boarding at Gate-D23",
    "critical_text": "Now",
    "action_type": "DEEPLINK",
    "action_uri": "myapp://flight/DL241",
    "content_state": {
        "custom_key_template_type": "progress",
        "custom_key_journey_start": "DEL",
        "custom_key_journey_progress": 50,
        "custom_key_journey_end": "MUM"
    }
}
Payload für Endereignis-Beispiel

Um eine Live -Aktivität zu beenden, setzen Sie event_type auf end. Schließen Sie optional dismiss_after ein, um die Verzögerung in Sekunden anzugeben, bevor die abgeschlossene Live-Aktivität beendet wird.

code language-json
"fcm": {
    "notification_id": "flight-DL-321",
    "timestamp": 1756984174,           // increased again
    "notification_channel_id": "live_updates_channel",
    "priority": "PRIORITY_HIGH",
    "when": 1756984054,
    "event_type": "end",
    "title": "Flight DL-321",
    "body": "Welcome to Mumbai",
    "critical_text": "Landed",
    "action_type": "DEEPLINK",
    "action_uri": "myapp://flight/DL241",
    "content_state": {
        "custom_key_template_type": "progress",
        "custom_key_journey_start": "DEL",
        "custom_key_journey_progress": 100,
        "custom_key_journey_end": "MUM"
    },
    "dismiss_after": 10
}

Broadcast-Anwendungsfälle (API-ausgelöste Marketing-Kampagne)

Verwenden Sie diese Payload für zielgruppenbasierte Kampagnen des Typs API-ausgelöstes Marketing.

Legen Sie topic_name auf das FCM-Thema fest, das die Geräte der Benutzer abonniert haben. Senden Sie alle Update- und End-Ereignisse an dasselbe Thema und behalten Sie notification_id unverändert bei, um dieselbe Live-Aktivitätsbenachrichtigung anzuvisieren.

Beispiel-Payload anzeigen
code language-json
{
    "requestId": "your-request-id",
    "campaignId": "your-marketing-campaign-id",
    "audience": {
        "id": "your-audience-id"
    },
    "context": {
        "requestPayload": {
            "fcm": {
                "topic_name":"flight_DL321",        // fcm topic name
                "notification_id": "flight-DL-321",
                "timestamp": 1756984054,           // required - ordering key; must strictly increase on every event
                "notification_channel_id": "live_updates_channel",
                "priority": "PRIORITY_HIGH",
                "when": 1756984054,              // optional - time shown on the notification (seconds)
                "event_type": "start",             // start | update | end
                "title": "Flight DL-321",
                "body": "Boarding starts shortly",
                "critical_text": "25 min",
                "action_type": "DEEPLINK",
                "action_uri": "myapp://flight/DL241",
                "content_state": {                 // custom updating values specific to keys defined in every Live activity on the app
                    "custom_key_template_type": "progress",
                    "custom_key_journey_start": "DEL",
                    "custom_key_journey_progress": 10,
                    "custom_key_journey_end": "MUM"
                }
            }
        }
    }
}

Hinzufügen benutzerdefinierter Daten mit Ausführungsmetadaten metadata

AVAILABILITY
executionMetadata ist nur für Kampagnen des Typs API-ausgelöst (Transaktion) verfügbar.

Fügen Sie mithilfe des optionalen Felds executionMetadata einem Profil Ihre eigenen benutzerdefinierten Daten hinzu, z. B. eine Auftrags-ID, eine Treuestufe oder einen Regions-Code. Journey Optimizer speichert diese Daten zusammen mit der Ausführung, damit Sie sie später aus Ihrem Live-Aktivitäts-Feedback-Datensatz abrufen und die Versandergebnisse mit Ihren eigenen Geschäftseinträgen abgleichen können.

Informationen zum Senden dieser Daten über die API finden Sie in der Messaging-API-Referenz für das Feld executionMetadata. Informationen zum Auslesen der Werte auf dem Gerät finden Sie im Handbuch zum Mobile SDK zum Empfangen von Ausführungsmetadaten vom API-Trigger ​.

So fügen Sie benutzerdefinierte Daten mit Ausführungsmetadaten hinzu:

  • Fügen Sie einem Profil executionMetadata neben userId und namespace hinzu. Es werden nur String-Schlüssel und String-Werte akzeptiert. Konvertieren Sie alle Nicht-String-Werte in einen String, bevor Sie sie senden.

  • Werte werden genau so aufgezeichnet, wie sie gesendet werden. executionMetadata unterstützt keine Personalisierungsausdrücke, sodass jeder {{...}}-Ausdruck als Literaltext behandelt und nicht aufgelöst wird. Sie sollten immer endgültige Literalwerte senden.

  • Jedes Profil kann bis zu 50 Schlüssel-Wert-Paare mit einem kombinierten Größen-Limit von 2 KB für alle Schlüssel und Werte enthalten. Metadaten, die dieses Limit überschreiten, werden verworfen, die Live-Aktivität wird jedoch weiterhin bereitgestellt. Beschränken Sie die Payload auf die für Reporting-Zwecke erforderlichen Informationen.

iOS JSON-Beispiel

In diesem Beispiel sind orderId, tier, restaurant und region Ihre eigenen Werte. Nachdem die Live-Aktivität ausgelöst wurde, können Sie diese aus dem Feedback-Datensatz auslesen, um den Versand mit Ihrem Auftragseintrag zu verknüpfen.

code language-json
{
    "requestId": "your-request-id",
    "campaignId": "your-campaign-id",
    "recipients": [
        {
            "type": "aep",
            "userId": "testemail@gmail.com",
            "namespace": "email",
            "executionMetadata": {
                "orderId": "A-123",
                "tier": "gold",
                "restaurant": "PizzaPlace",
                "region": "EU"
            },
            "context": {
                "requestPayload": {
                    "aps": {
                        "content-available": 1,
                        "timestamp": 1756984054,
                        "dismissal-date": 1756984084,
                        "event": "update",
                        "content-state": {
                            "orderStatus": "Delivered"
                        },
                        "attributes-type": "FoodDeliveryLiveActivityAttributes",
                        "attributes": {
                            "restaurantName": "PizzaPlace",
                            "liveActivityData": {
                                "liveActivityID": "orderId1"
                            }
                        },
                        "alert": {
                            "title": "Order Delivered!",
                            "body": "Your pizza has arrived."
                        }
                    }
                }
            }
        }
    ]
}
Android JSON-Beispiel
note
NOTE
Rufen Sie Ausführungsmetadaten auf Android auf die gleiche Weise ab wie auf iOS: aus message.feedback Ereignissen im AJO-Nachrichten-Feedback-Datensatz. Abfragebeispiele finden Sie im Abschnitt Erweitert: Debugging über Datensatzabfragen.
Android verwendet die Open-Source-Messaging-Erweiterung von Adobe Experience Platform (AEP) für die mobile SDK.

In diesem Beispiel sind seat und type benutzerdefinierte Metadatenfelder, die Ihre Buchungsdetails enthalten. Rufen Sie nach dem Auslösen der Live-Aktivität diese Werte aus dem Live-Aktivitäts-Feedback-Datensatz ab, um die Versandergebnisse mit Ihrem Buchungsdatensatz zu verknüpfen.

code language-json
{
    "requestId": "your-request-id",
    "campaignId": "your-campaign-id",
    "recipients": [
        {
            "type": "aep",
            "userId": "your-device-ECID",
            "namespace": "ECID",
            "executionMetadata": {
                "seat": "A-3",
                "type": "economy"
            },
            "context": {
                "requestPayload": {
                    "fcm": {
                        "notification_id": "flight-DL-321",
                        "timestamp": 1756984054,           // required - ordering key; must strictly increase on every event
                        "notification_channel_id": "live_updates_channel",
                        "priority": "PRIORITY_HIGH",
                        "when": 1756984054,              // optional - time shown on the notification (seconds)
                        "event_type": "start",             // start | update | end
                        "title": "Flight DL-321",
                        "body": "Boarding starts shortly",
                        "critical_text": "25 min",
                        "action_type": "DEEPLINK",
                        "action_uri": "myapp://flight/DL241",
                        "content_state": {                 // custom updating values specific to keys defined in every Live activity on the app
                            "custom_key_template_type": "progress",
                            "custom_key_journey_start": "DEL",
                            "custom_key_journey_progress": 10,
                            "custom_key_journey_end": "MUM"
                        }
                    }
                }
            }
        }
    ]
}

Anleitungsvideo

Erfahren Sie, wie Sie iOS-Live-Aktivitäten mit Adobe Journey Optimizer konfigurieren, um umfangreiche Echtzeit-Updates auf dem iPhone-Sperrbildschirm und auf Dynamic Island bereitzustellen.

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 explains how to build an API-triggered campaign in Journey Optimizer to remotely start, update, and end Live activities for individual users or audiences, and how to attach custom data to a profile using the optional executionMetadata field.

Intents:

  • Create an API-triggered campaign for Live activities, selecting API-triggered Marketing for audience-based campaigns or API-triggered Transactional for individual campaigns
  • Choose Live activity in the Actions section and select or create a configuration
  • Create a content experiment with treatments to measure performance
  • Activate the campaign and use the provided cURL request to trigger start, update, or end events
  • Attach custom data to a profile using the optional executionMetadata field for later retrieval from the Live activity feedback dataset

Glossary:

  • API-triggered Marketing: The campaign type used for audience-based campaigns (product-specific)
  • API-triggered Transactional: The campaign type used for individual campaigns (product-specific)
  • High Throughput: An option that should not be enabled for API-triggered Transactional Live activity campaigns (product-specific)
  • Live activity: The action chosen in the Actions section, tied to a selected or newly created configuration (product-specific)
  • executionMetadata: An optional field that attaches custom data to a profile, stored alongside the execution and retrievable from the Live activity feedback dataset (product-specific)
  • Live activity feedback dataset: The dataset from which stored executionMetadata values can be retrieved to match delivery results to your own records (product-specific)
  • event (iOS) / event_type (Android): The payload field whose values are start, update, or end

Guardrails:

  • For API-triggered Transactional campaigns, the High Throughput option should not be enabled.
  • executionMetadata is only available for API-triggered Transactional campaigns.
  • executionMetadata accepts only string keys and string values; convert any non-string value to a string before sending.
  • executionMetadata does not support personalization expressions, so any {{...}} expression is treated as literal text rather than resolved.
  • Each profile can carry up to 50 key/value pairs in executionMetadata (hard limit), with a combined size limit of 2 KB for all keys and values (hard limit). Metadata exceeding this limit is discarded, but the Live activity is still delivered.
  • In the iOS unitary payload example, most fields are mandatory; only requestId, dismissal-date, and alert are optional.

Terminology:

  • Canonical name: Live activity — Acronym: n/a — variants: Live activities
  • Synonyms: “Unitary use cases” = “individual campaigns (API-triggered Transactional)”
  • Synonyms: “Broadcast use cases” = “audience-based campaigns (API-triggered Marketing)”
  • Do not confuse: “API-triggered Marketing” (audience-based campaigns) ≠ “API-triggered Transactional” (individual campaigns)
  • Do not confuse: “start” ≠ “update” ≠ “end” (the values of the event field in iOS payloads and the event_type field in Android payloads)
  • Do not confuse: “dismissal-date” (optional; auto-removes the activity when event is end) ≠ “timestamp” (current epoch time)

FAQ:

  • Q: Which campaign type do I use for Live activities? — API-triggered Marketing for audience-based campaigns; API-triggered Transactional for individual campaigns.
  • Q: Should High Throughput be enabled for API-triggered Transactional? — No; for API-triggered Transactional, the High Throughput option should not be enabled.
  • Q: How do I trigger start, update, or end events after activation? — Use the provided cURL request as a template, update the sample payload with your specific data, and copy the Campaign ID into your payload.
  • Q: What is executionMetadata for? — Attaching your own custom data, such as an order ID, loyalty tier, or region code, to a profile; it is stored alongside the execution and retrievable from the Live activity feedback dataset. It is only available for API-triggered Transactional campaigns.
  • Q: What are the executionMetadata limits? — Up to 50 key/value pairs per profile with a combined 2 KB size limit; only string keys and values are accepted, and personalization expressions are not resolved. Metadata exceeding the limit is discarded, but the Live activity is still delivered.
recommendation-more-help
journey-optimizer-help