Desenvolver aplicativos de tela com capacidade offline
Os usuários móveis geralmente precisam ser produtivos, mesmo quando possuem conectividade limitada ou inexistente. Ao criar um aplicativo de tela, você pode executar estas tarefas:
- Abra o Power Apps Mobile e execute aplicativos quando o dispositivo não estiver conectado à rede.
- Determine quando um aplicativo está offline, online ou em uma conexão limitada usando o objeto de sinal Connection.
- Sincronize dados entre o dispositivo e o servidor.
Se o seu aplicativo se conectar ao Dataverse, o suporte offline estará integrado. O Power Apps permitirá que você baixe dados no seu dispositivo e carregue as alterações de volta no Dataverse. Se o aplicativo não usar o Dataverse, você poderá usar as coleções e aproveitar as funções LoadData e SaveData para o armazenamento básico quando estiver offline.
Observação
- O recurso offline para aplicativos de tela está disponível durante a execução dos aplicativos usando os reprodutores nativos do Power Apps Mobile Mobile no iOS, Android e Windows.
- Aplicativos de tela executados em navegadores da Web não podem ser executados offline, mesmo ao usar um navegador da Web em um dispositivo móvel.
- Os aplicativos de tela no Teams são limitados a 1 MB de dados por meio das funções LoadData e SaveData—útil para um pequeno número de cadeias de caracteres de texto, números e datas. O uso de imagens ou outras mídias é inadequado para este limite. Mais informações: referência da função LoadData e SaveData
Habilitar o suporte offline em um aplicativo de tela baseado no Dataverse
Para aplicativos de tela baseados no Microsoft Dataverse, você deve usar o recurso offline integrado com a experiência de priorização do modo offline. Para obter mais informações, consulte Configurar o Mobile Offline para aplicativos de tela e Trabalhando com aplicativos de tela offline. Com o acionamento de um interruptor, seu aplicativo pode trabalhar com dados do Dataverse onde quer que você esteja, com ou sem uma conexão de rede. Basta criar seu aplicativo com fórmulas padrão do Power Fx e o recurso offline lidará com toda a complexidade para você.
Usar LoadData e SaveData para todos os outros conectores
Esta seção inclui um exemplo usando dados do Twitter. Um exemplo ainda mais simples que não requer conexão está incluído na referência da função LoadData e SaveData.
Assista a este vídeo para saber como criar aplicativos de tela habilitados para uso offline que não usam dados do Dataverse:
Limitações
LoadData e SaveData combinam para formar um mecanismo simples para armazenar um volume pequeno de dados em um dispositivo local. Usando essas funções é possível adicionar recursos offline em seu aplicativo.
Essas funções são limitadas pela quantidade de memória de aplicativo disponível porque operam em uma coleção na memória. A memória disponível pode variar de acordo com o dispositivo, o sistema operacional, a memória que o Power Apps Mobile usa e a complexidade do aplicativo em termos de telas e controles. Se você armazenar mais do que alguns megabytes de dados, teste seu aplicativo com os cenários esperados nos dispositivos nos quais você espera que ele seja executado. Geralmente você terá de 30 a 70 megabytes de memória disponível.
As funções também não resolvem automaticamente conflitos de mesclagem quando um dispositivo fica online. A configuração de quais dados são salvos e como lidar com a reconexão, depende do fabricante ao gravar expressões.
Para atualizações sobre os recursos offline, retorne a este tópico e assine o blogue do Power Apps.
Visão Geral
Ao criar cenários offline, você deve primeiro considerar como seus aplicativos funcionam com dados. Aplicativos no Power Apps acessam dados principalmente por meio de um conjunto de conectores que a plataforma fornece, como SharePoint, Office 365 e Microsoft Dataverse. Você também pode criar conectores personalizados que permitem aos aplicativos acessar qualquer serviço que fornece um ponto de extremidade RESTful. Isso pode ser uma API Web ou um serviço, como o Azure Functions. Todos esses conectores usam o HTTPS na Internet, o que significa que os usuários devem estar online para acessar dados e outras funcionalidades oferecidas por um serviço.
Tratando dados offline
No Power Apps, você pode filtrar, pesquisar, classificar, agregar e manipular dados de maneira consistente, independentemente da fonte de dados. As fontes variam de coleções na memória no aplicativo a listas criadas usando as Listas da Microsoft para bancos de dados SQL e Dataverse. Devido a essa consistência, é possível redirecionar facilmente um aplicativo para usar uma fonte de dados diferente. O mais importante dos cenários offline é que você pode usar coleções locais para o gerenciamento de dados, quase sem nenhuma alteração à lógica de um aplicativo. Na verdade, as coleções locais são o principal mecanismo para tratar dados offline.
Criar um aplicativo offline
Para manter o foco nos aspectos offline do desenvolvimento de aplicativos, este tópico mostra um cenário simples centrado no Twitter. Você criará um aplicativo que permite ler as postagens do Twitter e enviar tweets mesmo quando estiver offline. Quando o aplicativo fica online, o aplicativo posta os tweets e recarrega os dados locais.
Em um nível alto, o aplicativo executa estas tarefas:
Quando o usuário abre o aplicativo:
- Se o dispositivo estiver online, o aplicativo extrai dados do conector do Twitter e preenche uma coleção com esses dados.
- Se o dispositivo estiver offline, o aplicativo carregará os dados de um arquivo de cache local usando a função LoadData.
- O usuário pode enviar tweets. Se o aplicativo estiver online, ele postará os tweets diretamente no Twitter e atualizará o cache local.
A cada cinco minutos enquanto o aplicativo está online:
- O aplicativo posta todos os tweets no cache local.
- O aplicativo atualiza o cache local e o salva usando a função SaveData.
Etapa 1: adicionar o Twitter a um aplicativo de telefone em branco
- Crie um aplicativo de tela em branco com layout para Smartphone.
- Na guia Exibir, selecione Fontes de dados.
- No painel Dados, selecione Adicionar fonte de dados.
- Selecione Nova Conexão > Twitter > Criar.
- Digite suas credenciais, crie a conexão e feche o painel Dados.
Etapa 2: Coletar tweets existentes
No painel Vista de árvore, selecione Aplicativo e defina sua propriedade OnStart para esta fórmula:
If( Connection.Connected, ClearCollect( LocalTweets, Twitter.SearchTweet( "PowerApps", {maxResults: 10} ) ); Set( statusText, "Online data" ), LoadData( LocalTweets, "LocalTweets", true ); Set( statusText, "Local data" ) ); SaveData( LocalTweets, "LocalTweets" );
No painel Vista de árvore, selecione o menu de reticências para o objeto do Aplicativo e depois Executar o OnStart para executar essa fórmula.
Observação
As funções LoadData e SaveData podem mostrar um erro no Power Apps Studio porque os navegadores não oferecem suporte a elas. No entanto, terão um desempenho normal depois que você implantar este aplicativo em um dispositivo.
Esta fórmula verifica se o dispositivo está online:
- Se o dispositivo estiver online, a fórmula carregará até 10 tweets com o termo de pesquisa "PowerApps" para uma coleção LocalTweets.
- Se o dispositivo estiver offline, a fórmula carregará o cache local de um arquivo chamado “LocalTweets”, caso esteja disponível.
Etapa 3: mostrar tweets em uma galeria
Na guia Inserir, selecione Galeria > Altura flexível em branco.
Defina a propriedade Items do controle Galeria como
LocalTweets
.No modelo da galeria, adicione três controles Rótulo e defina a propriedade Text de cada rótulo para um destes valores:
ThisItem.UserDetails.FullName & " (@" & ThisItem.UserDetails.UserName & ")"
Text(DateTimeValue(ThisItem.CreatedAtIso), DateTimeFormat.ShortDateTime)
ThisItem.TweetText
Coloque o texto no último rótulo em negrito, para que a galeria se pareça com este exemplo.
Etapa 4: mostrar status da conexão
Na galeria, insira um rótulo e defina sua propriedade Cor como Vermelho.
Defina a propriedade Text do rótulo mais recente para esta fórmula:
If( Connection.Connected, "Connected", "Offline" )
Esta fórmula determina se o dispositivo está online. Se tiver, o rótulo mostrará Conectado; caso contrário, mostrará Offline.
Etapa 5: adicionar uma caixa para compor tweets
Sob o rótulo de status da conexão, insira um controle Entrada de texto e renomeie-o como NewTweetTextInput.
Defina a propriedade Default da caixa de entrada de texto como
""
.
Etapa 6: adicionar um botão para postar o tweet
Na caixa de entrada de texto, adicione um controle Botão e defina sua propriedade Text como este valor:
"Tweet"
Defina a propriedade OnSelect do botão para esta fórmula:
If( Connection.Connected, Twitter.Tweet( "", {tweetText: NewTweetTextInput.Text} ), Collect( LocalTweetsToPost, {tweetText: NewTweetTextInput.Text} ); SaveData( LocalTweetsToPost, "LocalTweetsToPost" ) ); Reset( NewTweetTextInput );
Na propriedade OnStart do Aplicativo, adicione uma linha ao fim da fórmula:
If( Connection.Connected, ClearCollect( LocalTweets, Twitter.SearchTweet( "PowerApps", {maxResults: 100} ) ); Set( statusText, "Online data" ), LoadData( LocalTweets, "LocalTweets", true ); Set( statusText, "Local data" ) ); SaveData( LocalTweets, "LocalTweets" ); LoadData( LocalTweetsToPost, "LocalTweetsToPost", true ); // added line
Esta fórmula determina se o dispositivo está online:
- Se o dispositivo estiver online, ele postará o tweet imediatamente.
- Se o dispositivo estiver offline, ele capturará o tweet em uma coleção LocalTweetsToPost e o salvará no dispositivo.
Em seguida, a fórmula redefinirá o texto na caixa de entrada de texto.
Etapa 7: verificar novos tweets
No lado direito do botão, adicione um controle Temporizador.
Defina a propriedade Duration do timer como 300000.
Defina as propriedades AutoStart e Repeat como true.
Defina OnTimerEnd do timer com esta fórmula:
If( Connection.Connected, ForAll( LocalTweetsToPost, Twitter.Tweet( "", {tweetText: tweetText} ) ); Clear( LocalTweetsToPost ); ClearCollect( LocalTweets, Twitter.SearchTweet( "PowerApps", {maxResults: 10} ) ); SaveData( LocalTweets, "LocalTweets" ); )
Esta fórmula determina se o dispositivo está online. Se estiver, o aplicativo enviará tweets de todos os itens na coleção LocalTweetsToPost e depois limpará a coleção.
Testar o aplicativo
Abra o aplicativo usando Power Apps Mobile em um dispositivo móvel conectado à Internet.
Os tweets existentes aparecerão na galeria e o status mostrará Conectado.
Desconecte o dispositivo da Internet, ativando o modo avião do dispositivo e desativando o wi-fi.
O rótulo de status mostrará que o aplicativo está Offline.
Enquanto o dispositivo estiver offline, escreva um tweet que inclua Power Apps e selecione o botão Tweet.
O tweet será armazenado localmente na coleção LocalTweetsToPost.
Reconecte o dispositivo da Internet, desativando o modo avião do dispositivo e desativando o wi-fi.
Dentro de cinco minutos, o aplicativo posta o tweet, que aparece na galeria.
Esperamos que este artigo forneça uma ideia das funcionalidades contidas no Power Apps para a criação de aplicativos offline. Como sempre, forneça comentários em nosso fórum e compartilhe exemplos de aplicativos offline no blog da comunidade do Power Apps.
Observação
Você pode nos falar mais sobre suas preferências de idioma para documentação? Faça uma pesquisa rápida. (Observe que esta pesquisa está em inglês)
A pesquisa levará cerca de sete minutos. Nenhum dado pessoal é coletado (política de privacidade).