Implémentation de SyncState dans AppState

August 26, 2025 · View on GitHub

Ce guide explique comment configurer SyncState dans votre application, y compris la configuration des capacités iCloud et la compréhension des limitations potentielles.

1. Configuration des Capacités iCloud

Pour utiliser SyncState dans votre application, vous devez d'abord activer iCloud dans votre projet et configurer le stockage clé-valeur.

Étapes pour Activer iCloud et le Stockage Clé-Valeur :

  1. Ouvrez votre projet Xcode et accédez aux paramètres de votre projet.
  2. Sous l'onglet "Signing & Capabilities", sélectionnez votre cible (iOS ou macOS).
  3. Cliquez sur le bouton "+ Capability" et choisissez "iCloud" dans la liste.
  4. Activez l'option "Key-Value storage" dans les paramètres iCloud. Cela permet à votre application de stocker et de synchroniser de petites quantités de données à l'aide d'iCloud.

Configuration du Fichier d'Autorisations :

  1. Dans votre projet Xcode, trouvez ou créez le fichier d'autorisations pour votre application.
  2. Assurez-vous que le stockage clé-valeur iCloud est correctement configuré dans le fichier d'autorisations avec le bon conteneur iCloud.

Exemple dans le fichier d'autorisations :

<key>com.apple.developer.ubiquity-kvstore-identifier</key>
<string>$(TeamIdentifierPrefix)com.yourdomain.app</string>

Assurez-vous que la valeur de la chaîne correspond au conteneur iCloud associé à votre projet.

2. Utilisation de SyncState dans Votre Application

Une fois iCloud activé, vous pouvez utiliser SyncState dans votre application pour synchroniser les données entre les appareils.

Exemple d'Utilisation de SyncState :

import AppState
import SwiftUI

extension Application {
    var syncValue: SyncState<Int?> {
        syncState(id: "syncValue")
    }
}

struct ContentView: View {
    @SyncState(\.syncValue) private var syncValue: Int?

    var body: some View {
        VStack {
            if let syncValue = syncValue {
                Text("SyncValue: \(syncValue)")
            } else {
                Text("No SyncValue")
            }

            Button("Update SyncValue") {
                syncValue = Int.random(in: 0..<100)
            }
        }
    }
}

Dans cet exemple, l'état de synchronisation sera enregistré sur iCloud et synchronisé sur tous les appareils connectés au même compte iCloud.

3. Limitations et Meilleures Pratiques

SyncState utilise NSUbiquitousKeyValueStore, qui présente certaines limitations :

  • Limite de Stockage : SyncState est conçu pour de petites quantités de données. La limite de stockage totale est de 1 Mo, et chaque paire clé-valeur est limitée à environ 1 Mo.
  • Synchronisation : Les modifications apportées à SyncState ne sont pas synchronisées instantanément entre les appareils. Il peut y avoir un léger délai de synchronisation, et la synchronisation iCloud peut parfois être affectée par les conditions du réseau.

Meilleures Pratiques :

  • Utilisez SyncState pour les Petites Données : Assurez-vous que seules de petites données comme les préférences utilisateur ou les paramètres sont synchronisées à l'aide de SyncState.
  • Gérez les Échecs de SyncState avec Élégance : Utilisez des valeurs par défaut ou des mécanismes de gestion des erreurs pour tenir compte des retards ou des échecs de synchronisation potentiels.

4. Conclusion

En configurant correctement iCloud et en comprenant les limitations de SyncState, vous pouvez tirer parti de sa puissance pour synchroniser des données entre les appareils. Assurez-vous de n'utiliser SyncState que pour de petites données critiques afin d'éviter les problèmes potentiels liés aux limites de stockage d'iCloud.


Cette traduction a été générée automatiquement et peut contenir des erreurs. Si vous êtes un locuteur natif, nous vous serions reconnaissants de contribuer avec des corrections via une Pull Request.