Synchronisieren von Daten zwischen Clients - Amazon Cognito

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Synchronisieren von Daten zwischen Clients

Wenn Amazon Cognito Sync für Sie neu ist, verwenden Sie zuerst AWS AppSync. Wie Amazon Cognito Sync AWS AppSync ist es ein Dienst zur geräteübergreifenden Synchronisation von Anwendungsdaten.

Es ermöglicht Benutzerdaten wie App-Einstellungen oder Spielstatus synchronisiert werden. Darüber hinaus erweitert es diese Möglichkeiten, indem mehrere Benutzer gemeinsam genutzte Daten synchronisieren und diese in Echtzeit zusammen nutzen können.

Mit Amazon Cognito können Sie Benutzerdaten in Datensätzen speichern, die Schlüssel-Wert-Paare enthalten. Amazon-Cognito verknüpft diese Daten mit einer Identität in Ihrem Identitäten-Pool sodass Ihre App mit verschiedenen Anmeldedaten und Geräten darauf zugreifen kann. Um diese Daten zwischen dem Amazon-Cognito-Service und Geräten eines Endbenutzers zu synchronisieren, rufen Sie die Synchronisierungsmethode auf. Jeder Datensatz kann eine maximale Größe von 1 MB haben. Sie können bis zu 20 Datensätze mit einer Identität assoziieren.

Der Amazon-Cognito-Sync-Client erstellt einen lokalen Cache für die Identitätsdaten. Ihre App kommuniziert mit diesem lokalen Cache, wenn sie Schlüssel liest und schreibt. Diese Kommunikation stellt sicher, dass alle am Gerät vorgenommen Änderungen sofort auf dem Gerät zur Verfügung stehen, auch wenn Sie offline sind. Wenn die Synchronisierungsmethode aufgerufen wird, werden Änderungen vom Service auf das Gerät gezogen, und alle lokalen Änderungen werden per Push-Verfahren an den Service übertragen. Zu diesem Punkt stehen die Änderungen auch anderen Geräten zur Synchronisierung zur Verfügung.

Initialisieren des Amazon-Cognito-Sync-Clients

Zum Initialisieren des Amazon-Cognito-Sync-Clients müssen Sie zunächst einen Anmeldeinformationsanbieter erstellen. Der Anbieter von Anmeldeinformationen erfasst temporäre AWS Anmeldeinformationen, damit Ihre App auf Ihre Ressourcen zugreifen kann. AWS Sie müssen auch die erforderlichen Header-Dateien importieren. Gehen Sie zur Initialisierung des Amazon-Cognito-Sync-Client folgendermaßen vor.

Android

  1. Erstellen Sie einen Anmeldeinformationen-Anbieter gemäß den Anweisungen unter Abrufen von Anmeldeinformationen.

  2. Importieren Sie folgendes Amazon-Cognito-Paket: import com.amazonaws.mobileconnectors.cognito.*;

  3. Initialisieren Sie Amazon Cognito Sync. Übermitteln Sie wie folgt den Android App-Kontext, die Identitäten-Pool-ID, eine AWS-Region und einen initialisierten Amazon Cognito-Anmeldeinformationsanbieter:

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

iOS – Objective-C

  1. Erstellen Sie einen Anmeldeinformationen-Anbieter gemäß den Anweisungen unter Abrufen von Anmeldeinformationen.

  2. Importieren Sie AWSCore und Cognito initialisieren Sie AWSCognito wie folgt:

    #import <AWSiOSSDKv2/AWSCore.h> #import <AWSCognitoSync/Cognito.h> AWSCognito *syncClient = [AWSCognito defaultCognito];
  3. Wenn Sie verwenden CocoaPods, ersetzen Sie es <AWSiOSSDKv2/AWSCore.h> durchAWSCore.h. Folgen Sie der gleichen Syntax für den Import von Amazon Cognito.

iOS – Swift

  1. Erstellen Sie einen Anmeldeinformationen-Anbieter gemäß den Anweisungen unter Abrufen von Anmeldeinformationen.

  2. Importieren und initialisieren Sie AWSCognito wie folgt:

    import AWSCognito let syncClient = AWSCognito.default()!

JavaScript

  1. Laden Sie den Amazon Cognito Sync Manager für JavaScript herunter.

  2. Fügen Sie die Sync-Manager-Bibliothek in Ihr Projekt ein.

  3. Erstellen Sie einen Anmeldeinformationen-Anbieter gemäß den Anweisungen unter Abrufen von Anmeldeinformationen.

  4. Initialisieren Sie den Sync-Manager wie folgt:

    var syncManager = new AWS.CognitoSyncManager();

Unity

  1. Erstellen Sie eine Instance von CognitoAWSCredentials gemäß den Anweisungen unter Abrufen von Anmeldeinformationen.

  2. Erstellen Sie eine Instance von CognitoSyncManager. Übergeben Sie das CognitoAwsCredentials-Objekt und ein AmazonCognitoSyncConfig und schließen Sie wie folgt mindestens die Region ein:

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

Xamarin

  1. Erstellen Sie eine Instance von CognitoAWSCredentials gemäß den Anweisungen unter Abrufen von Anmeldeinformationen.

  2. Erstellen Sie eine Instance von CognitoSyncManager. Übergeben Sie das CognitoAwsCredentials-Objekt und ein AmazonCognitoSyncConfig und schließen Sie wie folgt mindestens die Region ein:

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

Grundlegendes zu Datensätzen

Bei Amazon Cognito werden Benutzerprofildaten in Datensätzen organisiert. Jeder Datensatz kann bis zu 1 MB Daten in Form von Schlüssel-Wert-Paaren enthalten. Ein Datensatz ist die genaueste Entität, die Sie synchronisieren können. Lese- und Schreibvorgänge auf einem Datensatz haben nur Auswirkungen auf den lokalen Speicher, bis die Synchronisierungsmethode aufgerufen wird. Amazon Cognito identifiziert einen Datensatz durch eine eindeutige Zeichenfolge. Sie können wie folgt einen neuen Datensatz erstellen oder einen vorhandenen öffnen.

Android

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

Um einen Datensatz zu löschen, rufen Sie zuerst die Methode auf, mit der dieser aus dem lokalen Speicher gelöscht wird. Rufen Sie anschließend wie folgt die synchronize-Methode zum Löschen des Datensatzes aus Amazon Cognito auf:

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

iOS – Objective-C

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

Um einen Datensatz zu löschen, rufen Sie zuerst die Methode auf, mit der dieser aus dem lokalen Speicher gelöscht wird. Rufen Sie anschließend wie folgt die synchronize-Methode zum Löschen des Datensatzes aus Amazon Cognito auf:

[dataset clear]; [dataset synchronize];

iOS – Swift

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

Um einen Datensatz zu löschen, rufen Sie zuerst die Methode auf, mit der dieser aus dem lokalen Speicher gelöscht wird. Rufen Sie anschließend wie folgt die synchronize-Methode zum Löschen des Datensatzes aus Amazon Cognito auf:

dataset.clear() dataset.synchronize()

JavaScript

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

Unity

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

Um einen Schlüssel aus einem Datensatz zu löschen, verwenden Sie Remove wie folgt:

dataset.Remove("myKey");

Xamarin

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

Um einen Datensatz zu löschen, rufen Sie zuerst die Methode auf, mit der dieser aus dem lokalen Speicher gelöscht wird. Rufen Sie anschließend wie folgt die synchronize-Methode zum Löschen des Datensatzes aus Amazon Cognito auf:

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

Lesen und Schreiben von Daten in Datensätze

Amazon-Cognito-Datensätze fungieren als Wörterbücher, auf deren Werte mit einem Schlüssel zugegriffen werden kann: Sie können die Schlüssel und Werte eines Datensatzes wie in den folgenden Beispielen gezeigt lesen, hinzufügen oder ändern, als wäre der Datensatz ein Wörterbuch.

Beachten Sie, dass sich die von Ihnen in einen Datensatz geschriebenen Werte nur auf die lokale, zwischengespeicherte Kopie der Daten auswirken, bis Sie die Synchronisierungsmethode aufrufen.

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

Verwenden Sie die remove-Methode zum Entfernen von Schlüsseln aus einem Datensatz:

dataset.remove("myKey");

iOS – Objective-C

Um einen Schlüssel aus einem Datensatz zu löschen, verwenden Sie removeObjectForKey wie folgt:

[dataset removeObjectForKey:@"myKey"];

iOS – Swift

Um einen Schlüssel aus einem Datensatz zu löschen, verwenden Sie removeObjectForKey wie folgt:

dataset.removeObjectForKey("myKey")

Unity

Um einen Schlüssel aus einem Datensatz zu löschen, verwenden Sie Remove wie folgt:

dataset.Remove("myKey");

Xamarin

Sie können Remove zum Löschen eines Schlüssels aus einer Datenbank verwenden.

dataset.Remove("myKey");

Synchronisieren lokaler Daten mit dem Sync Store

Android

Die synchronize-Methode vergleicht lokal zwischengespeicherte Daten mit den im Amazon-Cognito-Sync-Store gespeicherten Daten. Remote-Änderungen werden aus dem Amazon-Cognito-Sync-Store entnommen; Konfliktauflösung wird aufgerufen, wenn irgendwelche Konflikte auftreten, und aktualisierte Werte auf dem Gerät werden per Push-Verfahren an den Service weitergeleitet. Zum Synchronisieren des Datensatzes rufen Sie die synchronize-Methode auf:

dataset.synchronize(syncCallback);

Die synchronize-Methode erhält eine Implementierung der SyncCallback-Schnittstelle, die im Folgenden näher erörtert wird.

Die synchronizeOnConnectivity()-Methode versucht die Synchronisierung, wenn eine Verbindung verfügbar ist. Wenn umgehend Konnektivität verfügbar ist, verhält sich synchronizeOnConnectivity() wie synchronize(). Andernfalls überwacht es auf Änderungen in der Konnektivität und führt eine Synchronisierung durch, sobald eine Verbindung verfügbar ist. Wenn synchronizeOnConnectivity() mehrere Male aufgerufen wird, wird nur die letzte Synchronisationsanforderung behalten, und nur der letzte Rückruf wird ausgelöst. Wenn für den Datensatz oder die Rückruffunktion eine Speicherbereinigung durchgeführt wurde, erfolgt mit dieser Methode keine Synchronisierung, und der Rückruf wird nicht ausgelöst.

Weitere Informationen zur Datensatzsynchronisierung und den verschiedenen Rückrufen finden Sie unter Bearbeitung von Rückrufen bei Ereignissen.

iOS – Objective-C

Die synchronize-Methode vergleicht lokal zwischengespeicherte Daten mit den im Amazon-Cognito-Sync-Store gespeicherten Daten. Remote-Änderungen werden aus dem Amazon-Cognito-Sync-Store entnommen; Konfliktauflösung wird aufgerufen, wenn irgendwelche Konflikte auftreten, und aktualisierte Werte auf dem Gerät werden per Push-Verfahren an den Service weitergeleitet. Zum Synchronisieren des Datensatzes rufen Sie die synchronize-Methode auf:

Die synchronize-Methode ist asynchron und gibt ein AWSTask-Objekt zur Verarbeitung der Antwort zurück:

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

Die synchronizeOnConnectivity-Methode versucht die Synchronisierung, wenn auf dem Gerät eine Verbindung verfügbar ist. Zunächst prüft synchronizeOnConnectivity auf Konnektivität und ruft sofort die Synchronisierung auf, wenn das Gerät online ist, und gibt das mit dem Versuch verknüpfte AWSTask-Objekt zurück.

Wenn das Gerät offline ist, plant synchronizeOnConnectivity 1) eine Synchronisierung, wenn das Gerät das nächste Mal online ist und 2) gibt ein AWSTask-Objekt mit einem nil-Ergebnis zurück. Die geplante Synchronisierung ist nur für den Lebenszyklus des Datensatzes gültig. Die Daten werden nicht synchronisiert, wenn die App beendet wird, bevor die Konnektivität wiederhergestellt wurde. Wenn Sie benachrichtigt werden sollen, wenn Ereignisse während der geplanten Synchronisierung auftreten, müssen Sie Beobachter der in gefundenen Benachrichtigungen hinzufügen AWSCognito.

Weitere Informationen zur Datensatzsynchronisierung und den verschiedenen Rückrufen finden Sie unter Bearbeitung von Rückrufen bei Ereignissen.

iOS – Swift

Die synchronize-Methode vergleicht lokal zwischengespeicherte Daten mit den im Amazon-Cognito-Sync-Store gespeicherten Daten. Remote-Änderungen werden aus dem Amazon-Cognito-Sync-Store entnommen; Konfliktauflösung wird aufgerufen, wenn irgendwelche Konflikte auftreten, und aktualisierte Werte auf dem Gerät werden per Push-Verfahren an den Service weitergeleitet. Zum Synchronisieren des Datensatzes rufen Sie die synchronize-Methode auf:

Die synchronize-Methode ist asynchron und gibt ein AWSTask-Objekt zur Verarbeitung der Antwort zurück:

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

Die synchronizeOnConnectivity-Methode versucht die Synchronisierung, wenn auf dem Gerät eine Verbindung verfügbar ist. Zunächst prüft synchronizeOnConnectivity auf Konnektivität und ruft sofort synchronize auf, wenn das Gerät online ist, und gibt das mit dem Versuch verknüpfte AWSTask-Objekt zurück.

Wenn das Gerät offline ist, plant synchronizeOnConnectivity 1) eine Synchronisierung, wenn das Gerät das nächste Mal online ist und 2) gibt ein AWSTask-Objekt mit einem nil-Ergebnis zurück. Die geplante Synchronisierung ist nur für den Lebenszyklus des Datensatzes gültig. Die Daten werden nicht synchronisiert, wenn die App beendet wird, bevor die Konnektivität wiederhergestellt wurde. Wenn Sie benachrichtigt werden sollen, wenn Ereignisse während der geplanten Synchronisierung auftreten, müssen Sie Beobachter der in gefundenen Benachrichtigungen hinzufügen AWSCognito.

Weitere Informationen zur Datensatzsynchronisierung und den verschiedenen Rückrufen finden Sie unter Bearbeitung von Rückrufen bei Ereignissen.

JavaScript

Die synchronize-Methode vergleicht lokal zwischengespeicherte Daten mit den im Amazon-Cognito-Sync-Store gespeicherten Daten. Remote-Änderungen werden aus dem Amazon-Cognito-Sync-Store entnommen; Konfliktauflösung wird aufgerufen, wenn irgendwelche Konflikte auftreten, und aktualisierte Werte auf dem Gerät werden per Push-Verfahren an den Service weitergeleitet. Zum Synchronisieren des Datensatzes rufen Sie die synchronize-Methode auf:

dataset.synchronize();

Weitere Informationen zur Datensatzsynchronisierung und den verschiedenen Rückrufen finden Sie unter Bearbeitung von Rückrufen bei Ereignissen.

Unity

Die Synchronisations-Methode vergleicht lokal zwischengespeicherte Daten mit den im Amazon-Cognito-Sync-Store gespeicherten Daten. Remote-Änderungen werden aus dem Amazon-Cognito-Sync-Store entnommen; Konfliktauflösung wird aufgerufen, wenn irgendwelche Konflikte auftreten, und aktualisierte Werte auf dem Gerät werden per Push-Verfahren an den Service weitergeleitet. Zum Synchronisieren des Datensatzes rufen Sie die synchronize-Methode auf:

dataset.Synchronize();

Die Synchronisierung erfolgt asynchron, und zuletzt wird einer der verschiedenen Callbacks aufgerufen, die Sie im Datensatz angeben können.

Weitere Informationen zur Datensatzsynchronisierung und den verschiedenen Rückrufen finden Sie unter Bearbeitung von Rückrufen bei Ereignissen.

Xamarin

Die synchronize-Methode vergleicht lokal zwischengespeicherte Daten mit den im Amazon-Cognito-Sync-Store gespeicherten Daten. Remote-Änderungen werden aus dem Amazon-Cognito-Sync-Store entnommen; Konfliktauflösung wird aufgerufen, wenn irgendwelche Konflikte auftreten, und aktualisierte Werte auf dem Gerät werden per Push-Verfahren an den Service weitergeleitet. Zum Synchronisieren des Datensatzes rufen Sie die synchronize-Methode auf:

dataset.SynchronizeAsync();

Weitere Informationen zur Datensatzsynchronisierung und den verschiedenen Rückrufen finden Sie unter Bearbeitung von Rückrufen bei Ereignissen.