Integrering med Adobe Experience Platform Mobile SDK mobile-live-config-sdk
Adobe Experience Platform Mobile SDK har inbyggt stöd för Apple Live. På så sätt kan appen visa dynamiska uppdateringar i realtid direkt på låsskärmen och Dynamic Island utan att öppna appen.
-
Importera följande moduler: AEPMessaging, AEPMessagingLiveActivity, ActivityKit.
-
Följ
LiveActivityAttributes, ta medLiveActivityDataoch ettContentState-attribut. -
Använd
Messaging.registerLiveActivity()efter SDK-initiering. -
Implementera
ActivityConfigurationför både Lock Screen och Dynamic Island. -
Starta en Live-aktivitet lokalt (valfritt)
Live-aktiviteten kan initieras via Journey Optimizer eller lokalt i programkoden.
-
Lägg till stöd för felsökning (valfritt)
Implementera
LiveActivityAssuranceDebuggableför Assurance.
Kontrollera att följande minimiversioner är installerade för att säkerställa korrekt konfiguration och kompatibilitet.
Förutsättningar:
-
iOS:
- iOS16.1 eller senare: Grundläggande funktioner för Live-aktivitet
- iOS 17.2+: Stöd för push-to-start
- iOS 18+: Stöd för sändningskanaler
-
Xcode: 14.0 eller senare
-
Swift: 5.7 eller senare
-
Beroenden: AEPCore, AEPMessaging, AEPMessagingLiveActivity, ActivityKit
-
AEP Mobile SDK version: iOS Messaging 5.11.0 eller senare
Steg 1: Importera nödvändiga moduler import
För att komma igång måste du först importera följande moduler: AEPMessaging, AEPMessagingLiveActivity, ActivityKit.
import AEPMessaging
import AEPMessagingLiveActivity
import ActivityKit
Steg 2: Definiera aktivitetsattribut attributes
Skapa en struktur som följer protokollet LiveActivityAttributes. Detta definierar både statiska data och läget för dynamiskt innehåll för din Live-aktivitet.
Nyckelkomponenterna är:
-
liveActivityData(krävs) som innehåller Adobe Experience Platform-specifika data.- För enskilda användare: Använd
LiveActivityData(liveActivityID: "unique-id") - För sändning: Använd
LiveActivityData(channelID: "channel-id")
- För enskilda användare: Använd
-
Statiska attribut, anpassade egenskaper som är specifika för ditt användningsfall, t.ex.
restaurantName. -
ContentStatesom definierar dynamiska data som kan uppdateras under Live-aktivitetens livscykel. Den måste överensstämma medCodableochHashable. -
LiveActivityOrigin-uppräkningen anger om en aktivitet initierades lokalt i appen eller via fjärråtkomst via ett push-to-start-meddelande, som stöds i iOS 17.2 och senare. Med det här värdet kan SDK skilja mellan lokalt initierad och fjärraktiverad Live-aktivitet under datainsamling.
Exempel
@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
}
Du kan även registrera flera Live-aktivitetstyper för din app:
if #available(iOS 16.1, *) {
Messaging.registerLiveActivity(AirplaneTrackingAttributes.self)
Messaging.registerLiveActivity(FoodDeliveryLiveActivityAttributes.self)
Messaging.registerLiveActivity(GameScoreLiveActivityAttributes.self)
}
Steg 3: Registrera Live-aktivitet register
Registrera dina Live-aktivitetstyper i din AppDelegate efter SDK-initiering, vilket gör att du kan:
- Aktiverar automatisk push-to-start-tokensamling (iOS 17.2+)
- Samlar in token för Live-aktivitetsuppdatering automatiskt
- Möjliggör livscykelhantering och händelsespårning
Exempel på en live-aktivitet för matleveranser:
if #available(iOS 16.1, *) {
Messaging.registerLiveActivity(FoodDeliveryLiveActivityAttributes.self)
}
Steg 4: Skapa Live-aktivitetswidgetar widgets
Live-aktiviteten visas via widgetar, du måste skapa ett widgetpaket och en konfiguration:
Exempel på en live-aktivitet för matleveranser:
@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
}
}
}
}
Steg 5: Starta en Live-aktivitet lokalt (valfritt) local
Journey Optimizer kan fjärrstarta Live-aktiviteten, men du kan även starta den lokalt:
Exempel på en live-aktivitet för matleveranser:
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
)
Steg 6: Lägg till stöd för felsökning (valfritt) debug
Om det behövs kan du felsöka Live-aktivitetsscheman i Adobe Assurance:
Exempel på en live-aktivitet för matleveranser:
@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")
)
}
}
Ytterligare resurser
Omfattande SDK-dokumentation och implementeringsinformation: