Intégration des activités en direct au SDK mobile Adobe Experience Platform mobile-live-config-sdk

Sur cette page : intégrez le SDK mobile Adobe Experience Platform à votre application iOS afin qu’elle puisse s’enregistrer, s’afficher et recevoir des mises à jour d’activité en direct en temps réel sur l’écran de verrouillage et Dynamic Island.

Le SDK mobile d’Adobe Experience Platform offre une prise en charge intégrée des activités en direct d’Apple. Cela permet à votre application d’afficher des mises à jour dynamiques en temps réel directement sur l’écran de verrouillage et Dynamic Island sans ouvrir l’application.

  1. Importer les modules requis

    Importez les modules suivants : AEPMessaging, AEPMessagingLiveActivity, ActivityKit

  2. Définir les attributs

    Respectez les LiveActivityAttributes, incluez des LiveActivityData et des attributs ContentState.

  3. Enregistrer l’activité en direct

    Utilisez Messaging.registerLiveActivity() après l’initialisation du SDK.

  4. Créer une configuration de widget

    Implémentez ActivityConfiguration pour l’écran de verrouillage et l’interface de Dynamic Island.

  5. Démarrer une activité en direct localement (facultatif)

    L’activité en direct peut être lancée à distance via Journey Optimizer ou localement dans le code de l’application.

  6. Ajouter la prise en charge du débogage (facultatif)

    Implémentez LiveActivityAssuranceDebuggable pour Assurance.

Vérifiez que les versions minimales suivantes sont installées pour garantir une configuration et une compatibilité correctes.

Conditions préalables requises :

  • iOS :

    • iOS 16.1 ou version ultérieure : fonctionnalité de base d’activité en direct
    • iOS 17.2+ : prise en charge du démarrage par notification push
    • iOS 18+ : prise en charge des canaux de diffusion
  • Xcode : 14.0 ou version ultérieure

  • Swift : 5.7 une version ultérieure

  • Dépendances : AEPCore, AEPMessaging, AEPMessagingLiveActivity, ActivityKit

  • Version pour le SDK mobile AEP : iOS Messaging 5.11.0 ou ultérieure

Étape 1 : importer les modules requis import

Pour commencer, vous devez d’abord importer les modules suivants : AEPMessaging, AEPMessagingLiveActivity, ActivityKit.

import AEPMessaging
import AEPMessagingLiveActivity
import ActivityKit

Étape 2 : définir les attributs de votre activité en direct attributes

Créez une structure conforme au protocole LiveActivityAttributes. Cela définit à la fois les données statiques et l’état du contenu dynamique pour votre activité en direct.

Les principaux composants sont les suivants :

  • liveActivityData (obligatoire) contenant des données spécifiques à Adobe Experience Platform.

    • Pour les utilisateurs et utilisatrices individuels : utiliser LiveActivityData(liveActivityID: "unique-id")
    • Pour la diffusion : utiliser LiveActivityData(channelID: "channel-id")
  • Attributs statiques, propriétés personnalisées spécifiques à votre cas d’utilisation, par exemple restaurantName.

  • ContentState qui définit les données dynamiques qui peuvent être mises à jour pendant le cycle de vie de l’activité en direct. Il doit être conforme à Codable et Hashable.

  • L’énumération LiveActivityOrigin spécifie si une activité a été lancée localement dans l’application ou à distance par le biais d’un démarrage par notification push, pris en charge dans iOS 17.2 et les versions ultérieures. Cette valeur permet au SDK de faire la distinction entre les activités en direct déclenchées localement et celles déclenchées à distance lors de la collecte de données.

Exemples

@available(iOS 16.1, *)
struct FoodDeliveryLiveActivityAttributes: LiveActivityAttributes {
    // Mandatory: AEP Integration Data
    var liveActivityData: LiveActivityData

    // Static Attributes: Custom properties that do not change
    var restaurantName: String

    // Dynamic Content State: Data that can be updated
    struct ContentState: Codable, Hashable {
        var orderStatus: String
    }
}
@available(iOS 16.1, *)
public struct LiveActivityData: Codable {
    /// Unique identifier for broadcast Live activity channels
    public let channelID: String?

    /// Unique identifier for individual Live activity
    public let liveActivityID: String?

    /// Indicates local vs remote creation
    public let origin: LiveActivityOrigin?

    // Initializers
    public init(channelID: String)        // For broadcast Live activity
    public init(liveActivityID: String)   // For individual Live activity
}

Vous pouvez également enregistrer plusieurs types d’activités en direct pour votre application :

if #available(iOS 16.1, *) {
    Messaging.registerLiveActivity(AirplaneTrackingAttributes.self)
    Messaging.registerLiveActivity(FoodDeliveryLiveActivityAttributes.self)
    Messaging.registerLiveActivity(GameScoreLiveActivityAttributes.self)
}

Étape 3 : enregistrer l’activité en direct register

Enregistrez vos types d’activités en direct dans votre AppDelegate après l’initialisation du SDK. Vous pouvez ainsi :

  • Active la collecte automatique des jetons push-to-start (iOS 17.2+)
  • Collecte automatiquement les jetons de mise à jour des activités en direct.
  • Permet la gestion du cycle de vie et le suivi des événements.

Exemple pour une activité en direct de livraison de repas :

if #available(iOS 16.1, *) {
    Messaging.registerLiveActivity(FoodDeliveryLiveActivityAttributes.self)
}

Étape 4 : créer des widgets d’activité en direct widgets

Une activité en direct s’affiche par le biais de widgets. Vous devez créer un lot de widgets et une configuration :

Exemple pour une activité en direct de livraison de repas :

@main
struct FoodDeliveryWidgetBundle: WidgetBundle {
    var body: some Widget {
        FoodDeliveryLiveActivityWidget()
    }
}

@available(iOS 16.1, *)
struct FoodDeliveryLiveActivityWidget: Widget {
    var body: some WidgetConfiguration {
        ActivityConfiguration(for: FoodDeliveryLiveActivityAttributes.self) { context in
            // Lock Screen UI
            VStack {
                Text("Order from \(context.attributes.restaurantName)")
                Text("Status: \(context.state.orderStatus)") // possible status may include "Ordered", "Order accepted", "Preparing", "On the Way","Delivered"
            }
        } dynamicIsland: { context in
            // Dynamic Island UI
            DynamicIsland {
                // Expanded UI
            } compactLeading: {
                // Compact leading UI
            } compactTrailing: {
                // Compact trailing UI
            } minimal: {
                // Minimal UI
            }
        }
    }
}

Étape 5 : démarrer une activité en direct localement (facultatif) local

Bien que Journey Optimizer puisse démarrer des activités en direct à distance, vous pouvez également les démarrer localement :

Exemple pour une activité en direct de livraison de repas :

let attributes = FoodDeliveryLiveActivityAttributes(
    liveActivityData: LiveActivityData(liveActivityID: "order123"),
    restaurantName: "Pizza Palace"
)

let contentState = FoodDeliveryLiveActivityAttributes.ContentState(
    orderStatus: "Ordered"
)

let activity = try Activity<FoodDeliveryLiveActivityAttributes>.request(
    attributes: attributes,
    contentState: contentState,
    pushType: .token
)

Étape 6 : ajouter la prise en charge du débogage (facultatif) debug

Si nécessaire, vous pouvez déboguer les schémas d’activité en direct dans Adobe Assurance :

Exemple pour une activité en direct de livraison de repas :

@available(iOS 16.1, *)
extension FoodDeliveryLiveActivityAttributes: LiveActivityAssuranceDebuggable {
    static func getDebugInfo() -> (attributes: FoodDeliveryLiveActivityAttributes, state: ContentState) {
        return (
            FoodDeliveryLiveActivityAttributes(
                liveActivityData: LiveActivityData(liveActivityID: "debug-order-123"),
                restaurantName: "Debug Restaurant"
            ),
            ContentState(orderStatus: "Ordered")
        )
    }
}

Ressources supplémentaires

Pour une documentation complète sur le SDK et des informations détaillées sur son implémentation :

TIP
Si vous rencontrez des problèmes avec l’enregistrement des jetons, l’alignement de la payload ou la diffusion d’activités dynamiques, consultez Dépannage des activités dynamiques pour obtenir des conseils détaillés sur le débogage.
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 integrate the Adobe Experience Platform Mobile SDK into an iOS app so it can register, display, and receive real-time Live activity updates on the Lock Screen and Dynamic Island.

Intents:

  • Import the required modules AEPMessaging, AEPMessagingLiveActivity, and ActivityKit
  • Define Live activity attributes conforming to LiveActivityAttributes, including LiveActivityData and a ContentState
  • Register Live activity types with Messaging.registerLiveActivity() after SDK initialization
  • Create a widget configuration (ActivityConfiguration) for both the Lock Screen and Dynamic Island
  • Optionally start a Live activity locally and add Assurance debug support

Glossary:

  • LiveActivityAttributes: The protocol a struct conforms to, defining both the static data and the dynamic content state for a Live activity (product-specific)
  • LiveActivityData: A required property containing Adobe Experience Platform-specific data; liveActivityID for individual users, channelID for broadcast (product-specific)
  • ContentState: Dynamic data that can be updated during the Live activity lifecycle; must conform to Codable and Hashable
  • LiveActivityOrigin: An enumeration specifying whether an activity was initiated locally or remotely via a push-to-start notification, supported in iOS 17.2 and later (product-specific)
  • Messaging.registerLiveActivity(): The call used after SDK initialization to register Live activity types (product-specific)
  • ActivityConfiguration: The widget configuration implemented for the Lock Screen and Dynamic Island interface
  • LiveActivityAssuranceDebuggable: The protocol implemented to debug Live activity schemas in Adobe Assurance (product-specific)

Guardrails:

  • iOS: 16.1 or later for basic Live activity functionality; 17.2 or later for push-to-start; 18 or later for broadcast channel support (minimum versions).
  • Xcode 14.0 or later (minimum version).
  • Swift 5.7 or later (minimum version).
  • AEP Mobile SDK: iOS Messaging 5.11.0 or later (minimum version).
  • Required dependencies: AEPCore, AEPMessaging, AEPMessagingLiveActivity, ActivityKit.
  • liveActivityData is required and contains Adobe Experience Platform-specific data; ContentState must conform to Codable and Hashable.

Terminology:

  • Canonical name: Adobe Experience Platform Mobile SDK — Acronym: AEP Mobile SDK — variants: Mobile SDK, messaging SDK
  • Synonyms: “push-to-start” = “remotely triggered start, supported in iOS 17.2 and later”
  • Do not confuse: “liveActivityID” (individual users) ≠ “channelID” (broadcast)
  • Do not confuse: “start a Live activity locally” (initiated within the application code) ≠ “start remotely via push-to-start” (triggered remotely through Journey Optimizer)

FAQ:

  • Q: Which modules must I import?AEPMessaging, AEPMessagingLiveActivity, and ActivityKit.
  • Q: What is the minimum iOS version? — iOS 16.1 or later for basic functionality; iOS 17.2 or later for push-to-start; iOS 18 or later for broadcast channel support.
  • Q: Which AEP Mobile SDK version is required? — iOS Messaging 5.11.0 or later.
  • Q: How do I register Live activity types? — Use Messaging.registerLiveActivity() in your AppDelegate after SDK initialization; you can register multiple Live activity types.
  • Q: Can I start a Live activity without Journey Optimizer? — Yes, a Live activity can be initiated locally within the application code (optional), in addition to being started remotely through Journey Optimizer.
recommendation-more-help
journey-optimizer-help