Partilhar via


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:

  • Abra o Power Apps Mobile e execute as aplicações quando o dispositivo não estiver ligado à rede.
  • Determinar quando uma aplicação está offline, online ou numa ligação limitada, com o objeto do sinal de Ligação.
  • Sincronize dados entre o dispositivo e o servidor.

Se a sua aplicação se ligar ao Dataverse, o suporte offline está incorporado. O Power Apps permitirá transferir dados para o seu dispositivo e carregar as alterações para o Dataverse. Se a aplicação não utilizar o Dataverse, pode usar coleções e tirar partido das funções LoadData e SaveData para armazenamento de dados básico quando estiver offline.

Nota

  • A capacidade offline para aplicações de tela está disponível enquanto executa as aplicações que utilizam leitores nativos do Power Apps Mobile em iOS, Android e Windows.
  • As aplicações de tela que funcionam nos browsers Web não podem ser executadas offline, mesmo quando se utiliza um browser Web num dispositivo móvel.
  • As aplicações de tela no Teams estão limitadas a 1 MB de dados através das funções LoadData e SaveData—úteis para um pequeno número de cadeias de texto, números e datas. A utilização de imagens ou de outros tipos de multimédia é inadequada para este limite. Mais informações: referência da função LoadData e SaveData

Ativar suporte offline numa aplicação de tela baseada em Dataverse

Para aplicações de tela baseadas no Microsoft Dataverse, deve utilizar a capacidade offline incorporada na experiência primeiro offline. Para obter mais informações, consulte Configurar o Mobile Offline para aplicações de tela e Trabalhar com aplicações de tela offline. Com um interruptor, a sua aplicação pode trabalhar com dados do Dataverse onde quer que esteja, com ou sem ligação de rede. Basta criar a sua aplicação com fórmulas padrão do Power Fx e a funcionalidade offline trata de toda a complexidade por si.

Utilizar LoadData e SaveData para todos os outros conectores

Esta secção 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.

Veja este vídeo para aprender a criar aplicações de tela ativadas offline que não usam dados Dataverse:

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 Microsoft Dataverse. 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 criadas utilizando Listas Microsoft para bases de dados SQL e Dataverse. 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. Crie uma aplicação de tela em branco com o esquema Telefone.
  2. No separador Ver, selecione Origens de dados.
  3. No painel Dados, selecione Adicionar origem de dados.
  4. Selecione Nova Ligação > Twitter > Criar.
  5. 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 Default 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 que utiliza o Power Apps Mobile num dispositivo móvel que está 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.

Nota

Pode indicar-nos as suas preferências no que se refere ao idioma da documentação? Responda a um breve inquérito. (tenha em atenção que o inquérito está em inglês)

O inquérito irá demorar cerca de sete minutos. Não são recolhidos dados pessoais (declaração de privacidade).