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

Gerenciar aplicativos de vários usuários - Kotlin SDK

Nesta página

  • Contas de Usuário
  • Estados do usuário
  • Adicionar um novo usuário ao dispositivo
  • Recuperar usuário ativo
  • Listar todos os usuários no dispositivo
  • Desconectar um usuário
  • Remover um usuário do dispositivo

Esta página descreve como managed vários usuários do Atlas App Services em um único dispositivo usando o Kotlin SDK. Para saber como autenticar e conectar usuários a um aplicativo cliente, consulte Criar e autenticar usuários - Kotlin SDK.

O Realm permite que vários usuários façam login em um aplicativo simultaneamente em um determinado dispositivo. A aplicação do cliente do Realm é executada no contexto de um único usuário ativo , mesmo que vários usuários estejam conectados simultaneamente. Só pode haver um usuário ativo por vez, e o usuário ativo está associado a todas as solicitações de saída.

Uma conta de usuário representa um usuário único e distinto do seu aplicativo. O App Services cria um objeto User exclusivo associado quando um usuário pela primeira vez autentica e faz login em um aplicativo em um dispositivo. Após o login, o SDK salva as informações do usuário e controla o estado do usuário no dispositivo. Esses dados permanecem no dispositivo, mesmo que o usuário faça logout, a menos que você remova ativamente o usuário do dispositivo. Para obter mais informações sobre os usuários e contas de usuário do App Services, consulte Contas de usuário na documentação do App Services.

O possível estado de um usuário em um determinado dispositivo é representado no Kotlin SDK pelo enum user.state . Uma conta de usuário pode ser LOGGED_OUT, LOGGED_IN ou REMOVED. O texto a seguir descreve como esses estados correspondem a um usuário no dispositivo a qualquer momento:

  • Conectado: qualquer usuário autenticado que tenha conectado ao dispositivo e não se desconectou nem teve a sessão revogada. O user.state é LOGGED_IN. Um usuário conectado pode ser:

    • Ativo: um único usuário autenticado que está usando o aplicativo atualmente em um determinado dispositivo. O SDK associa este usuário com solicitações de saída, e o Atlas App Services avalia permissões de acesso aos dados e executa funções no contexto deste usuário.

    • Inativo: todos os usuários autenticados que não são o usuário ativo atual.

  • Desconectado: qualquer usuário que tenha se autenticado no dispositivo, mas que tenha se desconectado ou tido sua sessão revogada. O user.state é LOGGED_OUT.

  • Removido: qualquer usuário que tenha sido removido ativamente do dispositivo. O SDK desconecta o usuário do aplicativo e remove todas as informações sobre o usuário do dispositivo. O usuário deve se autenticar novamente para usar o aplicativo novamente. O user.state é REMOVED.

Um diagrama que descreve os diferentes estados em que um usuário pode estar: desconectado, conectado e ativo, e conectado e inativo.

O Realm SDK adiciona automaticamente os usuários a um dispositivo quando eles fazem login pela primeira vez nesse dispositivo. Depois que um usuário faz login com êxito, ele se torna imediatamente o usuário ativo do aplicativo.

No exemplo a seguir, Joe faz login no aplicativo e se torna o usuário ativo. Em seguida, Emma faz login e substitui Joe como o usuário ativo:

val app = App.create(YOUR_APP_ID) // Replace with your App ID
runBlocking {
// Log in as Joe
val joeCredentials = Credentials.emailPassword(joeEmail, joePassword)
try {
val joe = app.login(joeCredentials)
// The active user is now Joe
val user = app.currentUser
Log.v("Successfully logged in. User state: ${joe.state}. Current user is now: ${user?.id}")
assertEquals(joe, user)
} catch (e: Exception) {
Log.e("Failed to log in: ${e.message}")
}
// Log in as Emma
val emmaCredentials = Credentials.emailPassword(emmaEmail, emmaPassword)
try {
val emma = app.login(emmaCredentials)
// The active user is now Emma
val user = app.currentUser
Log.v("Successfully logged in. User state: ${emma.state}. Current user is now: ${user?.id}")
assertEquals(emma, user)
} catch (e: Exception) {
Log.e("Failed to log in: ${e.message}")
}
}
Successfully logged in. User state: LOGGED_IN. Current user is now: 65133e130075a51f12a9e635
Successfully logged in. User state: LOGGED_IN. Current user is now: 65133e1357aaf22529343c1b

Você pode recuperar o usuário ativo atual usando App.currentUser. Se vários usuários estiverem conectados, isso retornará o último usuário válido que fez logon no dispositivo. Este método retorna null se não houver usuários conectados.

val user = app.currentUser

Para obter mais informações, consulte Recuperar usuário atual.

Você pode acessar um mapa de todas as contas de usuário conhecidas armazenadas no dispositivo usando o método app.allUsers() . Esse método retorna todos os usuários que fizeram logon no aplicativo cliente em um determinado dispositivo, independentemente de estarem autenticados no momento (o user.state é LOGGED_IN ou LOGGED_OUT).

No exemplo a seguir, o SDK retorna o user.id de Ema e Joe:

// Get all known users on device
val allUsers = app.allUsers()
for ((key) in allUsers) {
Log.v("User on Device $device: $key")
}
User on Device 651330cebe1d42b24b8d510f: 65133e1357aaf22529343c1b
User on Device 651330cebe1d42b24b8d510f: 65133e130075a51f12a9e635

Você pode desconectar um usuário conectado de um aplicativo usando o user.logOut() método. Uma vez desconectado, o usuário ainda está armazenado no dispositivo, mas deve fazer login novamente para usar o aplicativo.

No exemplo a seguir, Joe está atualmente conectado como o usuário atual. Depois de desconectarmos Joe do aplicativo, confirmamos que ele ainda está armazenado no dispositivo como usuário e que Emma agora é a usuário atual:

try {
joe.logOut()
Log.v("Successfully logged out user. User state: ${joe.state}. Current user is now: ${app.currentUser?.id}")
} catch (e: Exception) {
Log.e("Failed to log out: ${e.message}")
}
val joeIsAUser = app.allUsers().containsKey(joe.id)
assertTrue(joeIsAUser)
Successfully logged out user. User state: LOGGED_OUT. Current user is now: 65133e1357aaf22529343c1b

Para obter mais informações sobre como conectar e desconectar um usuário de um aplicativo, consulte Criar e autenticar usuários - Kotlin SDK.

Você pode remover ativamente um usuário e todas as informações sobre esse usuário de um dispositivo usando user.remove(). Depois de removido, o usuário deve se autenticar novamente para usar o aplicativo novamente. Isso não exclui o objeto User do App Services App.

No exemplo a seguir, Emma é o usuário atual (e único) conectado ao dispositivo. Depois de removê-la, confirmamos que Emma foi removida do dispositivo e que não há nenhum usuário atual, pois Joe ainda está desconectado:

assertEquals(emma, app.currentUser)
try {
emma.remove()
Log.v("Successfully removed user. User state: ${emma.state}. Current user is now: ${app.currentUser?.id}")
} catch (e: Exception) {
Log.e("Failed to remove user: ${e.message}")
}
val emmaIsAUser = app.allUsers().containsKey(emma.id)
assertFalse(emmaIsAUser)
Successfully removed user. User state: REMOVED. Current user is now: null

Para obter mais informações sobre como remover e excluir usuários, consulte Remover um usuário.

Voltar

Criar e gerenciar chaves de API do usuário

Próximo

Excluir usuários