데이터 동기화 - Amazon Cognito

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

데이터 동기화

Amazon Cognito Sync를 처음 사용하는 경우 AWS AppSync를 사용하세요. Amazon Cognito Sync와 마찬가지로, AWS AppSync도 디바이스 사이에서 애플리케이션 데이터를 동기화하는 서비스입니다.

앱 기본 설정이나 게임 상태 같은 사용자 데이터를 동기화할 수 있습니다. 또한 이러한 기능을 더욱 확장해, 복수의 사용자가 공유 데이터를 실시간으로 동기화하고 협업할 수 있게 합니다.

Amazon Cognito를 사용하면 키-값 쌍이 포함된 데이터 세트에 사용자 데이터를 저장할 수 있습니다. Amazon Cognito는 이 데이터를 자격 증명 풀의 자격 증명과 연결하여 앱이 로그인 및 디바이스 전반에서 액세스할 수 있도록 합니다. Amazon Cognito 서비스와 최종 사용자의 디바이스 간에 이 데이터를 동기화하려면 동기화 메서드를 호출합니다. 각 데이터 세트의 최대 크기는 1MB일 수 있습니다. 자격 증명에 데이터 세트를 최대 20개까지 연결할 수 있습니다.

Amazon Cognito Sync 클라이언트는 자격 증명 데이터에 대한 로컬 캐시를 생성합니다. 앱에서 키를 읽고 쓸 때 이 로컬 캐시와 통신합니다. 이렇게 통신하면 디바이스에서 수행한 모든 변경 사항을 오프라인 상태에서도 디바이스에서 즉시 사용할 수 있습니다. 동기화 메서드가 호출되면 서비스에서 변경 사항을 디바이스로 가져오고 모든 로컬 변경 사항이 서비스로 푸시됩니다. 이때 변경 사항은 다른 디바이스에서 동기화하는 데 사용 가능합니다.

Amazon Cognito Sync 클라이언트 초기화

Amazon Cognito Sync 클라이언트를 초기화하려면 먼저 자격 증명 공급자를 생성해야 합니다. 자격 증명 공급자는 앱에서 AWS 리소스에 액세스할 수 있는 임시 AWS 자격 증명을 취득합니다. 필요한 헤더 파일도 가져와야 합니다. 다음 단계를 사용하여 Amazon Cognito Sync 클라이언트를 초기화합니다.

Android

  1. 자격 증명 얻기의 지침에 따라 자격 증명 공급자를 생성합니다.

  2. 다음과 같이 Amazon Cognito 패키지를 가져옵니다. import com.amazonaws.mobileconnectors.cognito.*;

  3. Amazon Cognito Sync를 초기화합니다. 다음과 같이 Android 앱 컨텍스트, 자격 증명 풀 ID, AWS 리전 및 초기화된 Amazon Cognito 자격 증명 공급자를 전달합니다.

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

iOS - Objective-C

  1. 자격 증명 얻기의 지침에 따라 자격 증명 공급자를 생성합니다.

  2. 다음과 같이 AWSCoreCognito를 가져오고 AWSCognito를 초기화합니다.

    #import <AWSiOSSDKv2/AWSCore.h> #import <AWSCognitoSync/Cognito.h> AWSCognito *syncClient = [AWSCognito defaultCognito];
  3. CocoaPods를 사용하는 경우 <AWSiOSSDKv2/AWSCore.h>AWSCore.h로 바꿉니다. Amazon Cognito 가져오기에 대해 동일한 구문을 따릅니다.

iOS - Swift

  1. 자격 증명 얻기의 지침에 따라 자격 증명 공급자를 생성합니다.

  2. 다음과 같이 AWSCognito를 가져오고 초기화합니다.

    import AWSCognito let syncClient = AWSCognito.default()!

JavaScript

  1. Amazon Cognito Sync Manager for JavaScript를 다운로드합니다.

  2. 프로젝트에 Sync Manager 라이브러리를 포함합니다.

  3. 자격 증명 얻기의 지침에 따라 자격 증명 공급자를 생성합니다.

  4. 다음과 같이 Sync 관리자를 초기화합니다.

    var syncManager = new AWS.CognitoSyncManager();

Unity

  1. 자격 증명 얻기의 지침에 따라 CognitoAWSCredentials의 인스턴스를 생성합니다.

  2. CognitoSyncManager의 인스턴스를 만듭니다. 다음과 같이 CognitoAwsCredentials 객체 및 AmazonCognitoSyncConfig를 전달하고 최소한 리전 세트를 포함합니다.

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

Xamarin

  1. 자격 증명 얻기의 지침에 따라 CognitoAWSCredentials의 인스턴스를 생성합니다.

  2. CognitoSyncManager의 인스턴스를 만듭니다. 다음과 같이 CognitoAwsCredentials 객체 및 AmazonCognitoSyncConfig를 전달하고 최소한 리전 세트를 포함합니다.

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

데이터 집합 이해

Amazon Cognito는 사용자 프로필 데이터를 데이터 세트로 구성합니다. 각 데이터 세트에는 최대 1MB의 데이터가 키 값 쌍의 양식으로 포함될 수 있습니다. 데이터 세트는 동기화할 수 있는 가장 세분화된 엔터티입니다. 데이터 세트에서 수행된 읽기 및 쓰기 작업은 동기화 메서드가 호출될 때까지 로컬 스토어에만 영향을 줍니다. Amazon Cognito는 고유한 문자열로 데이터 세트를 식별합니다. 다음과 같이 새 데이터 세트를 생성하거나 기존 데이터 세트를 열 수 있습니다.

Android

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

데이터 세트를 삭제하려면 다음과 같이 먼저 메서드를 호출하여 로컬 스토리지에서 데이터 세트를 제거한 다음 synchronize 메서드를 호출하여 Amazon Cognito에서 데이터 세트를 삭제합니다.

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

iOS - Objective-C

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

데이터 세트를 삭제하려면 다음과 같이 먼저 메서드를 호출하여 로컬 스토리지에서 데이터 세트를 제거한 다음 synchronize 메서드를 호출하여 Amazon Cognito에서 데이터 세트를 삭제합니다.

[dataset clear]; [dataset synchronize];

iOS - Swift

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

데이터 세트를 삭제하려면 다음과 같이 먼저 메서드를 호출하여 로컬 스토리지에서 데이터 세트를 제거한 다음 synchronize 메서드를 호출하여 Amazon Cognito에서 데이터 세트를 삭제합니다.

dataset.clear() dataset.synchronize()

JavaScript

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

Unity

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

데이터 세트에서 키를 삭제하려면 다음과 같이 Remove를 사용합니다.

dataset.Remove("myKey");

Xamarin

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

데이터 세트를 삭제하려면 다음과 같이 먼저 메서드를 호출하여 로컬 스토리지에서 데이터 세트를 제거한 다음 synchronize 메서드를 호출하여 Amazon Cognito에서 데이터 세트를 삭제합니다.

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

데이터 집합의 데이터 읽기 및 쓰기

Amazon Cognito 데이터 세트는 키를 통해 값에 액세스할 수 있는 사전으로 작동합니다. 다음 예와 같이 데이터 세트가 사전인 것처럼 데이터 세트의 키와 값을 읽거나 추가하거나 수정할 수 있습니다.

데이터 세트에 작성된 값은 동기화 메서드를 호출할 때까지 로컬로 캐시된 데이터의 사본에만 영향을 줍니다.

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

데이터 세트에서 키를 제거하려면 다음과 같이 remove 메서드를 사용합니다.

dataset.remove("myKey");

iOS - Objective-C

데이터 세트에서 키를 삭제하려면 다음과 같이 removeObjectForKey를 사용합니다.

[dataset removeObjectForKey:@"myKey"];

iOS - Swift

데이터 세트에서 키를 삭제하려면 다음과 같이 removeObjectForKey를 사용합니다.

dataset.removeObjectForKey("myKey")

Unity

데이터 세트에서 키를 삭제하려면 다음과 같이 Remove를 사용합니다.

dataset.Remove("myKey");

Xamarin

Remove를 사용하여 데이터 세트에서 키를 삭제할 수 있습니다.

dataset.Remove("myKey");

로컬 데이터를 동기화 스토어와 동기화

Android

synchronize 메서드는 로컬로 캐시된 데이터를 Amazon Cognito Sync 스토어에 저장된 데이터와 비교합니다. Amazon Cognito Sync 스토어에서 원격 변경 사항을 가져오고, 충돌이 발생할 경우 충돌 해결책이 호출되며, 디바이스의 업데이트된 값이 서비스로 푸시됩니다. 데이터 세트를 동기화하려면 해당 synchronize 메서드를 호출합니다.

dataset.synchronize(syncCallback);

아래 설명과 같이 synchronize 메서드는 SyncCallback 인터페이스의 구현을 받습니다.

synchronizeOnConnectivity() 메서드는 연결을 사용할 수 있는 경우 동기화하려고 시도합니다. 연결이 즉시 사용 가능하게 되면 synchronizeOnConnectivity()synchronize()처럼 동작합니다. 그렇지 않으면 연결 변경 사항을 모니터링하고 연결이 사용 가능하게 되면 동기화를 수행합니다. synchronizeOnConnectivity()가 여러 번 호출되면 마지막 동기화 요청만 유지되며 마지막 콜백만 실행됩니다. 데이터 세트 또는 콜백이 가비지 수집인 경우 이 메서드는 동기화를 수행하지 않으며 콜백이 실행되지 않습니다.

데이터 세트 동기화 및 다른 콜백에 대한 자세한 내용은 콜백 처리 섹션을 참조하세요.

iOS - Objective-C

synchronize 메서드는 로컬로 캐시된 데이터를 Amazon Cognito Sync 스토어에 저장된 데이터와 비교합니다. Amazon Cognito Sync 스토어에서 원격 변경 사항을 가져오고, 충돌이 발생할 경우 충돌 해결책이 호출되며, 디바이스의 업데이트된 값이 서비스로 푸시됩니다. 데이터 세트를 동기화하려면 해당 synchronize 메서드를 호출합니다.

synchronize 메서드는 비동기식이며 AWSTask 객체를 반환하여 응답을 처리합니다.

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

synchronizeOnConnectivity 메서드는 디바이스가 연결된 경우 동기화하려고 시도합니다. 먼저 synchronizeOnConnectivity는 연결을 확인하며, 디바이스가 온라인 상태인 경우 즉시 synchronize를 호출하고 시도와 연관된 AWSTask 객체를 반환합니다.

디바이스가 오프라인인 경우 synchronizeOnConnectivity는 1) 다음에 디바이스가 온라인 상태가 될 때 동기화를 예약하며 2) nil 결과와 함께 AWSTask를 반환합니다. 예약된 동기화는 데이터 세트 객체의 수명 주기 동안 유효합니다. 다시 연결되기 전에 앱이 종료된 경우 데이터가 동기화되지 않습니다. 예약된 동기화 중 이벤트가 발생할 때 알림을 받으려면 AWSCognito에 있는 알림의 관찰자를 추가해야 합니다.

데이터 세트 동기화 및 다른 콜백에 대한 자세한 내용은 콜백 처리 섹션을 참조하세요.

iOS - Swift

synchronize 메서드는 로컬로 캐시된 데이터를 Amazon Cognito Sync 스토어에 저장된 데이터와 비교합니다. Amazon Cognito Sync 스토어에서 원격 변경 사항을 가져오고, 충돌이 발생할 경우 충돌 해결책이 호출되며, 디바이스의 업데이트된 값이 서비스로 푸시됩니다. 데이터 세트를 동기화하려면 해당 synchronize 메서드를 호출합니다.

synchronize 메서드는 비동기식이며 AWSTask 객체를 반환하여 응답을 처리합니다.

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

synchronizeOnConnectivity 메서드는 디바이스가 연결된 경우 동기화하려고 시도합니다. 먼저 synchronizeOnConnectivity는 연결을 확인하며, 디바이스가 온라인 상태인 경우 즉시 synchronize를 호출하고 시도와 연관된 AWSTask 객체를 반환합니다.

디바이스가 오프라인인 경우 synchronizeOnConnectivity는 1) 다음에 디바이스가 온라인 상태가 될 때 동기화를 예약하며 2) nil 결과와 함께 AWSTask 객체를 반환합니다. 예약된 동기화는 데이터 세트 객체의 수명 주기 동안 유효합니다. 다시 연결되기 전에 앱이 종료된 경우 데이터가 동기화되지 않습니다. 예약된 동기화 중 이벤트가 발생할 때 알림을 받으려면 AWSCognito에 있는 알림의 관찰자를 추가해야 합니다.

데이터 세트 동기화 및 다른 콜백에 대한 자세한 내용은 콜백 처리 섹션을 참조하세요.

JavaScript

synchronize 메서드는 로컬로 캐시된 데이터를 Amazon Cognito Sync 스토어에 저장된 데이터와 비교합니다. Amazon Cognito Sync 스토어에서 원격 변경 사항을 가져오고, 충돌이 발생할 경우 충돌 해결책이 호출되며, 디바이스의 업데이트된 값이 서비스로 푸시됩니다. 데이터 세트를 동기화하려면 해당 synchronize 메서드를 호출합니다.

dataset.synchronize();

데이터 세트 동기화 및 다른 콜백에 대한 자세한 내용은 콜백 처리 섹션을 참조하세요.

Unity

synchronize 메서드는 로컬로 캐시된 데이터를 Amazon Cognito Sync 스토어에 저장된 데이터와 비교합니다. Amazon Cognito Sync 스토어에서 원격 변경 사항을 가져오고, 충돌이 발생할 경우 충돌 해결책이 호출되며, 디바이스의 업데이트된 값이 서비스로 푸시됩니다. 데이터 세트를 동기화하려면 해당 synchronize 메서드를 호출합니다.

dataset.Synchronize();

동기화는 비동기식으로 실행되며 데이터 세트에서 지정할 수 있는 여러 콜백 중 하나를 호출합니다.

데이터 세트 동기화 및 다른 콜백에 대한 자세한 내용은 콜백 처리 섹션을 참조하세요.

Xamarin

synchronize 메서드는 로컬로 캐시된 데이터를 Amazon Cognito Sync 스토어에 저장된 데이터와 비교합니다. Amazon Cognito Sync 스토어에서 원격 변경 사항을 가져오고, 충돌이 발생할 경우 충돌 해결책이 호출되며, 디바이스의 업데이트된 값이 서비스로 푸시됩니다. 데이터 세트를 동기화하려면 해당 synchronize 메서드를 호출합니다.

dataset.SynchronizeAsync();

데이터 세트 동기화 및 다른 콜백에 대한 자세한 내용은 콜백 처리 섹션을 참조하세요.