문서 메뉴

문서 홈애플리케이션 개발Atlas Device SDK

앱에 Device Sync 추가 - .NET SDK

이 페이지의 내용

  • App Services 백엔드에 연결
  • 사용자 인증
  • 동기화된 Realm 열기
  • Realm 사용
1

App Services UI에서 찾을 수 있는 앱의 앱 ID를 전달합니다.

app = App.Create(myRealmAppId);
2

클라이언트 프로젝트에서 사용자를 인증합니다 . 여기서는 익명 인증을 사용합니다.

var user = await app.LogInAsync(Credentials.Anonymous());
3

Realm을 동기화된 Realm으로 열려면 동기화된 Realm이 열기 전에 데이터를 다운로드할지 여부를 지정할 수 있습니다. 여기서는 Flexible Sync 을 사용하며 SDK가 영역을 열기 전에 항상 최신 업데이트를 다운로드하도록 지정합니다. 또한 초기 구독으로 영역을 부트스트랩합니다.

var config = new FlexibleSyncConfiguration(app.CurrentUser)
{
PopulateInitialSubscriptions = (realm) =>
{
var myItems = realm.All<Item>().Where(n => n.OwnerId == myUserId);
realm.Subscriptions.Add(myItems);
}
};
// The process will complete when all the user's items have been downloaded.
var realm = await Realm.GetInstanceAsync(config);

동기화된 Realm에서 변경 사항을 읽고, 쓰고, 감시 하는 구문은 동기화되지 않은 Realm의 구문과 동일합니다. 로컬 데이터로 작업하는 동안 백그라운드 스레드는 변경 세트를 효율적으로 통합, 업로드 및 다운로드합니다.

다음 코드는 새 Task 객체를 만들어 영역에 추가하는 두 가지 방법을 보여 줍니다.

var testItem = new Item
{
Name = "Do this thing",
Status = ItemStatus.Open.ToString(),
Assignee = "Aimee"
};
await realm.WriteAsync(() =>
{
realm.Add(testItem);
});
// Or
var testItem2 =
await realm.WriteAsync(() =>
{
return realm.Add<Item>(new Item
{
Name = "Do this thing, too",
Status = ItemStatus.InProgress.ToString(),
Assignee = "Satya"
});
}
);

중요

동기화를 사용할 때 메인 스레드에서 동기식 쓰기 방지

Realm은 백그라운드 스레드에서 동기화 통합을 수행하기 때문에 메인 스레드에서 Realm에 동기식 쓰기를 수행하면 백그라운드 동기화 스레드가 쓰기 트랜잭션(write transaction)을 완료할 때까지 UI가 중단되는 것처럼 보일 가능성이 약간 있습니다. 따라서 Realm Mobile Sync를 사용할 때는 메인 스레드에서 동기 쓰기를 수행하지 않고 realm.WriteAsync 와 함께 비동기 쓰기를 사용하는 것이 좋습니다.

← 장치 간 데이터 동기화 - .NET SDK