Sincronização de dados entre clientes - Amazon Cognito

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Sincronização de dados entre clientes

Se você for novo com o Amazon Cognito Sync, use o AWS AppSync. Assim como o Amazon Cognito Sync, AWS AppSync é um serviço para sincronizar dados de aplicativos entre dispositivos.

Ele permite que dados do usuário, como preferências de aplicações ou estado de jogos, sejam sincronizados. Ele também amplia essas capacidades ao permitir que vários usuários sincronizem e colaborem em tempo real com dados compartilhados.

Com o Amazon Cognito, é possível salvar dados de usuários em conjuntos de dados que contêm pares de chave-valor. O Amazon Cognito associa esses dados a uma identidade em seu grupo de identidades para que sua aplicação possa acessá-los entre logins e dispositivos. Para sincronizar esses dados entre o serviço do Amazon Cognito e os dispositivos de um usuário final, invoque o método de sincronização. Cada conjunto de dados pode ter um tamanho máximo de 1 MB. Você pode associar até 20 conjuntos de dados a uma identidade.

O cliente do Amazon Cognito Sync cria um cache local para os dados de identidade. Quando sua aplicação lê e grava chaves, ela se comunica com esse cache local. Essa comunicação garante que todas as alterações feitas no dispositivo sejam imediatamente disponibilizadas no dispositivo, mesmo quando você estiver offline. Quando o método de sincronização é chamado, as alterações do serviço são recebidas no dispositivo, e quaisquer alterações locais são enviadas ao serviço. Nesse momento, as alterações são disponibilizadas para outros dispositivos para sincronização.

Como inicializar o cliente do Amazon Cognito Sync

Para inicializar o cliente do Amazon Cognito Sync, primeiro você precisa criar um provedor de credenciais. O provedor de credenciais adquire AWS credenciais temporárias para possibilitar que seu aplicativo acesse seus recursos. AWS Você também deve importar os arquivos de cabeçalho necessários. Use as seguintes etapas para inicializar o cliente do Amazon Cognito Sync.

Android

  1. Crie um provedor de credenciais, seguindo as instruções em Como obter credenciais.

  2. Importe o pacote do Amazon Cognito da seguinte forma: import com.amazonaws.mobileconnectors.cognito.*;

  3. Inicialize o Amazon Cognito Sync. Transmita o contexto da aplicação Android, o ID do grupo de identidades, uma Região da AWS e um provedor de credenciais inicializado do Amazon Cognito da seguinte forma:

    CognitoSyncManager client = new CognitoSyncManager( getApplicationContext(), Regions.YOUR_REGION, credentialsProvider);

iOS – Objective-C

  1. Crie um provedor de credenciais, seguindo as instruções em Como obter credenciais.

  2. Importe AWSCore e Cognito e inicialize o AWSCognito da seguinte forma:

    #import <AWSiOSSDKv2/AWSCore.h> #import <AWSCognitoSync/Cognito.h> AWSCognito *syncClient = [AWSCognito defaultCognito];
  3. Se você estiver usando CocoaPods, <AWSiOSSDKv2/AWSCore.h> substitua porAWSCore.h. Siga a mesma sintaxe para a importação do Amazon Cognito.

iOS – Swift

  1. Crie um provedor de credenciais, seguindo as instruções em Como obter credenciais.

  2. Importe e inicialize o AWSCognito da seguinte forma:

    import AWSCognito let syncClient = AWSCognito.default()!

JavaScript

  1. Baixe o Amazon Cognito Sync Manager para. JavaScript

  2. Inclua a biblioteca do Sync Manager no projeto.

  3. Crie um provedor de credenciais, seguindo as instruções em Como obter credenciais.

  4. Inicialize o Sync Manager da seguinte forma:

    var syncManager = new AWS.CognitoSyncManager();

Unity

  1. Crie uma instância de CognitoAWSCredentials seguindo as instruções em Como obter credenciais.

  2. Crie uma instância de CognitoSyncManager. Transmita o objeto CognitoAwsCredentials e um AmazonCognitoSyncConfig e inclua pelo menos o conjunto de regiões da seguinte forma:

    AmazonCognitoSyncConfig clientConfig = new AmazonCognitoSyncConfig { RegionEndpoint = REGION }; CognitoSyncManager syncManager = new CognitoSyncManager(credentials, clientConfig);

Xamarin

  1. Crie uma instância de CognitoAWSCredentials seguindo as instruções em Como obter credenciais.

  2. Crie uma instância de CognitoSyncManager. Transmita o objeto CognitoAwsCredentials e um AmazonCognitoSyncConfig e inclua pelo menos o conjunto de regiões da seguinte forma:

    AmazonCognitoSyncConfig clientConfig = new AmazonCognitoSyncConfig { RegionEndpoint = REGION }; CognitoSyncManager syncManager = new CognitoSyncManager(credentials, clientConfig);

Noções básicas sobre conjuntos de dados

O Amazon Cognito organiza os dados de perfil do usuário em conjuntos de dados. Cada conjunto de dados pode conter até 1 MB de dados na forma de pares de chave-valor. Um conjunto de dados é a entidade mais granular na qual você pode realizar uma operação de sincronização. As operações de leitura e gravação realizadas em um conjunto de dados só afetam o repositório local enquanto o método de sincronização não é invocado. O Amazon Cognito identifica um conjunto de dados por meio de uma string exclusiva. Você pode criar um conjunto de dados ou abrir um existente, como mostrado a seguir.

Android

Dataset dataset = client.openOrCreateDataset("datasetname");

Para excluir um conjunto de dados, primeiro chame o método para removê-lo do armazenamento local e, depois, chame o método synchronize da forma a seguir para excluir o conjunto de dados do Amazon Cognito:

dataset.delete(); dataset.synchronize(syncCallback);

iOS – Objective-C

AWSCognitoDataset *dataset = [syncClient openOrCreateDataset:@"myDataSet"];

Para excluir um conjunto de dados, primeiro chame o método para removê-lo do armazenamento local e, depois, chame o método synchronize da forma a seguir para excluir o conjunto de dados do Amazon Cognito:

[dataset clear]; [dataset synchronize];

iOS – Swift

let dataset = syncClient.openOrCreateDataset("myDataSet")!

Para excluir um conjunto de dados, primeiro chame o método para removê-lo do armazenamento local e, depois, chame o método synchronize da forma a seguir para excluir o conjunto de dados do Amazon Cognito:

dataset.clear() dataset.synchronize()

JavaScript

syncManager.openOrCreateDataset('myDatasetName', function(err, dataset) { // ... });

Unity

string myValue = dataset.Get("myKey"); dataset.Put("myKey", "newValue");

Para excluir uma chave de um conjunto de dados, use Remove da seguinte forma:

dataset.Remove("myKey");

Xamarin

Dataset dataset = syncManager.OpenOrCreateDataset("myDatasetName");

Para excluir um conjunto de dados, primeiro chame o método para removê-lo do armazenamento local e, depois, chame o método synchronize da forma a seguir para excluir o conjunto de dados do Amazon Cognito:

dataset.Delete(); dataset.SynchronizeAsync();

Leitura e gravação de dados em conjuntos de dados

Os conjuntos de dados do Amazon Cognito funcionam como dicionários, com valores acessíveis por chave. Você pode ler, adicionar ou modificar as chaves e os valores de um conjunto de dados como se ele fosse um dicionário, conforme mostrado nos exemplos a seguir.

Observe que os valores gravados em um conjunto de dados afetam a cópia de dados armazenada em cache local somente enquanto você não chamar o método de sincronização.

Android

String value = dataset.get("myKey"); dataset.put("myKey", "my value");

iOS – Objective-C

[dataset setString:@"my value" forKey:@"myKey"]; NSString *value = [dataset stringForKey:@"myKey"];

iOS – Swift

dataset.setString("my value", forKey:"myKey") let value = dataset.stringForKey("myKey")

JavaScript

dataset.get('myKey', function(err, value) { console.log('myRecord: ' + value); }); dataset.put('newKey', 'newValue', function(err, record) { console.log(record); }); dataset.remove('oldKey', function(err, record) { console.log(success); });

Unity

string myValue = dataset.Get("myKey"); dataset.Put("myKey", "newValue");

Xamarin

//obtain a value string myValue = dataset.Get("myKey"); // Create a record in a dataset and synchronize with the server dataset.OnSyncSuccess += SyncSuccessCallback; dataset.Put("myKey", "myValue"); dataset.SynchronizeAsync(); void SyncSuccessCallback(object sender, SyncSuccessEventArgs e) { // Your handler code here }

Android

Para remover chaves de um conjunto de dados, use o método remove da seguinte forma:

dataset.remove("myKey");

iOS – Objective-C

Para excluir uma chave de um conjunto de dados, use removeObjectForKey da seguinte forma:

[dataset removeObjectForKey:@"myKey"];

iOS – Swift

Para excluir uma chave de um conjunto de dados, use removeObjectForKey da seguinte forma:

dataset.removeObjectForKey("myKey")

Unity

Para excluir uma chave de um conjunto de dados, use Remove da seguinte forma:

dataset.Remove("myKey");

Xamarin

Você pode usar Remove para excluir uma chave de um conjunto de dados:

dataset.Remove("myKey");

Como sincronizar dados locais com o armazenamento de sincronização

Android

O método synchronize compara os dados armazenados em cache local com os dados armazenados no armazenamento do repositório do Amazon Cognito Sync. As alterações remotas são recebidas do armazenamento do Amazon Cognito Sync. A resolução conflitante será invocada se ocorrer algum conflito e os valores atualizados no dispositivo serão enviados ao serviço. Para sincronizar um conjunto de dados, chame seu método synchronize:

dataset.synchronize(syncCallback);

O método synchronize recebe uma implementação da interface SyncCallback, assunto abordado a seguir.

O método synchronizeOnConnectivity() tenta realizar a sincronização quando a conectividade está disponível. Se a conectividade for disponibilizada imediatamente, synchronizeOnConnectivity() se comportará como synchronize(). Caso contrário, ele monitorará as alterações de conectividade e executará uma sincronização quando a conectividade for disponibilizada. Se synchronizeOnConnectivity()for chamado várias vezes, apenas a última solicitação de sincronização será mantida e apenas o último retorno de chamada será acionado. Se o conjunto de dados ou o retorno de chamada for descartado, esse método não executará uma sincronização e o retorno de chamada não será acionado.

Para saber mais sobre a sincronização de conjunto de dados e os diferentes retornos de chamada, consulte Tratamento de retornos de chamada de eventos.

iOS – Objective-C

O método synchronize compara os dados armazenados em cache local com os dados armazenados no armazenamento do repositório do Amazon Cognito Sync. As alterações remotas são recebidas do armazenamento do Amazon Cognito Sync. A resolução conflitante será invocada se ocorrer algum conflito e os valores atualizados no dispositivo serão enviados ao serviço. Para sincronizar um conjunto de dados, chame seu método synchronize:

O método synchronize é assíncrono e retorna um objeto AWSTask para manipular a resposta:

[[dataset synchronize] continueWithBlock:^id(AWSTask *task) { if (task.isCancelled) { // Task cancelled. } else if (task.error) { // Error while executing task. } else { // Task succeeded. The data was saved in the sync store. } return nil; }];

O método synchronizeOnConnectivity tenta realizar a sincronização quando o dispositivo tem conectividade. Primeiro, synchronizeOnConnectivity verifica se há conectividade e, se o dispositivo estiver online, invocará imediatamente synchronize e retornará o objeto AWSTask associado à tentativa.

Se o dispositivo estiver offline, synchronizeOnConnectivity 1) programará uma sincronização para a próxima vez que o dispositivo ficar online e 2) retornará um AWSTask com um resultado de zero. A sincronização programada é válida somente para o ciclo de vida do objeto do conjunto de dados. Os dados não serão sincronizados se o aplicativo for encerrado antes que a conectividade seja recuperada. Se você quiser ser notificado quando os eventos ocorrerem durante a sincronização programada, adicione observadores das notificações encontradas em AWSCognito.

Para saber mais sobre a sincronização de conjunto de dados e os diferentes retornos de chamada, consulte Tratamento de retornos de chamada de eventos.

iOS – Swift

O método synchronize compara os dados armazenados em cache local com os dados armazenados no armazenamento do repositório do Amazon Cognito Sync. As alterações remotas são recebidas do armazenamento do Amazon Cognito Sync. A resolução conflitante será invocada se ocorrer algum conflito e os valores atualizados no dispositivo serão enviados ao serviço. Para sincronizar um conjunto de dados, chame seu método synchronize:

O método synchronize é assíncrono e retorna um objeto AWSTask para manipular a resposta:

dataset.synchronize().continueWith(block: { (task) -> AnyObject? in if task.isCancelled { // Task cancelled. } else if task.error != nil { // Error while executing task } else { // Task succeeded. The data was saved in the sync store. } return task })

O método synchronizeOnConnectivity tenta realizar a sincronização quando o dispositivo tem conectividade. Primeiro, synchronizeOnConnectivity verifica se há conectividade e, se o dispositivo estiver online, invocará imediatamente synchronize e retornará o objeto AWSTask associado à tentativa.

Se o dispositivo estiver offline, synchronizeOnConnectivity 1) programará uma sincronização para a próxima vez que o dispositivo ficar online e 2) retornará um objeto AWSTask com um resultado de zero. A sincronização programada é válida somente para o ciclo de vida do objeto do conjunto de dados. Os dados não serão sincronizados se o aplicativo for encerrado antes que a conectividade seja recuperada. Se você quiser ser notificado quando os eventos ocorrerem durante a sincronização programada, adicione observadores das notificações encontradas em AWSCognito.

Para saber mais sobre a sincronização de conjunto de dados e os diferentes retornos de chamada, consulte Tratamento de retornos de chamada de eventos.

JavaScript

O método synchronize compara os dados armazenados em cache local com os dados armazenados no armazenamento do repositório do Amazon Cognito Sync. As alterações remotas são recebidas do armazenamento do Amazon Cognito Sync. A resolução conflitante será invocada se ocorrer algum conflito e os valores atualizados no dispositivo serão enviados ao serviço. Para sincronizar um conjunto de dados, chame seu método synchronize:

dataset.synchronize();

Para saber mais sobre a sincronização de conjunto de dados e os diferentes retornos de chamada, consulte Tratamento de retornos de chamada de eventos.

Unity

O método synchronize compara os dados armazenados em cache local com os dados armazenados no repositório do Amazon Cognito Sync. As alterações remotas são recebidas do armazenamento do Amazon Cognito Sync. A resolução conflitante será invocada se ocorrer algum conflito e os valores atualizados no dispositivo serão enviados ao serviço. Para sincronizar um conjunto de dados, chame seu método synchronize:

dataset.Synchronize();

A sincronização será executada de forma assíncrona e acabará chamando um dos vários retornos de chamada que você pode especificar no conjunto de dados.

Para saber mais sobre a sincronização de conjunto de dados e os diferentes retornos de chamada, consulte Tratamento de retornos de chamada de eventos.

Xamarin

O método synchronize compara os dados armazenados em cache local com os dados armazenados no armazenamento do repositório do Amazon Cognito Sync. As alterações remotas são recebidas do armazenamento do Amazon Cognito Sync. A resolução conflitante será invocada se ocorrer algum conflito e os valores atualizados no dispositivo serão enviados ao serviço. Para sincronizar um conjunto de dados, chame seu método synchronize:

dataset.SynchronizeAsync();

Para saber mais sobre a sincronização de conjunto de dados e os diferentes retornos de chamada, consulte Tratamento de retornos de chamada de eventos.