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

Managed dados de usuário personalizados - Kotlin SDK

Nesta página

  • Pré-requisitos
  • Ler usuário de dados personalizado
  • Gravar dados de usuário personalizados com Função de Realm
  • Excluir dados personalizados com o Atlas Function

Esta página descreve os dados personalizados do usuário em um aplicativo do App Services e como gerenciá-los com o Realm Kotlin SDK.

Importante

Atualmente, você só pode ler dados de usuário personalizados com o Kotlin SDK. Em uma atualização futura do SDK, você também poderá gravar dados de usuário personalizados do SDK.

Você pode criar, atualizar ou excluir dados de usuário personalizados usando um dos outros SDKs do Realm, com a Função de Realm ou consultando diretamente o Atlas.

O Atlas App Services permite que você associe dados a um usuário autenticado, como o idioma preferido do usuário, a data de nascimento ou o fuso horário local. Você pode armazenar esses dados de usuário personalizados arbitrários sobre seus usuários e lê-los no aplicativo cliente.

Novidades na versão 1.9.0.

Você pode serializar dados de usuário personalizados usando um codificador EJSON. Para mais informações, incluindo exemplos, consulte Codificação EJSON para Atlas.

Para usar dados de usuário personalizados, você deve ter um App Services App com dados de usuário personalizados habilitado.

Para configurar um App Services App que usa dados de usuário personalizados, consulte o seguinte:

  1. Conecte seu aplicativo ao Atlas App Services

  2. Ativar Dados personalizados do usuário na documentação do App Services

Você pode recuperar dados de usuário personalizados de um usuário conectado atualmente usando o arquivo User.customDataAsBsonDocument() função de extensão:

val user = app.currentUser!!
val customUserData = user.customDataAsBsonDocument()

O Atlas App Services não atualiza dinamicamente o valor do documento de dados personalizado do usuário do lado do cliente imediatamente quando os dados subjacentes são alterados. Em vez disso, o App Services obtém a versão mais recente dos dados personalizados do usuário sempre que um usuário atualiza seu token de acesso ou quando você chama explicitamente a função User.refreshCustomData() para solicitar a versão mais recente dos dados personalizados do usuário.

// Update the custom data object
user.refreshCustomData()
// Now when you access the custom data, it's the
// updated data object
val updatedUserData = user.customDataAsBsonDocument()

Você pode gravar em dados de usuário personalizados com uma função do Atlas. A Função de Realm são funções JavaScript do lado do servidor incorporadas ao seu aplicativo de backend. Você pode chamar uma função do Atlas diretamente do Realm Kotlin SDK.

Atualmente, não é possível gravar em dados de usuário personalizados diretamente do Realm Kotlin SDK.

Não existe um padrão único para adicionar dados de usuário personalizados a partir de uma Função do Atlas. Você deve escrever sua função ou funções para se adequar ao caso de uso do seu aplicativo.

Neste exemplo, a Função de Realm pega um objeto passado pelo cliente e o adiciona à collection de dados de usuário personalizada no Atlas. A Função cria os dados de usuário personalizados se ainda não existirem e substitui todos os dados nele se existir.

writeCustomUserData.js - Função de Realm em execução no servidor (JavaScript)
exports = async function writeCustomUserData(newCustomUserData) {
const userId = context.user.id;
const customUserDataCollection = context.services
.get("mongodb-atlas")
.db("custom-user-data-database")
.collection("custom-user-data");
const filter = { userId };
// Replace the existing custom user data document with the new one
const update = { $set: newCustomUserData };
// Insert document if it doesn't already exist
const options = { upsert: true };
const res = await customUserDataCollection.updateOne(filter, update, options);
return res;
};

O código do Kotlin SDK para chamar esta função:

// Write the custom user data through a call
// to the `writeCustomUserData` function
val functionResponse = user.functions
.call<BsonDocument>("writeCustomUserData",
mapOf("userId" to user.id, "favoriteColor" to "blue")
)
// Refreshed custom user data contains updated
// `favoriteColor` value added in above Atlas Function call
user.refreshCustomData()
val updatedUserData = user.customDataAsBsonDocument()

Observação

Para saber mais sobre o Atlas Functions, consulte a seguinte documentação:

Os dados personalizados do usuário são armazenados em um documento vinculado ao objeto Usuário .

Importante

Excluir um usuário não exclui os dados personalizados do usuário. Talvez seja necessário excluir totalmente os dados do usuário para garantir a conformidade legal (por exemplo, para cumprir os requisitos de exclusão de conta da Apple).

Para excluir dados personalizados do usuário, você deve excluir manualmente o documento de dados personalizados do usuário.

Você pode excluir dados de usuário personalizados utilizando uma Função de Realm. Atualmente, não é possível excluir dados de usuário personalizados diretamente do Realm Kotlin SDK.

Neste exemplo, a Função Atlas não exige nenhum argumento. A Função usa o contexto da função para determinar o ID de usuário do chamador e exclui o documento de dados de usuário personalizado que corresponde ao ID do usuário.

deleteCustomUserData.js - Função de Realm em execução no servidor (JavaScript)
exports = async function deleteCustomUserData() {
const userId = context.user.id;
const customUserDataCollection = context.services
.get("mongodb-atlas")
.db("custom-user-data-database")
.collection("custom-user-data");
const filter = { userId };
const res = await customUserDataCollection.deleteOne(filter);
return res;
};

O código Kotlin SDK que chama essa função exige apenas um usuário conectado para chamar a função:

val deleteResponse = user.functions
.call<BsonDocument>("deleteCustomUserData")

Voltar

Excluir usuários

Próximo

Gerenciar metadados do usuário