

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

# Menyinkronkan data di seluruh klien
<a name="synchronizing-data"></a>

****  
Jika Anda baru mengenal Amazon Cognito Sync, gunakan [AWS AppSync](https://aws.amazon.com/appsync/). Seperti Amazon Cognito Sync, AWS AppSync adalah layanan untuk menyinkronkan data aplikasi di seluruh perangkat.  
Hal ini memungkinkan data pengguna seperti preferensi aplikasi atau game state agar dapat disinkronkan. Hal ini juga memperluas kemampuan ini dengan memungkinkan beberapa pengguna untuk menyinkronkan dan berkolaborasi secara langsung pada data bersama.

Dengan Amazon Cognito, Anda dapat menyimpan data pengguna dalam kumpulan data yang berisi pasangan nilai kunci. Amazon Cognito mengaitkan data ini dengan identitas di kumpulan identitas Anda sehingga aplikasi Anda dapat mengaksesnya di seluruh login dan perangkat. Untuk menyinkronkan data ini di antara layanan Amazon Cognito dan perangkat pengguna akhir, gunakan metode sinkronisasi. Setiap set data dapat memiliki ukuran maksimum 1 MB. Anda dapat mengaitkan hingga 20 set data dengan identitas.

Amazon Cognito Sync client membuat cache lokal untuk data identitas. Saat aplikasi Anda membaca dan menulis kunci, aplikasi akan berkomunikasi dengan cache lokal ini. Komunikasi ini menjamin bahwa semua perubahan yang Anda buat pada perangkat segera tersedia di perangkat, bahkan ketika Anda sedang offline. Ketika metode sinkronisasi dipanggil, perubahan dari layanan ditarik ke perangkat, dan setiap perubahan lokal didorong ke layanan. Pada titik ini, perubahan tersedia untuk perangkat lain untuk disinkronkan.

## Menginisialisasi klien Sinkronisasi Amazon Cognito
<a name="initializing-client"></a>

Untuk menginisialisasi klien Amazon Cognito Sync, Anda harus terlebih dahulu membuat penyedia kredensi. Penyedia kredensial memperoleh AWS kredensil sementara untuk memungkinkan aplikasi Anda mengakses sumber daya Anda. AWS Anda juga harus mengimpor file header yang diperlukan. Gunakan langkah-langkah berikut untuk menginisialisasi Amazon Cognito Sync client.

### Android
<a name="initialize-cog-sync-1.android"></a>

1. Buat penyedia kredensials, ikuti petunjuk di [Mendapatkan kredensil](getting-credentials.md).

1. Impor paket Amazon Cognito sebagai berikut: `import com.amazonaws.mobileconnectors.cognito.*;`

1. Inisialisasi Sinkronisasi Amazon Cognito. Teruskan konteks aplikasi Android, ID kumpulan identitas Wilayah AWS, dan penyedia kredensi Amazon Cognito yang diinisialisasi sebagai berikut:

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

### iOS - Objective-C
<a name="initialize-cog-sync-1.ios-objc"></a>

1. Buat penyedia kredensials, ikuti petunjuk di [Mendapatkan kredensil](getting-credentials.md).

1. Impor `AWSCore` dan`Cognito`, dan inisialisasi `AWSCognito` sebagai berikut:

   ```
   #import <AWSiOSSDKv2/AWSCore.h>
   #import <AWSCognitoSync/Cognito.h>
   
   AWSCognito *syncClient = [AWSCognito defaultCognito];
   ```

1. Jika Anda menggunakan CocoaPods, ganti `<AWSiOSSDKv2/AWSCore.h>` dengan`AWSCore.h`. Ikuti sintaks yang sama untuk impor Amazon Cognito.

### iOS - Swift
<a name="initialize-cog-sync-1.ios-swift"></a>

1. Buat penyedia kredensials, ikuti petunjuk di [Mendapatkan kredensil](getting-credentials.md).

1. Impor dan inisialisasi `AWSCognito` sebagai berikut:

   ```
   import AWSCognito
   let syncClient = AWSCognito.default()!
   ```

### JavaScript
<a name="initialize-cog-sync-1.javascript"></a>

1. Unduh [Manajer Sinkronisasi Amazon Cognito](https://github.com/aws/amazon-cognito-js) untuk. JavaScript

1. Sertakan perpustakaan Sync Manager di proyek Anda.

1. Buat penyedia kredensials, ikuti petunjuk di [Mendapatkan kredensil](getting-credentials.md).

1. Inisialisasi Manajer Sinkronisasi sebagai berikut:

   ```
   var syncManager = new AWS.CognitoSyncManager();
   ```

### Unity
<a name="initialize-cog-sync-1.unity"></a>

1. Buat instance dari`CognitoAWSCredentials`, mengikuti instruksi di[Mendapatkan kredensil](getting-credentials.md).

1. Buat instans `CognitoSyncManager`. Lewati `CognitoAwsCredentials` objek dan a`AmazonCognitoSyncConfig`, dan sertakan setidaknya set Region, sebagai berikut: 

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

### Xamarin
<a name="initialize-cog-sync-1.xamarin"></a>

1. Buat instance dari`CognitoAWSCredentials`, mengikuti instruksi di[Mendapatkan kredensil](getting-credentials.md).

1. Buat instans `CognitoSyncManager`. Lewati `CognitoAwsCredentials` objek dan a`AmazonCognitoSyncConfig`, dan sertakan setidaknya set Region, sebagai berikut: 

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

## Memahami kumpulan data
<a name="understanding-datasets"></a>



Amazon Cognito mengatur data profil pengguna ke dalam kumpulan data. Setiap set data dapat berisi hingga 1MB data dalam bentuk pasangan nilai kunci. Dataset adalah entitas paling terperinci yang dapat Anda sinkronkan. Membaca dan menulis operasi yang dilakukan pada set data hanya mempengaruhi toko lokal sampai metode sinkronisasi dipanggil. Amazon Cognito mengidentifikasi kumpulan data dengan string unik. Anda dapat membuat kumpulan data baru atau membuka yang sudah ada sebagai berikut.

### Android
<a name="understanding-datasets-1.android"></a>

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

Untuk menghapus kumpulan data, pertama-tama panggil metode untuk menghapusnya dari penyimpanan lokal, lalu panggil `synchronize` metode untuk menghapus kumpulan data dari Amazon Cognito sebagai berikut:

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

### iOS - Objective-C
<a name="understanding-datasets-1.ios-objc"></a>

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

Untuk menghapus kumpulan data, pertama-tama panggil metode untuk menghapusnya dari penyimpanan lokal, lalu panggil `synchronize` metode untuk menghapus kumpulan data dari Amazon Cognito sebagai berikut:

```
[dataset clear];
[dataset synchronize];
```

### iOS - Swift
<a name="understanding-datasets-1.ios-swift"></a>

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

Untuk menghapus kumpulan data, pertama-tama panggil metode untuk menghapusnya dari penyimpanan lokal, lalu panggil `synchronize` metode sebagai berikut: untuk menghapus kumpulan data dari Amazon Cognito:

```
dataset.clear()
dataset.synchronize()
```

### JavaScript
<a name="understanding-datasets-1.javascript"></a>

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

### Unity
<a name="understanding-datasets-1.unity"></a>

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

Untuk menghapus kunci dari kumpulan data, gunakan `Remove` sebagai berikut:

```
dataset.Remove("myKey");
```

### Xamarin
<a name="understanding-datasets-1.xamarin"></a>

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

Untuk menghapus kumpulan data, pertama-tama panggil metode untuk menghapusnya dari penyimpanan lokal, lalu panggil `synchronize` metode untuk menghapus kumpulan data dari Amazon Cognito sebagai berikut:

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

## Membaca dan menulis data dalam kumpulan data
<a name="reading-and-writing-data"></a>

Set data Amazon Cognito berfungsi sebagai kamus, dengan nilai yang dapat diakses oleh kunci. Anda dapat membaca, menambah, atau memodifikasi kunci dan nilai dari dataset seperti jika dataset adalah kamus, seperti yang ditunjukkan dalam contoh berikut.

Perhatikan bahwa nilai yang Anda tulis ke kumpulan data hanya memengaruhi salinan data lokal yang di-cache hingga Anda memanggil metode sinkronisasi.

### Android
<a name="reading-and-writing-data-1.android"></a>

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

### iOS - Objective-C
<a name="reading-and-writing-data-1.ios-objc"></a>

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

### iOS - Swift
<a name="reading-and-writing-data-1.ios-swift"></a>

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

### JavaScript
<a name="reading-and-writing-data-1.javascript"></a>



```
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
<a name="reading-and-writing-data-1.unity"></a>

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

### Xamarin
<a name="reading-and-writing-data-1.xamarin"></a>



```
//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
<a name="reading-and-writing-data-2.android"></a>

Untuk menghapus kunci dari kumpulan data, gunakan `remove` metode sebagai berikut:

```
dataset.remove("myKey");
```

### iOS - Objective-C
<a name="reading-and-writing-data-2.ios-objc"></a>

Untuk menghapus kunci dari kumpulan data, gunakan `removeObjectForKey` sebagai berikut:

```
[dataset removeObjectForKey:@"myKey"];
```

### iOS - Swift
<a name="reading-and-writing-data-2.ios-swift"></a>

Untuk menghapus kunci dari kumpulan data, gunakan `removeObjectForKey` sebagai berikut:

```
dataset.removeObjectForKey("myKey")
```

### Unity
<a name="reading-and-writing-data-2.unity"></a>

Untuk menghapus kunci dari kumpulan data, gunakan `Remove` sebagai berikut:

```
dataset.Remove("myKey");
```

### Xamarin
<a name="reading-and-writing-data-2.xamarin"></a>

Anda dapat menggunakan `Remove` untuk menghapus kunci dari set data:

```
dataset.Remove("myKey");
```

## Menyinkronkan data lokal dengan toko sinkronisasi
<a name="synchronizing-local-data"></a>



### Android
<a name="synchronizing-local-data-1.android"></a>

Metode `synchronize` membandingkan data yang di-cache-kan secara lokal dengan data yang disimpan di Amazon Cognito Sync store. Perubahan jarak jauh diambil dari Amazon Cognito Sync store; resolusi konflik dipanggil jika ada konflik yang terjadi; dan nilai yang diperbarui pada perangkat didorong ke layanan. Untuk menyinkronkan set data, panggil metode `synchronize`:

```
dataset.synchronize(syncCallback);
```

Metode `synchronize` menerima implementasi dari antarmuka `SyncCallback`, yang dibahas di bawah ini.

Metode `synchronizeOnConnectivity()` mencoba untuk menyinkronkan ketika konektivitas tersedia. Jika konektivitas segera tersedia, `synchronizeOnConnectivity()` berperilaku seperti `synchronize()`. Jika tidak, metode ini memantau perubahan konektivitas dan melakukan sinkronisasi setelah konektivitas tersedia. Jika `synchronizeOnConnectivity()`dipanggil beberapa kali, hanya permintaan sinkronisasi terakhir yang disimpan, dan hanya panggilan balik terakhir yang akan dipicu. Jika set data atau callback adalah kumpulan sampah, metode ini tidak akan melakukan sinkronisasi, dan callback tidak akan dipicu.

Untuk belajar lebih lanjut tentang sinkronisasi set data dan callback yang berbeda, lihat [Menangani callback acara](handling-callbacks.md).

### iOS - Objective-C
<a name="synchronizing-local-data-1.ios-objc"></a>

Metode `synchronize` membandingkan data yang di-cache-kan secara lokal dengan data yang disimpan di Amazon Cognito Sync store. Perubahan jarak jauh diambil dari Amazon Cognito Sync store; resolusi konflik dipanggil jika ada konflik yang terjadi; dan nilai yang diperbarui pada perangkat didorong ke layanan. Untuk menyinkronkan set data, panggil metode `synchronize`:

Metode `synchronize` bersifat asinkron dan menampilkan objek `AWSTask` untuk menangani respons:

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

Metode `synchronizeOnConnectivity` mencoba untuk melakukan sinkronisasi ketika perangkat memiliki konektivitas. Pertama, `synchronizeOnConnectivity` memeriksa konektivitas dan, jika perangkat online, segera memanggil sinkronisasi dan menampilkan objek `AWSTask` yang terkait dengan upaya tersebut.

Jika perangkat sedang offline, `synchronizeOnConnectivity` 1) menjadwalkan sinkronisasi pada saat perangkat online kembali dan 2) mengembalikan `AWSTask` dengan hasil nihil. Sinkronisasi terjadwal hanya berlaku untuk siklus hidup pada objek set data. Data tidak akan disinkronkan jika aplikasi keluar sebelum konektivitas kembali. Jika Anda ingin diberi tahu saat peristiwa terjadi selama sinkronisasi terjadwal, Anda harus menambahkan pengamat notifikasi yang ditemukan di `AWSCognito`.

Untuk belajar lebih lanjut tentang sinkronisasi set data dan callback yang berbeda, lihat [Menangani callback acara](handling-callbacks.md).

### iOS - Swift
<a name="synchronizing-local-data-1.ios-swift"></a>

Metode `synchronize` membandingkan data yang di-cache-kan secara lokal dengan data yang disimpan di Amazon Cognito Sync store. Perubahan jarak jauh diambil dari Amazon Cognito Sync store; resolusi konflik dipanggil jika ada konflik yang terjadi; dan nilai yang diperbarui pada perangkat didorong ke layanan. Untuk menyinkronkan set data, panggil metode `synchronize`:

Metode `synchronize` bersifat asinkron dan menampilkan objek `AWSTask` untuk menangani respons:

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

Metode `synchronizeOnConnectivity` mencoba untuk melakukan sinkronisasi ketika perangkat memiliki konektivitas. Pertama, `synchronizeOnConnectivity` memeriksa konektivitas dan, jika perangkat online, segera memanggil `synchronize` dan menampilkan objek `AWSTask` yang terkait dengan upaya tersebut.

Jika perangkat sedang offline, `synchronizeOnConnectivity` 1) menjadwalkan sinkronisasi pada saat perangkat online kembali dan 2) mengembalikan objek `AWSTask` dengan hasil nihil. Sinkronisasi terjadwal hanya berlaku untuk siklus hidup pada objek set data. Data tidak akan disinkronkan jika aplikasi keluar sebelum konektivitas kembali. Jika Anda ingin diberi tahu saat peristiwa terjadi selama sinkronisasi terjadwal, Anda harus menambahkan pengamat notifikasi yang ditemukan di `AWSCognito`.

Untuk belajar lebih lanjut tentang sinkronisasi set data dan callback yang berbeda, lihat [Menangani callback acara](handling-callbacks.md).

### JavaScript
<a name="synchronizing-local-data-1.javascript"></a>

Metode `synchronize` membandingkan data yang di-cache-kan secara lokal dengan data yang disimpan di Amazon Cognito Sync store. Perubahan jarak jauh diambil dari Amazon Cognito Sync store; resolusi konflik dipanggil jika ada konflik yang terjadi; dan nilai yang diperbarui pada perangkat didorong ke layanan. Untuk menyinkronkan set data, panggil metode `synchronize`:

```
dataset.synchronize();
```

Untuk belajar lebih lanjut tentang sinkronisasi set data dan callback yang berbeda, lihat [Menangani callback acara](handling-callbacks.md).

### Unity
<a name="synchronizing-local-data-1.unity"></a>

Metode sinkronisasi membandingkan data yang di-cache-kan secara lokal dengan data yang disimpan di Amazon Cognito Sync store. Perubahan jarak jauh diambil dari Amazon Cognito Sync store; resolusi konflik dipanggil jika ada konflik yang terjadi; dan nilai yang diperbarui pada perangkat didorong ke layanan. Untuk menyinkronkan set data, panggil metode `synchronize`:

```
dataset.Synchronize();
```

Sinkronisasi akan berjalan secara asinkron dan akan berakhir dengan memanggil salah satu dari beberapa callback Anda dapat tentukan dalam Set data.

Untuk belajar lebih lanjut tentang sinkronisasi set data dan callback yang berbeda, lihat [Menangani callback acara](handling-callbacks.md).

### Xamarin
<a name="synchronizing-local-data-1.xamarin"></a>

Metode `synchronize` membandingkan data yang di-cache-kan secara lokal dengan data yang disimpan di Amazon Cognito Sync store. Perubahan jarak jauh diambil dari Amazon Cognito Sync store; resolusi konflik dipanggil jika ada konflik yang terjadi; dan nilai yang diperbarui pada perangkat didorong ke layanan. Untuk menyinkronkan set data, panggil metode `synchronize`:

```
dataset.SynchronizeAsync();
```

Untuk belajar lebih lanjut tentang sinkronisasi set data dan callback yang berbeda, lihat [Menangani callback acara](handling-callbacks.md).