IsolatedStorageSettings: Armazenando informações de contexto e/ou configurações da APP

2

windows-phone-autenticacaoOlá pessoal, tudo bom?

SDK do Windows Phone disponibiliza classes para armazenamento de dados das aplicações diretamente no aparelho do Windows Phone. Esses dados podem ser armazenados em bancos de dados, arquivos texto, binários ou mesmo em um espaço denominado IsolatedStorageSettings, que é o foco deste artigo, e cujo objetivo é permitir que o desenvolvedor armazene “chaves” com dados de configuração da própria APP, como por exemplo, estilos preferidos do usuário, comportamentos do software para uma situação X ou Y, usuário e senha para acesso a uma determinada APP, configurações de uma conta de e-mail, etc.

No exemplo deste post coloco uma situação onde o usuário deseja salvar suas informações de acesso para um determinado aplicativo, sendo assim, armazeno em duas chaves no IsolatedStorageSettings as informações correspondentes a autenticação do mesmo, ou seja, seu usuário e senha de acesso.

Na figura podemos observar a interface desenvolvida para o exemplo e identificamos que se o usuário marcar a opção “Lembrar meu usuário e senha” a aplicação então deverá realizar o armazenamento de seus dados de acesso.

Vamos ao código em C# que trata o evento Click do botão “Acesso”. Note que nesse exemplo o usuário e a senha para acesso na aplicação estão fixos no código, mas é claro que você encontrará uma solução melhor para esse ponto. ;-)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
private void btnAcesso_Click(object sender, RoutedEventArgs e)
{
   if (txtUsuario.Text == "Admin" && txtSenha.Password == "123")
   {
      //Cria um objeto da classe IsolatedStorageSettings para armazenamento das chaves
      IsolatedStorageSettings iso = IsolatedStorageSettings.ApplicationSettings;
      if ((bool)ckbLembrar.IsChecked)
      {
         //É necessário perguntar se a chave já existe para evitar que se crie chaves duplicadas, o que fatalmente irá provocar erros
         if (iso.Contains("login.Usuario")) //Apenas atualiza os valores das chaves
         {
            iso["login.Usuario"] = txtUsuario.Text;
            iso["login.Senha"] = txtSenha.Password;
         }
         else //Cria novas chaves
         {
            iso.Add("login.Usuario", txtUsuario.Text);
            iso.Add("login.Senha", txtSenha.Password);
         }
         iso.Save(); //Necessário para armazenar os valores das chaves
      }
      else
      {
         //Caso o usuário não queira mais armazenar suas credenciais, podemos remover as chaves
         if (iso.Contains("login.Usuario"))
         {
            iso.Remove("login.Usuario");
            iso.Remove("login.Senha");
         }
      }
      //Direciona o usuário para uma página qualquer, caso ele acerte o login
      NavigationService.Navigate(new Uri("/Principal.xaml", UriKind.Relative));
   }
   else
   {
      MessageBox.Show("Usuário = Admin ; Senha = 123");
   }
}

Recuperando os dados armazenados nas chaves do IsolatedStorageSettings

Para recuperar os valores das chaves armazenadas no IsolatedStorageSettings, você pode fazer uso do trecho de código apresentado abaixo:

1
2
3
4
5
6
7
8
9
10
11
12
13
...
...
string usuario, senha;
IsolatedStorageSettings iso = IsolatedStorageSettings.ApplicationSettings;
if (iso.TryGetValue("login.Usuario", out usuario))
   txtUsuario.Text = usuario;
if (iso.TryGetValue("login.Senha", out senha))
{
   txtSenha.Password = senha;
   ckbLembrar.IsChecked = true;
}
...
...

Grande abraço,
Eduardo Henrique Rizo (@eduardorizo)

Fonte: Blog do Eduardo H. Rizo

Share.

About Author

Bacharel em Ciência da Computação pela FIPP/Unoeste, Pós-Graduado em Desenvolvimento de Sistemas Web, Segurança da Informação e Avaliação do Ensino e da Aprendizagem, Professor universitário e responsável pelo setor de desenvolvimento de sistemas web da Universidade do Oeste Paulista. MCP e MCPS pela Microsoft e nas horas vagas dedica um pouco do seu tempo escrevendo posts técnicos sobre desenvolvimento de sistemas web, windows phone, gerenciamento de servidores e outros assuntos para a comunidade.