アプリに Device Sync を追加する - .NET SDK
Atlas Device SDK は非推奨です。 詳細については、 の廃止ページを参照してください。
1
App Services バックエンドへの接続
アプリのアプリ ID を渡します。このアプリ IDは、App Services UI で確認できます。
app = App.Create(myRealmAppId);
2
ユーザーの認証
クライアント プロジェクトでユーザーを認証します。 ここでは、匿名認証を使用します。
var user = await app.LogInAsync(Credentials.Anonymous());
3
同期された Realm を開く
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 で を読み取り、書込み、変更を監視する構文は、同期されていない 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
を使用した非同期書込みを使用することがベストプラクティスです。