Implementação do SyncState no AppState

August 26, 2025 · View on GitHub

Este guia aborda como configurar o SyncState em sua aplicação, incluindo a configuração das capacidades do iCloud e a compreensão das possíveis limitações.

1. Configurando as Capacidades do iCloud

Para usar o SyncState em sua aplicação, você primeiro precisa habilitar o iCloud em seu projeto e configurar o armazenamento de chave-valor.

Passos para Habilitar o iCloud e o Armazenamento de Chave-Valor:

  1. Abra o seu projeto do Xcode e navegue até as configurações do seu projeto.
  2. Na guia "Signing & Capabilities", selecione o seu alvo (iOS ou macOS).
  3. Clique no botão "+ Capability" e escolha "iCloud" na lista.
  4. Habilite a opção "Key-Value storage" nas configurações do iCloud. Isso permite que sua aplicação armazene e sincronize pequenas quantidades de dados usando o iCloud.

Configuração do Arquivo de Entitlements:

  1. No seu projeto do Xcode, encontre ou crie o arquivo de entitlements para a sua aplicação.
  2. Certifique-se de que o Armazenamento de Chave-Valor do iCloud está configurado corretamente no arquivo de entitlements com o contêiner do iCloud correto.

Exemplo no arquivo de entitlements:

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

Certifique-se de que o valor da string corresponde ao contêiner do iCloud associado ao seu projeto.

2. Usando o SyncState na sua Aplicação

Uma vez que o iCloud esteja habilitado, você pode usar o SyncState na sua aplicação para sincronizar dados entre dispositivos.

Exemplo de Uso do 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)
            }
        }
    }
}

Neste exemplo, o estado de sincronização será salvo no iCloud e sincronizado em todos os dispositivos logados na mesma conta do iCloud.

3. Limitações e Melhores Práticas

O SyncState usa o NSUbiquitousKeyValueStore, que tem algumas limitações:

  • Limite de Armazenamento: O SyncState é projetado para pequenas quantidades de dados. O limite total de armazenamento é de 1 MB, e cada par de chave-valor é limitado a cerca de 1 MB.
  • Sincronização: As alterações feitas no SyncState não são sincronizadas instantaneamente entre os dispositivos. Pode haver um pequeno atraso na sincronização, e a sincronização do iCloud pode, ocasionalmente, ser afetada pelas condições da rede.

Melhores Práticas:

  • Use o SyncState para Dados Pequenos: Certifique-se de que apenas dados pequenos, como preferências do usuário ou configurações, sejam sincronizados usando o SyncState.
  • Lide com as Falhas do SyncState com Elegância: Use valores padrão ou mecanismos de tratamento de erros para levar em conta possíveis atrasos ou falhas na sincronização.

4. Conclusão

Ao configurar corretamente o iCloud e entender as limitações do SyncState, você pode aproveitar seu poder para sincronizar dados entre dispositivos. Certifique-se de usar o SyncState apenas para pequenas e críticas peças de dados para evitar possíveis problemas com os limites de armazenamento do iCloud.


Esta tradução foi gerada automaticamente e pode conter erros. Se você é um falante nativo, agradecemos suas contribuições com correções por meio de um Pull Request.