Adicionar sincronização de dispositivo a um aplicativo - .NET SDK
Nesta página
Conecte-se ao backend do Atlas App Services
Passe o ID do aplicativo para seu aplicativo, que você pode encontrar na interface do usuário do App Services.
app = App.Create(myRealmAppId);
Autenticar um usuário
Autentique um usuário em seu projeto de cliente. Aqui, usaremos a autenticação anônima.
var user = await app.LogInAsync(Credentials.Anonymous());
Abrir um realm sincronizado
Para abrir o Realm como um Realm sincronizado, você pode especificar se um Realm sincronizado deve baixar dados antes de ser aberto. Aqui, usamos uma Flexible Sync e especificamos que o SDK deve sempre baixar as atualizações mais recentes antes de abrir o Realm. Também inicializamos o Realm com uma assinatura inicial.
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);
Use o Realm
A sintaxe para ler, gravar e observar alterações em um domínio sincronizado é idêntica à sintaxe para domínios não sincronizados. Enquanto você trabalha com dados locais, um thread em segundo plano integra, carrega e baixa conjuntos de alterações de forma eficiente.
O seguinte código demonstra duas maneiras de criar um novo objeto Task
e adicioná-lo ao Realm:
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" }); } );
Importante
Ao usar a sincronização, evite gravações síncronas no thread principal
Como o Realm realiza integrações de sincronização em um thread em segundo plano, se você fizer uma gravação síncrona em seu realm no thread principal, há uma pequena chance de sua interface do usuário parecer travar enquanto espera que o thread de sincronização em segundo plano termine uma transação de escrita. Portanto, é uma prática recomendada não fazer uma gravação síncrona na thread principal ao usar o Device Sync e, em vez disso, usar gravações assíncronas com realm.WriteAsync
.