将 Device Sync 添加到 App — .NET SDK
Atlas Device SDK 已弃用。 有关详细信息,请参阅弃用页面。
1
连接到Atlas App Services后端
传递应用的 App ID ,您可以在 App Services用户界面中找到该 ID。
app = App.Create(myRealmAppId);
3
打开同步 Realm
要将 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 上读取、写入和监视变更的语法与非同步 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)时,很有可能会出现挂起状态。因此,在使用 Device Sync 时,最佳实践是不要在主线程上执行同步写入,而应使用带有realm.WriteAsync
的异步写入。