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 estiver offline.
  • Determine quando um aplicativo está offline, online ou em uma conexão limitada usando o objeto de sinal Connection.
  • Use as coleções e aproveite as funções LoadData e SaveData para armazenamento de dados básicos quando estiver offline.

Observação

Este artigo 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 aprender a criar aplicativos de tela habilitados para uso offline:

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.

Aplicativo do Power Apps com conectores.

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

  1. Crie um aplicativo de tela em branco com layout para Smartphone.
  2. Na guia Exibir, selecione Fontes de dados.
  3. No painel Dados, selecione Adicionar fonte de dados.
  4. Selecione Nova Conexão > Twitter > Criar.
  5. Digite suas credenciais, crie a conexão e feche o painel Dados.

Etapa 2: Coletar tweets existentes

  1. 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" );
    

    Fórmula para carregar tweets.

  2. 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.

    Executar fórmula para carregar tweets.

    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.
  1. Na guia Inserir, selecione Galeria > Altura flexível em branco.

  2. Defina a propriedade Items do controle Galeria como LocalTweets.

  3. 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
  4. Coloque o texto no último rótulo em negrito, para que a galeria se pareça com este exemplo.

    Galeria mostrando exemplos de tweets.

Etapa 4: mostrar status da conexão

  1. Na galeria, insira um rótulo e defina sua propriedade Cor como Vermelho.

  2. 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

  1. Sob o rótulo de status da conexão, insira um controle Entrada de texto e renomeie-o como NewTweetTextInput.

  2. Defina a propriedade Default da caixa de entrada de texto como "".

    Galeria sobre informações de status e caixa de entrada de texto.

Etapa 6: adicionar um botão para postar o tweet

  1. Na caixa de entrada de texto, adicione um controle Botão e defina sua propriedade Text como este valor:

    "Tweet"

  2. 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 );
    
  3. 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
    

    Executar fórmula para carregar tweets com linha não comentada.

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

  1. No lado direito do botão, adicione um controle Temporizador.

    Aplicativos finais.

  2. Defina a propriedade Duration do timer como 300000.

  3. Defina as propriedades AutoStart e Repeat como true.

  4. 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

  1. 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.

  2. 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.

  3. 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.

  4. 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).