Funções SaveData, LoadData e ClearData
Aplica-se a: aplicativos Canvas
Salva e recarrega uma coleção do armazenamento do host do aplicativo.
Nota
Essas funções agora podem ser usadas ao reproduzir um aplicativo em um navegador da Web como um recurso experimental. Esse recurso é desabilitado por padrão. Para habilitar, navegue até Definições>Próximos recursos>Experimental>Habilitar SaveData, LoadData, ClearData no player da Web." e ative a opção. Para enviar comentários sobre este recurso experimental, acesse Fórum da Comunidade do Power Apps.
Descrição
A função SaveData armazena uma coleção para um uso posterior com um nome.
A função LoadData recarrega novamente uma coleção pelo nome com o qual foi salva anteriormente com SaveData. Você não pode usar essa função para carregar uma coleção de outra fonte.
A função ClearData apaga o armazenamento com um nome específico ou apaga todo o armazenamento associado ao aplicativo se nenhum nome for fornecido.
Nota
- O nome compartilhado entre SaveData, LoadData e ClearData é uma chave, não um nome de arquivo. Ele não precisa ser complexo, pois os nomes são exclusivos para cada aplicativo e não há perigo de conflito de nomes. O nome não deve conter nenhum destes caracteres:
*".?:\<>|/
. - SaveData é limitado a 1 MB de dados para Power Apps em execução no Teams e em um navegador da Web. Não há limite fixo para o Power Apps em execução em um player móvel, mas existem limites práticos discutidos abaixo.
- Não use SaveData para armazenar dados confidenciais na web, uma vez que serão armazenados em texto simples.
Use essas funções para melhorar o desempenho de inicialização do aplicativo:
- Armazenando em cache dados na fórmula App.OnStart em uma primeira execução.
- Recarregando o cache local nas próximas execuções.
Você também pode usar essas funções para adicionar recursos offline simples ao seu aplicativo.
Você não pode usar essas funções dentro de um navegador quando:
- Criação do aplicativo no Power Apps Studio.
Para testar seu aplicativo, execute-o no Power Apps Mobile em um dispositivo iPhone ou Android.
Essas funções são limitadas pela quantidade de memória de aplicativo disponível à medida que operam em uma coleção na memória. A memória disponível pode variar dependendo de fatores como:
- O dispositivo e o sistema operacional.
- A memória que o player do Power Apps usa.
- Complexidade do aplicativo com telas e controles.
Teste seu aplicativo com os cenários esperados no tipo de dispositivos que você espera que o aplicativo execute ao armazenar dados grandes. Espere ter entre 30 MB e 70 MB de memória disponível em geral.
Essas funções dependem da coleção que está sendo definida implicitamente com Collect ou ClearCollect. Você não precisa chamar Collect ou ClearCollect para carregar dados na coleção para defini-los. É um caso comum ao usar LoadData após uma SaveData anterior. Tudo o que é necessário é a presença dessas funções em uma fórmula para definir implicitamente a estrutura da coleção. Para obter mais informações, consulte criando e removendo variáveis.
Os dados carregados serão anexados à coleção. Use a função Clear antes de chamar LoadData se você quiser começar com uma coleção vazia.
Segurança dos dados
Considere cuidadosamente o isolamento e a criptografia dos dados armazenados com SaveData e decida se são apropriados para suas necessidades, especialmente se os dispositivos forem compartilhados por vários usuários.
Os dados armazenados com SaveData são isolados de outros Power Apps pelos players do Power Apps. Os dados são armazenados com base na ID do Aplicativo, isolando automaticamente o espaço de nome SaveData entre Power Apps.
O sistema operacional e o navegador são responsáveis por isolar dados entre Power Apps e outros aplicativos em um dispositivo e com sites. Por exemplo, o sistema operacional é responsável por isolar os dados armazenados no Microsoft Outlook dos dados armazenados no Power Apps e também isolar esses dados de sites como Bing.com ou PowerApps.com. As instalações de área restrita do aplicativo interno do sistema operacional são usadas para armazenamento SaveData, que geralmente é inacessível ou oculto para o usuário.
Ao usar o mesmo aplicativo, o sistema operacional e o navegador também são responsáveis por isolar os dados entre usuários de diferentes níveis do sistema operacional. Por exemplo, se dois usuários diferentes compartilham um computador e usam duas credenciais de logon diferentes do Windows, o sistema operacional é responsável por isolar os dados entre os dois usuários do Windows.
Os dados podem ou não ser isolados entre diferentes usuários do Power Apps se o usuário do sistema operacional for o mesmo. Nem todo player do Power Apps trata isso da mesma maneira. Por exemplo, enquanto está conectado como o mesmo usuário do Windows, no player do Power Apps, o usuário sai do Power Apps e entra como um usuário diferente do Power Apps. Os dados armazenados em um aplicativo antes da mudança de usuário do Power Apps podem ser acessados pelo segundo usuário do Power Apps dentro do mesmo aplicativo. Os dados também podem ser removidos e o primeiro usuário do Power Apps pode não conseguir mais acessá-los. O comportamento varia entre players do Power Apps.
O sistema operacional também pode criptografar os dados ou você pode usar uma ferramenta de geranciamento de dispositivos móveis, como o Intune Microsoft . Os dados armazenados durante a reprodução de um aplicativo em um navegador da Web não são criptografados.
Sintaxe
Salvar dados( Coleção, Nome )
LoadData( Coleção, Nome [, IgnorarArquivoInexistente ])
- Coleção - Obrigatório. Coleção a ser armazenada ou carregada.
- Nome - Obrigatório. O nome do armazenamento. O nome deve ser o mesmo para salvar e carregar o mesmo conjunto de dados. O espaço de nome não é compartilhado com outros aplicativos. Os nomes não devem conter nenhum destes caracteres:
*".?:\<>|/
. - IgnoreNonexistentFile - Opcional. Um valor booliano que indica o que fazer se o arquivo ainda não existir. Use false (padrão) para retornar um erro e true para suprimir o erro.
ClearData( [Nome] )
- Nome - Opcional. Nome do armazenamento previamente salvo com SaveData. Se o Nome não for fornecido, todo o armazenamento associado ao aplicativo será apagado.
Exemplos
Fórmula | Descrição | Resultado |
---|---|---|
SaveData(LocalCache, "MeuCache") | Salve a coleção LocalCache no dispositivo do usuário com o nome "MyCache", adequado para que LoadData seja recuperado mais tarde. | Os dados são salvos no host do aplicativo com o nome "MyCache". |
LoadData(LocalCache, "MeuCache") | Carrega a coleção LocalCache do dispositivo do usuário com o nome "MyCache", anteriormente armazenado com uma chamada para SaveData. | Os dados são carregados do host do aplicativo com o nome "MyCache". |
ClearData( "MeuCache" ) | Apaga o armazenamento com o nome "MyCache". Quaisquer dados armazenados com este nome não estarão mais disponíveis por meio de LoadData. | Os dados são removidos do host do aplicativo com o nome "MyCache". |
Limpar Dados() | Apaga todo o armazenamento associado a este aplicativo. Os dados armazenados por outros aplicativos não são afetados. | Todos os dados são removidos do host do aplicativo. |
Exemplo offline simples
O exemplo simples a seguir captura e armazena os nomes e as imagens dos itens diários enquanto estiver offline. Ele armazena as informações no armazenamento local do dispositivo para uso posterior. Isso permite que o aplicativo seja fechado ou o dispositivo seja reiniciado sem perder dados.
Nota
Este exemplo usa um controle de câmera para capturar imagens. Como SaveData é limitado a 1 MB de dados ao ser executado no Teams ou em um navegador da Web, este exemplo não funcionará com mais de algumas imagens. Além disso, dependendo da câmera, pode não funcionar nem mesmo com uma imagem. Use um dispositivo para trabalhar com este exemplo completo ou remova o controle da câmera e parte da imagem deste exemplo para executar no Teams ou em um navegador da Web.
Crie um aplicativo de tela em branco com um layout de Tablet. Para obter mais detalhes, leia criando um aplicativo de um modelo e selecione Layout do tablet em aplicativo em branco.
Adicione um controle Text input e um controle Camera e organize-os aproximadamente conforme mostrado:
Adicione um controle Button
Clique duas vezes no controle Button para alterar o texto do botão para Adicionar item (ou modificar a propriedade Text).
Defina a propriedade OnSelect do controle Button como esta fórmula que adicionará um item à nossa coleção:
Collect( MyItems, { Item: TextInput1.Text, Picture: Camera1.Photo } )
Adicione outro controle Button.
Clique duas vezes no controle Button para alterar o texto do botão para Salvar Dados (ou modificar a propriedade Text).
Defina a propriedade OnSelect do controle Button como esta fórmula para salvar nossa coleção no dispositivo local:
SaveData( MyItems, "LocalSavedItems" )
É tentador testar o botão, pois ele não afeta nada. Contudo, você só verá um erro enquanto estiver criando em um navegador da Web. Salve o aplicativo primeiro e abra-o em um dispositivo antes de seguir as próximas etapas para testar esta fórmula:
Adicione um terceiro controle Button.
Clique duas vezes no controle Button para alterar o texto do botão para Carregar Dados (ou modificar a propriedade Text).
Defina a propriedade OnSelect do controle Button como esta fórmula para carregar nossa coleção do dispositivo local:
LoadData( MyItems, "LocalSavedItems" )
Adicione um controle Gallery com um layout vertical que inclui uma imagem e áreas de texto:
Quando solicitado, selecione a coleção MyItems como a fonte de dados para esta galeria. Isso definirá a propriedade Items do controle Gallery:
O controle de imagem no modelo de galeria deve ter como padrão sua propriedade Image ThisItem.Picture e os controles de rótulo devem ter como padrão suas propriedades Text ThisItem.Item. Verifique essas fórmulas se depois de adicionar itens nas etapas a seguir você não vir nada na galeria.
Posicione o controle à direita dos outros controles:
Salve seu aplicativo. Se for a primeira vez que foi salvo, não haverá necessidade de publicá-lo. Se não for a primeira vez, publique o aplicativo depois de salvar.
Abra seu aplicativo em um dispositivo, como um telefone ou tablet. SaveData e LoadData não podem ser usados no Studio ou em um navegador da web. Atualize sua lista de aplicativos se você não vir seu aplicativo imediatamente, pode levar alguns segundos para que o aplicativo apareça em seu dispositivo. Sair e voltar para sua conta também pode ajudar.
Depois que seu aplicativo for baixado, você pode se desconectar da rede e executá-lo offline.
Insira o nome e tire uma foto de um item.
Selecione o botão Adicionar item. Repita a adição de itens algumas vezes para carregar sua coleção.
Selecione o botão Salvar Dados. Isso salvará os dados em sua coleção em seu dispositivo local.
Feche o aplicativo. Sua coleção na memória será perdida, incluindo todos os nomes de itens e imagens, mas eles ainda estarão no armazenamento do dispositivo.
Inicie o aplicativo novamente. A coleção na memória será exibida novamente como vazia na galeria.
Selecione o botão Carregar Dados. A coleção será preenchida usando os dados armazenados em seu dispositivo e seus itens voltarão à galeria. A coleção estava vazia antes de esse botão chamar a função LoadData; não foi necessário chamar Collect ou ClearCollect antes de carregar os dados do armazenamento.
Selecione o botão Carregar Dados novamente. Os dados armazenados serão anexados ao final da coleção e uma barra de rolagem aparecerá na galeria. Se você quiser substituir em vez de append, use a função Clear primeiro para limpar a coleção antes de chamar a função LoadData.
Exemplo offline mais avançado
Para obter um exemplo detalhado, consulte o artigo sobre recursos offline simples.