Integración de actividades en directo con Adobe Experience Platform Mobile SDK mobile-live-config-sdk
Adobe Experience Platform Mobile SDK ofrece compatibilidad integrada con la actividad en directo de Apple. Esto permite que la aplicación muestre actualizaciones dinámicas en tiempo real directamente en la pantalla de bloqueo y en Dynamic Island sin necesidad de abrir la aplicación.
-
Importación de módulos necesarios
Importe los siguientes módulos: AEPMessaging, AEPMessagingLiveActivity, ActivityKit.
-
Cumplir con
LiveActivityAttributes, incluirLiveActivityDatay un atributoContentState. -
Registrar actividad en directo
Use
Messaging.registerLiveActivity()después de la inicialización de SDK. -
Implemente
ActivityConfigurationtanto para la pantalla bloqueada como para la interfaz de Dynamic Island. -
Iniciar una actividad Live localmente (opcional)
La actividad en directo se puede iniciar de forma remota a través de Journey Optimizer o de forma local dentro del código de la aplicación.
-
Agregar compatibilidad de depuración (opcional)
Implementar
LiveActivityAssuranceDebuggablepara Assurance.
Compruebe que están instaladas las siguientes versiones mínimas para garantizar una configuración y compatibilidad correctas.
Requisitos previos:
-
iOS:
- iOS16.1 o posterior: Funcionalidad básica de actividad en directo
- iOS 17.2+: compatibilidad con push-to-start
- iOS 18+: compatibilidad con el canal de difusión
-
Xcode: 14.0 o posterior
-
Swift: 5.7 o posterior
-
Dependencias: AEPCore, AEPMessaging, AEPMessagingLiveActivity, ActivityKit
-
AEP Mobile SDK versión: iOS Messaging 5.11.0 o posterior
Paso 1: Importar los módulos necesarios import
Para empezar, primero debe importar los siguientes módulos: AEPMessaging, AEPMessagingLiveActivity, ActivityKit.
import AEPMessaging
import AEPMessagingLiveActivity
import ActivityKit
Paso 2: Definir los atributos de la actividad Live attributes
Cree una estructura que se ajuste al protocolo LiveActivityAttributes. Esto define tanto los datos estáticos como el estado del contenido dinámico para su actividad en directo.
Los componentes clave incluyen:
-
liveActivityData(obligatorio) que contiene datos específicos de Adobe Experience Platform.- Para usuarios individuales: use
LiveActivityData(liveActivityID: "unique-id") - Para difusión: usar
LiveActivityData(channelID: "channel-id")
- Para usuarios individuales: use
-
Atributos estáticos, propiedades personalizadas específicas del caso de uso, por ejemplo
restaurantName. -
ContentState, que define los datos dinámicos que se pueden actualizar durante el ciclo vital de la actividad. Debe ajustarse aCodableyHashable. -
La enumeración
LiveActivityOriginespecifica si una actividad se inició localmente en la aplicación o de forma remota mediante una notificación push-to-start, admitida en iOS 17.2 y versiones posteriores. Este valor permite a SDK diferenciar entre la actividad en directo iniciada localmente y la activada de forma remota durante la recopilación de datos.
Ejemplos
@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
}
También puede registrar varios tipos de actividades en directo para la aplicación:
if #available(iOS 16.1, *) {
Messaging.registerLiveActivity(AirplaneTrackingAttributes.self)
Messaging.registerLiveActivity(FoodDeliveryLiveActivityAttributes.self)
Messaging.registerLiveActivity(GameScoreLiveActivityAttributes.self)
}
Paso 3: Registro de una actividad en directo register
Registre los tipos de actividades de Live en su AppDelegate después de la inicialización de SDK, esto le permite:
- Habilita la recopilación automática de tokens de push-to-start (iOS 17.2+)
- Recopila automáticamente tokens de actualización de actividades en directo
- Habilita la administración del ciclo vital y el seguimiento de eventos
Ejemplo de una actividad de entrega de alimentos en directo:
if #available(iOS 16.1, *) {
Messaging.registerLiveActivity(FoodDeliveryLiveActivityAttributes.self)
}
Paso 4: Crear widgets de actividad activos widgets
La actividad en directo se muestra a través de widgets, debe crear un paquete de widgets y una configuración:
Ejemplo de una actividad de entrega de alimentos en directo:
@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
}
}
}
}
Paso 5: Inicio de una actividad Live localmente (opcional) local
Aunque Journey Optimizer puede iniciar de forma remota una actividad en directo, también puede iniciarla localmente:
Ejemplo de una actividad de entrega de alimentos en directo:
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
)
Paso 6: Agregar compatibilidad de depuración (opcional) debug
Si es necesario, puede depurar los esquemas de actividad en directo en Adobe Assurance:
Ejemplo de una actividad de entrega de alimentos en directo:
@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")
)
}
}
Recursos adicionales
Para obtener documentación completa de SDK y detalles de la implementación: