Docs Menu
Docs Home
/ /
Atlas Device SDK
/ /

アプリに Device Sync を追加する - .NET SDK

項目一覧

  • App Services バックエンドへの接続
  • ユーザーの認証
  • 同期された Realm を開く
  • Realm の使用
1

アプリのアプリ ID を渡します。このアプリ IDは、App Services UI で確認できます。

app = App.Create(myRealmAppId);
2

クライアント プロジェクトでユーザーを認証します。 ここでは、匿名認証を使用します。

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

Realm を同期された Realm として開くには、同期された Realm が開く前にデータをダウンロードするかどうかを指定できます。 ここでは、 Flexible Sync 構成を使用し、Realm を開く前に SDK が常に最新の更新をダウンロードする必要があることを指定します。 また、Realm を初期サブスクリプションでブートストラップします。

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オブジェクトを作成し、それを Realm に追加する 2 つの方法を示しています。

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) を実行すると、バックグラウンドの同期スレッドが書込みトランザクションを完了するのを待機するため、UI がハングする可能性があります。 したがって、 Device Sync を使用するときにメインスレッドで同期書込みを実行せず、代わりにrealm.WriteAsyncを使用した非同期書込みを使用することがベストプラクティスです。

戻る

同期データ