Sincronizzazione dei dati - Amazon Cognito

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Sincronizzazione dei dati

Se non hai mai usato Amazon Cognito Sync, utilizza AWS AppSync. Come Amazon Cognito Sync, AWS AppSync è un servizio che consente la sincronizzazione dei dati delle applicazioni tra più dispositivi.

Consente di sincronizzare i dati dell'utente come le preferenze dell'app o lo stato del gioco. Inoltre estende queste funzionalità consentendo a più utenti di sincronizzare e collaborare in tempo reale su dati condivisi.

Amazon Cognito ti consente di salvare i dati dell'utente finale in set di dati contenenti coppie chiave-valore. Questi dati sono associati a un'identità di Amazon Cognito nel tuo pool di identità, in modo che sia possibile accedervi attraverso gli accessi e i dispositivi. Per sincronizzare i dati tra il servizio Amazon Cognito e i dispositivi di un utente finale, richiama il metodo di sincronizzazione. Ogni set di dati può avere una dimensione massima di 1 MB. Puoi associare fino a un massimo di 20 set di dati con un'identità.

Il client Amazon Cognito Sync crea una cache locale per i dati di identità. Quando legge e scrive chiavi, la tua app comunica con questa cache locale. Questo garantisce che tutte le modifiche che effettui sul dispositivo siano immediatamente disponibili sullo stesso, anche quando sei offline. Quando viene chiamato il metodo di sincronizzazione, le modifiche del servizio vengono trasferite al dispositivo e eventuali modifiche locali vengono trasferite al servizio. A questo punto, le modifiche sono disponibili per la sincronizzazione con altri dispositivi.

Inizializzazione del client di Amazon Cognito Sync

Per inizializzare il client di Amazon Cognito Sync, è necessario creare prima un fornitore di credenziali. Il fornitore di credenziali acquisisce le credenziali AWS temporanee per permettere alla tua app di accedere alle tue risorse AWS. Devi anche importare i file di intestazione necessari. Utilizza la procedura seguente per inizializzare il client di Amazon Cognito Sync.

Android

  1. Crea un fornitore di credenziali, seguendo le istruzioni in Ottenere le credenziali.

  2. Importa il pacchetto Amazon Cognito come segue: import com.amazonaws.mobileconnectors.cognito.*;

  3. Inizializza Amazon Cognito Sync. Passa il contesto dell'app Android, l'ID del pool di identità, una Regione AWS e un fornitore di credenziali Amazon Cognito inizializzato come segue:

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

iOS - Objective-C

  1. Crea un fornitore di credenziali, seguendo le istruzioni in Ottenere le credenziali.

  2. Importa AWSCore e Cognito e inizializza AWSCognito come segue:

    #import <AWSiOSSDKv2/AWSCore.h> #import <AWSCognitoSync/Cognito.h> AWSCognito *syncClient = [AWSCognito defaultCognito];
  3. Se usi CocoaPods, sostituisci <AWSiOSSDKv2/AWSCore.h> con AWSCore.h. Segui la stessa sintassi per l'importazione di Amazon Cognito.

iOS - Swift

  1. Crea un fornitore di credenziali, seguendo le istruzioni in Ottenere le credenziali.

  2. Importa e inizializza AWSCognito come segue:

    import AWSCognito let syncClient = AWSCognito.default()!

JavaScript

  1. Scarica Amazon Cognito Sync Manager for JavaScript.

  2. Includi la libreria del manager della sincronizzazione nel tuo progetto;

  3. Crea un fornitore di credenziali, seguendo le istruzioni in Ottenere le credenziali.

  4. Inizializza il manager della sincronizzazione come segue:

    var syncManager = new AWS.CognitoSyncManager();

Unità

  1. Avrai bisogno inizialmente di creare un'istanza delle CognitoAWSCredentials, seguendo le istruzioni in Ottenere le credenziali.

  2. Creare un'istanza di CognitoSyncManager. Passa l'oggetto delle CognitoAwsCredentials e un AmazonCognitoSyncConfig e includi almeno il set Regione, come segue:

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

Xamarin

  1. Crea un'istanza delle CognitoAWSCredentials, seguendo le istruzioni in Ottenere le credenziali.

  2. Creare un'istanza di CognitoSyncManager. Passa l'oggetto delle CognitoAwsCredentials e un AmazonCognitoSyncConfig e includi almeno il set Regione, come segue:

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

Comprendere i set di dati

Amazon Cognito organizza i dati del profilo dell'utente finale in set di dati. Ogni set di dati può contenere fino a 1 MB di dati sotto forma di coppie chiave-valore. Un set di dati è l'entità più granulare che puoi sincronizzare. Le operazioni di lettura e scrittura eseguite su un set di dati riguardano solo l'archivio locale fino a quando il metodo di sincronizzazione viene invocato. Amazon Cognito identifica un set di dati attraverso una stringa univoca. Puoi creare un nuovo set di dati oppure aprirne uno esistente nel modo seguente.

Android

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

Per eliminare un set di dati, per prima cosa chiama il metodo per rimuoverlo dallo spazio di archiviazione locale, quindi richiama il metodo synchronize per eliminare il set di dati da Amazon Cognito nel modo seguente:

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

iOS - Objective-C

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

Per eliminare un set di dati, per prima cosa chiama il metodo per rimuoverlo dallo spazio di archiviazione locale, quindi richiama il metodo synchronize per eliminare il set di dati da Amazon Cognito nel modo seguente:

[dataset clear]; [dataset synchronize];

iOS - Swift

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

Per eliminare un set di dati, per prima cosa chiama il metodo per rimuoverlo dallo spazio di archiviazione locale, quindi richiama il metodo synchronize per eliminare il set di dati da Amazon Cognito:

dataset.clear() dataset.synchronize()

JavaScript

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

Unità

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

Per eliminare una chiave dal set di dati, utilizza Remove come segue:

dataset.Remove("myKey");

Xamarin

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

Per eliminare un set di dati, per prima cosa chiama il metodo per rimuoverlo dallo spazio di archiviazione locale, quindi richiama il metodo synchronize per eliminare il set di dati da Amazon Cognito nel modo seguente:

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

Lettura e scrittura dei dati nei set di dati

Funzione di set di dati di Amazon Cognito come dizionari, con i valori accessibili tramite chiave. Le chiavi e valori di un set di dati possono essere letti, aggiunti o modificati esattamente come se il set di dati fosse un dizionario, come mostrato negli esempi seguenti.

Nota che i valori che scrivi su un set di dati locali riguardano solo la copia memorizzata nella cache locale finché non chiami il metodo di sincronizzazione.

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); });

Unità

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

Puoi utilizzare il metodo remove per rimuovere le chiavi da un set di dati come segue:

dataset.remove("myKey");

iOS - Objective-C

Per eliminare una chiave dal set di dati, utilizza removeObjectForKey come segue:

[dataset removeObjectForKey:@"myKey"];

iOS - Swift

Per eliminare una chiave dal set di dati, utilizza removeObjectForKey come segue:

dataset.removeObjectForKey("myKey")

Unità

Per eliminare una chiave dal set di dati, utilizza Remove come segue:

dataset.Remove("myKey");

Xamarin

Usa il comando Remove per eliminare una chiave dal set di dati:

dataset.Remove("myKey");

Sincronizzazione dei dati locali con lo store di sincronizzazione

Android

Il metodo synchronize confronta i dati memorizzati nella cache locale con i dati archiviati nello store di Amazon Cognito Sync. Le modifiche remote vengono estratte dallo store Amazon Cognito Sync; la risoluzione dei conflitti viene richiamata se si verificano conflitti e i valori aggiornati sul dispositivo vengono inviati al servizio. Per sincronizzare il set di dati, chiama il suo metodo synchronize:

dataset.synchronize(syncCallback);

Il metodo synchronize riceve un'implementazione dell' interfaccia SyncCallback, illustrato di seguito.

Il metodo synchronizeOnConnectivity() tenta di sincronizzare quando è disponibile la connettività. Se la connettività è immediatamente disponibile, synchronizeOnConnectivity() si comporta come synchronize(). In caso contrario, monitora i cambiamenti di connettività ed esegue una sincronizzazione una volta che la connettività è disponibile. Se synchronizeOnConnectivity()è chiamata più volte, solo l'ultima richiesta di sincronizzazione viene mantenuta, e solo l'ultima callback verrà attivata. Se il set di dati o la callback vengono sottoposti al processo di garbage collection, questo metodo non eseguirà una sincronizzazione e la callback non verrà attivata.

Per ulteriori informazioni sulla sincronizzazione del set di dati e le diverse callback, consulta Gestione dei callback.

iOS - Objective-C

Il metodo synchronize confronta i dati memorizzati nella cache locale con i dati archiviati nello store di Amazon Cognito Sync. Le modifiche remote vengono estratte dallo store Amazon Cognito Sync; la risoluzione dei conflitti viene richiamata se si verificano conflitti e i valori aggiornati sul dispositivo vengono inviati al servizio. Per sincronizzare il set di dati, chiama il suo metodo synchronize:

Il metodo synchronize è asincrono e restituisce un oggetto AWSTask per gestire la risposta:

[[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; }];

Il metodo synchronizeOnConnectivity tenta di sincronizzare quando il dispositivo ha la connettività. In primo luogo, synchronizeOnConnectivity verifica la connettività e se il dispositivo è online immediatamente invoca la sincronizzazione e restituisce l'oggetto AWSTask associato al tentativo.

Se il dispositivo è offline, synchronizeOnConnectivity 1) pianifica un sincronizzare per la prossima volta che il dispositivo sarà online e 2) restituisce un AWSTask con risultato nullo. La sincronizzazione programmata è valida solo per il ciclo di vita dell'oggetto del set di dati. I dati non verranno sincronizzati se l'app viene chiusa prima che la connettività sia riconquistata. Se desideri essere avvisato ogni qualvolta hanno luogo eventi durante la sincronizzazione programmata, è necessario aggiungere osservatori delle notifiche trovati in AWSCognito.

Per ulteriori informazioni sulla sincronizzazione del set di dati e le diverse callback, consulta Gestione dei callback.

iOS - Swift

Il metodo synchronize confronta i dati memorizzati nella cache locale con i dati archiviati nello store di Amazon Cognito Sync. Le modifiche remote vengono estratte dallo store Amazon Cognito Sync; la risoluzione dei conflitti viene richiamata se si verificano conflitti e i valori aggiornati sul dispositivo vengono inviati al servizio. Per sincronizzare il set di dati, chiama il suo metodo synchronize:

Il metodo synchronize è asincrono e restituisce un oggetto AWSTask per gestire la risposta:

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 })

Il metodo synchronizeOnConnectivity tenta di sincronizzare quando il dispositivo ha la connettività. In primo luogo, synchronizeOnConnectivity verifica la connettività e se il dispositivo è online immediatamente invoca la synchronize e restituisce l'oggetto AWSTask associato al tentativo.

Se il dispositivo è offline, synchronizeOnConnectivity 1) pianifica un sincronizzare per la prossima volta che il dispositivo sarà online e 2) restituisce un oggetto AWSTask con un risultato nullo. La sincronizzazione programmata è valida solo per il ciclo di vita dell'oggetto del set di dati. I dati non verranno sincronizzati se l'app viene chiusa prima che la connettività sia riconquistata. Se desideri essere avvisato ogni qualvolta hanno luogo eventi durante la sincronizzazione programmata, è necessario aggiungere osservatori delle notifiche trovati in AWSCognito.

Per ulteriori informazioni sulla sincronizzazione del set di dati e le diverse callback, consulta Gestione dei callback.

JavaScript

Il metodo synchronize confronta i dati memorizzati nella cache locale con i dati archiviati nello store di Amazon Cognito Sync. Le modifiche remote vengono estratte dallo store Amazon Cognito Sync; la risoluzione dei conflitti viene richiamata se si verificano conflitti e i valori aggiornati sul dispositivo vengono inviati al servizio. Per sincronizzare il set di dati, chiama il suo metodo synchronize:

dataset.synchronize();

Per ulteriori informazioni sulla sincronizzazione del set di dati e le diverse callback, consulta Gestione dei callback.

Unità

Il metodo di sincronizzazione confronta i dati memorizzati nella cache locale con i dati archiviati nello store di Amazon Cognito Sync. Le modifiche remote vengono estratte dallo store Amazon Cognito Sync; la risoluzione dei conflitti viene richiamata se si verificano conflitti e i valori aggiornati sul dispositivo vengono inviati al servizio. Per sincronizzare il set di dati, chiama il suo metodo synchronize:

dataset.Synchronize();

La sincronizzazione genererà in modo asincrono e terminerà chiamando una delle diverse callback che puoi specificare nel set di dati.

Per ulteriori informazioni sulla sincronizzazione del set di dati e le diverse callback, consulta Gestione dei callback.

Xamarin

Il metodo synchronize confronta i dati memorizzati nella cache locale con i dati archiviati nello store di Amazon Cognito Sync. Le modifiche remote vengono estratte dallo store Amazon Cognito Sync; la risoluzione dei conflitti viene richiamata se si verificano conflitti e i valori aggiornati sul dispositivo vengono inviati al servizio. Per sincronizzare il set di dati, chiama il suo metodo synchronize:

dataset.SynchronizeAsync();

Per ulteriori informazioni sulla sincronizzazione del set di dati e le diverse callback, consulta Gestione dei callback.