Desenvolver aplicações aplicações de tela com funcionalidade offline

Normalmente, os utilizadores móveis têm de ser produtivos, mesmo que tenham conectividade limitada ou nenhuma. Quando cria uma aplicação aplicações de tela, pode efetuar estas tarefas:

  • Abrir o Power Apps Mobile e executar aplicações quando estiver offline.
  • Determinar quando uma aplicação está offline, online ou numa ligação limitada, com o objeto do sinal de Ligação.
  • Utilizar coleções e tirar partido das funções LoadData e SaveData para armazenamento de dados básico quando estiver offline.

Este artigo inclui um exemplo de dados do Twitter. Um exemplo ainda mais simples que não necessita de uma ligação é incluído na referência de funções LoadData e SaveData.

Limitações

LoadData e o SaveData combinam para formar um mecanismo simples para armazenar pequenas quantidades de dados num dispositivo local. Ao utilizar estas funções pode adicionar capacidades offline simples à sua aplicação.

Estas funções estão limitadas pela quantidade de memória da aplicação disponível porque operam numa coleção de memória. A memória disponível pode variar consoante o dispositivo, o sistema operativo, a memória utilizada pelo Power Apps Mobile e a complexidade da aplicação em termos de ecrãs e controlos. Se armazenar mais do que alguns megabytes de dados, teste a sua aplicação com cenários esperados nos dispositivos nos quais espera que a mesma seja executada. Geralmente, terá 30-70 megabytes de memória disponível.

As funções também não resolvem automaticamente os conflitos de união quando um dispositivo é colocado online. A configuração em que os dados são guardados e a forma de processar o restabelecimento da ligação consiste no criador ao escrever expressões.

Para obter atualizações sobre capacidades offline, regresse a este tópico e subscreva o blogue do Power Apps.

Descrição Geral

Quando cria cenários offline, deve considerar primeiro o modo como as aplicações trabalham com dados. Aplicações no Power Apps acedem principalmente a dados através de um conjunto de conectores que a plataforma fornece, tais como SharePoint, Office 365 e Common Data Service. Também pode criar conectores personalizados que permitem às aplicações aceder a qualquer serviço que forneça um ponto final RESTful. Isto pode ser uma API Web ou um serviço, como as Funções do Azure. Todos estes conectores utilizam HTTPS na Internet, o que significa que os utilizadores têm de estar online para acederem aos dados e a outras funcionalidades oferecidas por um serviço.

Aplicação do Power Apps com conectores

Processar dados offline

No Power Apps, pode filtrar, pesquisar, ordenar, agregar e manipular dados de uma forma consistente, independentemente da origem de dados. As origens variam desde coleções na memória na aplicação a listas do SharePoint para bases de dados SQL e Common Data Service. Devido a esta consistência, pode redirecionar facilmente uma aplicação para utilizar uma origem de dados diferente. Mais importante ainda para cenários offline, também pode utilizar coleções locais para a gestão de dados, quase sem alterações à lógica da aplicação. De facto, as coleções locais são o mecanismo primário para processar dados offline.

Criar uma aplicação offline

Para manter o foco nos aspetos offline de desenvolvimento de aplicações, este tópico ilustra um simples cenário centrado no Twitter. Irá criar uma aplicação que lhe permite ler mensagens do Twitter e submeter tweets quando estiver offline. Quando a aplicação ficar online, a aplicação publica os tweets e recarrega os dados locais.

Num alto nível, a aplicação efetua estas tarefas:

  • Quando o utilizador abre a aplicação:

    • Se o dispositivo estiver online, a aplicação obtém dados através do conector do Twitter e preenche uma coleção com esses dados.
    • Se o dispositivo estiver offline, a aplicação carrega os dados a partir de um ficheiro de cache local utilizando a função LoadData.
    • O utilizador pode submeter tweets. Se a aplicação estiver online, a mesma publica os tweets diretamente no Twitter e atualiza o cache local.
  • A cada cinco minutos enquanto a aplicação está online:

    • A aplicação publica eventuais tweets na cache local.
    • A aplicação atualiza a cache local e guarda-a utilizando a função SaveData.

Passo 1: Adicionar o Twitter a uma aplicação para telemóvel em branco

  1. No Power Apps Studio, selecione Ficheiro > Novo.
  2. No mosaico Aplicação em branco, selecione Esquema de telemóvel.
  3. No separador Ver, selecione Origens de dados.
  4. No painel Dados, selecione Adicionar origem de dados.
  5. Selecione Nova Ligação > Twitter > Criar.
  6. Introduza as suas credenciais, crie a ligação e, em seguida, feche o painel Dados.

Passo 2: Recolher tweets existentes

  1. No painel Vista de árvore, selecione Aplicação e, em seguida, defina a propriedade OnStart como 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 da Aplicação e, em seguida, selecione Executar OnStart para executar essa fórmula.

    Executar fórmula para carregar tweets

    Nota

    As funções LoadData e SaveData podem mostrar um erro no Power Apps Studio porque os browsers não os suportam. No entanto, serão executados normalmente depois de implementar esta aplicação num dispositivo.

Esta fórmula verifica se o dispositivo está online:

  • Se o dispositivo estiver online, a fórmula carrega até 10 tweets com o termo de pesquisa "PowerApps" para uma coleção LocalTweets.
  • Se o dispositivo estiver offline, a fórmula carrega a cache local de um ficheiro chamado "LocalTweets", se estiver disponível.
  1. No separador Inserir, selecione Galeria > Altura flexível em branco.

  2. Defina a propriedade Itens do controlo Galeria para LocalTweets.

  3. No modelo de galeria, adicione três controlos de Etiqueta e defina a propriedade de Texto de cada etiqueta com um destes valores:

    • ThisItem.UserDetails.FullName & " (@" & ThisItem.UserDetails.UserName & ")"
    • Text(DateTimeValue(ThisItem.CreatedAtIso), DateTimeFormat.ShortDateTime)
    • ThisItem.TweetText
  4. Coloque o texto na última etiqueta em negrito para que a galeria se assemelhe a este exemplo.

    Galeria que mostra tweets de exemplo

Passo 4: Mostrar estado da ligação

  1. Na galeria, introduza uma etiqueta e, em seguida, defina a propriedade de Cor como Vermelho.

  2. Defina a propriedade Texto da etiqueta mais recente como esta fórmula:

    If( Connection.Connected, "Connected", "Offline" )

Esta fórmula determina se o dispositivo está online. Se estiver, a etiqueta é Ligado, caso contrário, mostra Offline.

Passo 5: Adicionar uma caixa para compor tweets

  1. Na etiqueta de estado de ligação, introduza um controlo de Entrada de texto e renomeie-o como NewTweetTextInput.

  2. Definir a propriedade Predefinida da caixa da entrada de texto para "".

    Galeria sobre informações de estado e caixa de entrada de texto

Passo 6: Adicionar um botão para publicar o tweet

  1. Na caixa de entrada de texto, adicione um controlo de Botão e defina a respetiva propriedade de Texto para este valor:

    "Tweet"

  2. Defina a propriedade OnSelect do botão como 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 para a Aplicação, adicione uma linha no final 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 a fórmula para carregar tweets com linha não comentada

Esta fórmula determina se o dispositivo está online:

  • Se o dispositivo estiver online, publica imediatamente um tweet.
  • Se o dispositivo estiver offline, o tweet é capturado numa coleção LocalTweetsToPost e guardado no dispositivo.

Em seguida, a fórmula repõe o texto na caixa de entrada de texto.

Passo 7: Procurar novos tweets

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

    Aplicações finais

  2. Defina a propriedade Duração do temporizador para 300000.

  3. Defina as propriedades AutoStart e Repeat do temporizador como true.

  4. Defina OnTimerEnd do temporizador para 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, a aplicação envia um tweet para todos os itens na coleção LocalTweetsToPost e, em seguida, limpa a coleção.

Testar a aplicação

  1. Abra a aplicação num dispositivo móvel que esteja ligado à Internet.

    Os tweets existentes são apresentados na galeria e o estado mostra Ligado.

  2. Desligue o dispositivo da Internet ativando o modo de avião do dispositivo e desativando o Wi-Fi.

    A etiqueta de estado mostra que a aplicação está Offline.

  3. Enquanto o dispositivo estiver offline, escreva um tweet que inclui Power Apps e, em seguida, selecione o botão Tweet.

    O tweet é armazenado localmente na coleção LocalTweetsToPost.

  4. Volte a ligar o dispositivo à Internet desativando o modo de avião do dispositivo e ativando o Wi-Fi.

    Em cinco minutos, a aplicação publica o tweet, a qual aparece na galeria.

Esperamos que este artigo lhe proporcione uma noção das funcionalidades do Power Apps para criar aplicações offline. Como sempre, introduza comentários no nosso fórum e partilhe os seus exemplos de aplicações offline no Blogue da comunidade do Power Apps.