Menu Docs
Página inicial do Docs
/ /
Atlas Device SDKs
/ /

Transmitir dados para o Atlas - C++ SDK

Nesta página

  • Sincronizar dados unidirecionalmente a partir de um aplicativo do cliente
  • Definir um objeto assimétrico
  • Conecte-se e autentique-se com um App Services App
  • Abrir um Realm
  • Criar objetos assimétricos

Você pode usar aingestão de dados para transmitir dados do aplicação cliente para um Atlas App Services habilitado para Flexible Sync .

Talvez você queira sincronizar dados unidirecionalmente em aplicativos IoT, como um sensor meteorológico que envia dados para a nuvem. O arquivo de dados também é útil para gravar outros tipos de dados imutáveis em que você não exige a resolução de conflitos, como criar faturas a partir de uma aplicação de varejo ou registrar evento de aplicação.

A ingestão de dados é otimizada para fornecer melhorias de desempenho para volumes de trabalho pesados somente de inserção no lado do cliente.

1

Você pode sincronizar dados unidirecionalmente quando declarar o esquema de um objeto como um REALM_ASYMMETRIC_SCHEMA.

struct WeatherSensorReading {
realm::primary_key<realm::object_id> _id{realm::object_id::generate()};
std::string deviceId;
double temperatureInFahrenheit;
int64_t windSpeedInMph;
};
REALM_ASYMMETRIC_SCHEMA(WeatherSensorReading, _id, deviceId,
temperatureInFahrenheit, windSpeedInMph)

Para obter mais informações sobre como definir um REALM_ASYMMETRIC_SCHEMA, incluindo limitações ao vincular a outros tipos de objeto, consulte: Definir um objeto assimétrico.

2

Para transmitir dados do cliente para seu aplicativo de backend, você deve conectar-se a um backend do App Services e autenticar um usuário.

auto appConfig = realm::App::configuration();
appConfig.app_id = APP_ID;
auto app = realm::App(appConfig);
auto user = app.login(realm::App::credentials::anonymous()).get();
3

Após ter um usuário autenticado, você pode abrir um Realm sincronizado utilizando um flexibleSyncConfiguration(). Ao contrário de abrir um Realm para Tipo de objeto de Realm não assimétricos, ao abrir um Realm para arquivo de dados, você deve especificar os tipos asymmetric_object que deseja sincronizar.

auto syncConfig = user.flexible_sync_configuration();
auto realm = realm::open<realm::WeatherSensorReading>(syncConfig);

Ao contrário da sincronização bidirecional, o arquivo de dados não usa uma assinatura Flexible Sync.

Dica

Tipo de objeto de Realm mistos e assimétricos

Você não pode ler, query ou excluir um asymmetric_object de um Realm, portanto, objeto assimétricos são incompatíveis com a Flexible Sync bidirecional ou o uso do Realm local. Você não pode abrir um único Realm sincronizado para managed objeto regulares e objeto assimétricos - você deve usar Realms diferentes para managed esses diferentes Tipo de objeto de Realm.

4

Após ter um Realm aberto, você pode criar um asymmetric_object e definir seus valores como faria com um objeto normal. No entanto, você não pode ler ou excluir esses objetos. Depois de criados, eles são sincronizados com o backend do App Services e o reconhecimento de data center vinculado do Atlas.

auto weatherSensorReading =
realm::WeatherSensorReading{.deviceId = "WX1278UIT",
.temperatureInFahrenheit = 64.7,
.windSpeedInMph = 7};
realm.write([&] { realm.add(std::move(weatherSensorReading)); });

O Atlas Device Sync gerencia o ciclo de vida desses dados por completo. Ele é mantido no dispositivo até que a sincronização da ingestão de dados seja concluída e, em seguida, é removido do dispositivo.

Voltar

Definir o nível de registro do cliente de sincronização