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:
- Abra o seu projeto do Xcode e navegue até as configurações do seu projeto.
- Na guia "Signing & Capabilities", selecione o seu alvo (iOS ou macOS).
- Clique no botão "+ Capability" e escolha "iCloud" na lista.
- 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:
- No seu projeto do Xcode, encontre ou crie o arquivo de entitlements para a sua aplicação.
- 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.