Live Activities sur iOS
Les Live Activities affichent les données les plus récentes de votre application sur l’écran de verrouillage de l’iPhone ou de l’iPad et dans la Dynamic Island. Cette fonctionnalité permet aux utilisateurs de voir des informations en direct d’un seul coup d’œil et d’effectuer des actions rapides liées aux informations affichées.
Voici quelques exemples d’utilisation des Live Activities :
- Afficher le statut d’une commande dans une application de livraison ;
- Fournir un compte à rebours en temps réel dans une application d’entraînement ;
- Afficher les informations de suivi dans une application de taxi ;
- Afficher les statistiques de jeu et les scores actuels dans une application de sport ;
- Fournir des prévisions horaires dans une application météo.
Vous pouvez activer les Live Activities à l’aide du SDK iOS de Pushwoosh comme décrit ci-dessous. Pour gérer les Live Activities et mettre à jour leur contenu, utilisez la méthode /updateLiveActivity.
Configuration
Anchor link toAjouter une extension de widget
Anchor link to- Créer une nouvelle cible
Allez dans File > New > Target et sélectionnez Widget Extension.

- Configuration de l’extension de widget Veuillez saisir un nom et assurez-vous de cocher Include Live Activity, puis cliquez sur Finish.

Configuration de Info.plist
Anchor link toTrouvez le fichier Info.plist dans la cible principale, insérez la clé “Supports Live Activities” et définissez sa valeur sur YES.
<key>NSSupportsLiveActivities</key> <true/>
Activation des Live Activities depuis l’application
Anchor link toPour activer les Live Activities, ajoutez leur code à votre extension de widget existante ou créez-en une nouvelle si votre application n’en a pas déjà. Les Live Activities utilisent les fonctionnalités de SwiftUI et WidgetKit pour leur interface utilisateur. ActivityKit gère le cycle de vie de chaque Live Activity : son API est utilisée pour demander, mettre à jour et terminer une Live Activity, et pour recevoir des notifications push d’ActivityKit. Vous pouvez en apprendre davantage sur les Live Activities dans la documentation d’Apple.
- Accédez au fichier ContentView de votre projet dans Xcode et créez un bouton
import SwiftUI
struct ContentView: View { var body: some View { VStack(spacing: 20) {
Button(action: { LiveActivityManager.shared.startActivity() }, label: { Text("Start Live Activity") .foregroundColor(.white) .padding() .background(Color.blue) .cornerRadius(10) }) } .padding() }}
#Preview { ContentView()}

- Créez un fichier LiveActivityManager.swift pour gérer les Live Activities
import Foundationimport ActivityKitimport UIKitimport PushwooshFrameworkimport PushwooshLiveActivities
class LiveActivityManager: NSObject, ObservableObject { public static let shared: LiveActivityManager = LiveActivityManager()
private var currentActivity: Activity<FoodDeliveryAttributes>? = nil
override init() { super.init() }
func startActivity() { guard ActivityAuthorizationInfo().areActivitiesEnabled else { print("You can't start live activity.") return } do { let pushwooshData = PushwooshLiveActivityAttributeData(activityId: "activity_id") let atttribute = FoodDeliveryAttributes(orderNumber: "1234567", pushwoosh: pushwooshData) let initialState = FoodDeliveryAttributes.ContentState( status: "Preparing your meal", estimatedTime: "25 min", emoji: "👨🍳", pushwoosh: nil ) let activity = try Activity<FoodDeliveryAttributes>.request( attributes: atttribute, content: .init(state:initialState , staleDate: nil), pushType: .token ) self.currentActivity = activity
Task { for await pushToken in activity.pushTokenUpdates { let pushTokenString = pushToken.reduce("") { $0 + String(format: "%02x", $1) } print("Activity:\(activity.id) push token: \(pushTokenString)")
// MARK: - Send Push Token to Pushwoosh Pushwoosh.LiveActivities.startLiveActivity( token: pushTokenString, activityId: "activity_id" ) } } } catch { print("Start Activity Error: \(error.localizedDescription)") } }}
- C’est tout, maintenant nous exécutons le projet et appuyons sur le bouton ‘Start Live Activity’. Ensuite, nous allons sur l’écran de verrouillage et voyons la Live Activity créée.

Lancer une Live Activity avec une notification push distante
Anchor link to- Pour lancer une Live Activity via une notification push distante, vous devez envoyer le jeton pushToStartTokenUpdates à Pushwoosh.
func getPushToStartToken() { if #available(iOS 17.2, *) { Task { for await data in Activity<LiveActivityAttributes>.pushToStartTokenUpdates { let token = data.map {String(format: "%02x", $0)}.joined() print("Activity PushToStart Token: \(token)")
// Send `pushToStartTokenUpdates` token to Pushwoosh try await Pushwoosh.LiveActivities.sendPushToStartLiveActivity(token: token) } } }}
- Lancer une Live Activity avec une notification push distante
Gestion des Live Activities
Anchor link toLe SDK iOS de Pushwoosh fournit les méthodes suivantes pour travailler avec les Live Activities :
// Send Live Activity Push To Start Token to Pushwooshstatic func sendPushToStartLiveActivity(token: String)static func sendPushToStartLiveActivity(token: String, completion: @escaping (Error?) -> Void)
// Start Live Activity Methods with Activity IDstatic func startLiveActivity(token: String, activityId: String)static func startLiveActivity(token: String, activityId: String, completion: @escaping (Error?) -> Void)
// Stop Live Activity Methodsstatic func stopLiveActivity()static func stopLiveActivity(completion: @escaping (Error?) -> Void)
static func stopLiveActivity(activityId: String)static func stopLiveActivity(activityId: String, completion: @escaping (Error?) -> Void)
Vous pouvez également mettre à jour les Live Activities par segments en utilisant le paramètre Activity ID. Lors de la création d’une activité, vous devez passer un paramètre Activity ID unique dans la méthode, qui sera pertinent pour un segment d’utilisateurs spécifique.
Par exemple, N utilisateurs se sont abonnés au même événement dans une Live Activity. Il est nécessaire que le paramètre Activity ID soit unique pour tous ces N utilisateurs.
Lorsque vous avez fini de travailler avec une Live Activity, utilisez ces méthodes :
static func stopLiveActivity()static func stopLiveActivity(completion: @escaping (Error?) -> Void)
Méthode Setup()
.
Anchor link toPushwoosh simplifie le transfert des ID d’activité en introduisant la fonction PushwooshLiveActivities.setup
, qui gère l’ensemble du cycle de vie d’une Live Activity au sein de l’application. Cette fonction écoute automatiquement les mises à jour des jetons pushToStart et pushToUpdate. En utilisant cette méthode, l’application n’a plus besoin de suivre manuellement le lancement des Live Activities ou de gérer les mises à jour de jetons pour les mises à jour d’activités.
Nous recommandons d’utiliser cette méthode car elle gère toute la gestion des jetons de notre côté, ce qui réduit la quantité de code que vous devez maintenir de votre côté. Cela simplifie l’intégration et garantit une expérience plus fluide et plus efficace pour votre application.
Dans l’AppDelegate, assurez-vous d’importer PushwooshFramework
et PushwooshLiveActivities
, puis appelez la méthode setup
depuis le module Pushwoosh.LiveActivities
.
AppDelegate.swift
if #available(iOS 16.1, *) { Pushwoosh.LiveActivities.setup(FoodDeliveryAttributes.self)}
FoodDeliveryAttributes
import WidgetKitimport SwiftUIimport ActivityKitimport PushwooshFrameworkimport PushwooshLiveActivities
struct FoodDeliveryAttributes: PushwooshLiveActivityAttributes { public struct ContentState: PushwooshLiveActivityContentState { var status: String var estimatedTime: String var emoji: String var pushwoosh: PushwooshLiveActivityContentStateData? }
var orderNumber: String var pushwoosh: PushwooshLiveActivityAttributeData}
FoodDeliveryAttributes
: Cette structure est conforme au protocole PushwooshLiveActivityAttributes
. Elle est utilisée pour définir les attributs d’une Live Activity au sein de l’application.
Guide de migration
Anchor link toÀ partir de la version 6.8.0 du SDK iOS de Pushwoosh, nous avons mis à jour la structure du SDK. Les méthodes des Live Activities sont désormais accessibles via le module PushwooshLiveActivities
.
Si vous utilisiez une version du SDK iOS de Pushwoosh antérieure à la 6.8.0 et que vous appeliez les méthodes listées ci-dessous, et que vous avez depuis mis à jour vers la version 6.8.0 ou une version ultérieure, veuillez noter les changements suivants :
static func setup<Attributes: PushwooshLiveActivityAttributes>(_ activityType: Attributes.Type)static func defaultSetup()static func defaultStart(_ activityId: String, attributes: [String: Any], content: [String: Any])
Désormais, pour accéder à ces méthodes, vous devez utiliser le module LiveActivity.
import PushwooshFrameworkimport PushwooshLiveActivities
Pushwoosh.LiveActivities.setup(FoodDeliveryAttributes.self)Pushwoosh.LiveActivities.defaultSetup()Pushwoosh.LiveActivities.defaultStart("activity_id", attributes: ["key_attribute": "value_attribute"], content: ["key_content": "value_content"])
Nous avons également maintenu la prise en charge des méthodes via Pushwoosh.sharedInstance()
comme indiqué ci-dessous, mais veuillez noter que ces méthodes seront obsolètes dans les prochaines versions.
// Send Live Activity Push To Start Token to Pushwooshstatic func sendPushToStartLiveActivity(token: String)static func sendPushToStartLiveActivity(token: String, completion: @escaping (Error?) -> Void)
// Start Live Activity Methods with Activity IDstatic func startLiveActivity(token: String, activityId: String)static func startLiveActivity(token: String, activityId: String, completion: @escaping (Error?) -> Void)
// Stop Live Activity Methodsstatic func stopLiveActivity()static func stopLiveActivity(completion: @escaping (Error?) -> Void)
static func stopLiveActivity(activityId: String)static func stopLiveActivity(activityId: String, completion: @escaping (Error?) -> Void)