LiveActivityAttributes

A protocol that enables Live Activities to integrate with Adobe Experience Platform.

Conforming types can associate required Adobe Experience Platform data with iOS Live Activities. Any custom ActivityAttributes struct must implement this protocol when registering a Live Activity with the SDK.

iOS Protocol - LiveActivityAttributes

Available in iOS 16.1 and later.

Requirements

liveActivityData

The Adobe Experience Platform data associated with the Live Activity.

var liveActivityData: LiveActivityData { get }

This property must return a LiveActivityData instance containing either a liveActivityID for individual Live Activities or a channelID for broadcast Live Activities.

Usage

Basic implementation

@available(iOS 16.1, *)
struct FoodDeliveryLiveActivityAttributes: LiveActivityAttributes {
    // Required: 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
    }
}

Registration

After defining your attributes, register the Live Activity type with the SDK:

if #available(iOS 16.1, *) {
    Messaging.registerLiveActivities([FoodDeliveryLiveActivityAttributes.self])
}

To register multiple Live Activity types at once:

if #available(iOS 16.1, *) {
    Messaging.registerLiveActivities([
        FoodDeliveryLiveActivityAttributes.self,
        GameScoreLiveActivityAttributes.self
    ])
}

Creating a Live Activity

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
)