Desenvolver aplicações baseadas em telas com funcionalidade offlineDevelop offline-capable canvas apps

Os usuários móveis freqüentemente precisam para serem produtivos, mesmo quando eles limitada ou nenhuma conectividade.Mobile users often need to be productive even when they have limited or no connectivity. Quando cria uma aplicação baseada em telas, pode realizar estas tarefas:When you build a canvas app, you can perform these tasks:

  • Abra o PowerApps Mobile e execute aplicações quando estiver offline.Open PowerApps Mobile and run apps when offline.
  • Determinar quando uma aplicação está offline, online ou numa ligação limitada, com o objeto do sinal de Ligação.Determine when an app is offline, online, or in a metered connection by using the Connection signal object.
  • Utilizar coleções e tirar partido de funções, como LoadData e SaveData para armazenamento de dados básico quando estiver offline.Use collections and leverage functions such as LoadData and SaveData for basic data storage when offline.

LimitaçõesLimitations

LoadData e SaveData combinação para formar um mecanismo simples para armazenar pequenas quantidades de dados num dispositivo local.LoadData and SaveData combine to form a simple mechanism to store small amounts of data on a local device. Através destas funções, pode adicionar recursos simples de offline para a sua aplicação.By using these functions, you can add simple offline capabilities to your app.

Estas funções estão limitadas pela quantidade de memória de aplicação disponível, porque eles operam numa coleção em memória.These functions are limited by the amount of available app memory because they operate on an in-memory collection. Memória disponível pode variar consoante o dispositivo, o sistema operativo, a memória que utiliza o PowerApps Mobile e a complexidade da aplicação em termos de ecrãs e controlos.Available memory can vary depending on the device, the operating system, the memory that PowerApps Mobile uses, and the complexity of the app in terms of screens and controls. Se armazenar mais do que alguns megabytes de dados, teste a sua aplicação com cenários esperados nos dispositivos em que espera que seja executado.If you store more than a few megabytes of data, test your app with expected scenarios on the devices on which you expect it to run. Em geral, terá que 30 70 megabytes de memória disponível.You'll generally have 30-70 megabytes of available memory.

As funções também não automaticamente resolverem conflitos de intercalação quando um dispositivo estiver online.The functions also don't automatically resolve merge conflicts when a device comes online. A configuração em que os dados são guardados e como lidar com o restabelecimento de ligação é até o criador ao escrever expressões.Configuration on what data is saved and how to handle reconnection is up to the maker when writing expressions.

Para obter atualizações sobre as capacidades offline, regresse a este tópico e subscrever os blogue do PowerApps.For updates on offline capabilities, return to this topic, and subscribe to the PowerApps blog.

Descrição geralOverview

Quando projeta a cenários offline, deve considerar primeiro como as suas aplicações trabalham com dados.When you design offline scenarios, you should first consider how your apps work with data. Aplicações no PowerApps aos dados, principalmente por meio de um conjunto de conectores que fornece a plataforma, como o SharePoint, o Office 365 e o Common Data Service.Apps in PowerApps primarily access data through a set of connectors that the platform provides, such as SharePoint, Office 365, and Common Data Service. Também pode criar conectores personalizados que permitem às aplicações aceder a qualquer serviço que forneça um ponto de final RESTful.You can also build custom connectors that enable apps to access any service that provides a RESTful endpoint. Isto pode ser uma API Web ou um serviço, como as Funções do Azure.This could be a Web API or a service such as Azure Functions. 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.All these connectors use HTTPS over the Internet, which means your users must be online for them to access data and any other capabilities that a service offers.

Aplicação do PowerApps com conectores

Processar dados offlineHandling offline data

No PowerApps, pode filtrar, procurar, ordenar, Agregar e manipular dados de uma forma consistente, independentemente da origem de dados.In PowerApps, you can filter, search, sort, aggregate, and manipulate data in a consistent way regardless of the data source. As origens vão desde coleções na memória na aplicação para listas do SharePoint para bases de dados SQL e o Common Data Service.Sources range from in-memory collections in the app to SharePoint lists to SQL databases and Common Data Service. Devido a essa consistência, pode facilmente redirecionar uma aplicação para utilizar uma origem de dados diferentes.Because of this consistency, you can easily retarget an app to use a different data source. Mais importante para cenários offline, pode utilizar coleções locais para a gestão de dados quase sem alterações à lógica da aplicação.More importantly for offline scenarios, you can use local collections for data management with almost no changes to an app's logic. De facto, as coleções locais são o mecanismo primário para processar dados offline.In fact, local collections are the primary mechanism for handling offline data.

Criar uma aplicação offlineBuild an offline app

Para manter o foco nos aspetos offline de desenvolvimento de aplicações, este tópico ilustra um simple cenário centrado no Twitter.To keep the focus on the offline aspects of app development, this topic illustrates a simple scenario focused around Twitter. Irá criar uma aplicação que lhe permite ler mensagens do Twitter e submeter tweets quando estiver offline.You'll build an app that enables you to read Twitter posts and submit tweets while being offline. Quando a aplicação ficar online, a aplicação publica os tweets e recarrega os dados locais.When the app comes online, the app posts tweets and reloads the local data.

Num alto nível, a aplicação executa estas tarefas:At a high level, the app performs these tasks:

  • Quando o usuário abre a aplicação:When the user opens the app:

    • 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.If the device is online, the app fetches data through the Twitter connector and populates a collection with that data.
    • Se o dispositivo estiver offline, a aplicação carrega os dados de um ficheiro de local cache ao utilizar o LoadData função.If the device is offline, the app loads the data from a local cache file by using the LoadData function.
    • O usuário possa enviar tweets.The user can submit tweets. Se a aplicação estiver online, ele publica os tweets diretamente no Twitter e atualiza a cache local.If the app is online, it posts the tweets directly to Twitter and refreshes the local cache.
  • Cada cinco minutos enquanto a aplicação está online:Every five minutes while the app is online:

    • A aplicação publica qualquer tweets no local cache.The app posts any tweets in the local cache.
    • A aplicação atualiza a cache local e o salva utilizando o SaveData função.The app refreshes the local cache and saves it by using the SaveData function.

Passo 1: Adicionar o Twitter para uma aplicação para telemóvel em brancoStep 1: Add Twitter to a blank phone app

  1. No PowerApps Studio, selecione arquivo > New.In PowerApps Studio, select File > New.
  2. No mosaico Aplicação em branco, selecione Esquema de telemóvel.On the Blank app tile, select Phone layout.
  3. No separador Ver, selecione Origens de dados.On the View tab, select Data sources.
  4. Na dados painel, selecione Adicionar origem de dados.In the Data pane, select Add data source.
  5. Selecione nova ligação > Twitter > criar.Select New Connection > Twitter > Create.
  6. Introduza as suas credenciais, criar a ligação e, em seguida, feche o dados painel.Enter your credentials, create the connection, and then close the Data pane.

Passo 2: Recolher tweets existentesStep 2: Collect existing tweets

  1. Na vista de árvore painel, selecione Appe, em seguida, defina seu OnStart como esta fórmula:In the Tree view pane, select App, and then set its OnStart property to this formula:

    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 tweetsFormula to load tweets

  2. Na vista de árvore painel, selecione o menu de reticências para o App de objeto e, em seguida, selecione executar OnStart para executar essa fórmula.In the Tree view pane, select the ellipsis menu for the App object, and then select Run OnStart to run that formula.

    Executar a fórmula para carregar tweetsRun formula to load tweets

    Nota

    O LoadData e SaveData funções poderão mostrar um erro no PowerApps Studio, pois navegadores não oferecer suporte a eles.The LoadData and SaveData functions might show an error in PowerApps Studio because browsers don't support them. No entanto, eles irá executar normalmente depois de implementar esta aplicação num dispositivo.However, they'll perform normally after you deploy this app to a device.

Esta fórmula verifica se o dispositivo está online:This formula checks whether the device is online:

  • Se o dispositivo estiver online, a fórmula carrega até 10 tweets com o termo de pesquisa "PowerApps" para um Tweetslocais coleção.If the device is online, the formula loads up to 10 tweets with the search term "PowerApps" into a LocalTweets collection.
  • Se o dispositivo estiver offline, a fórmula carrega a cache local a partir de um arquivo chamado "Tweetslocais" se estiver disponível.If the device is offline, the formula loads the local cache from a file called "LocalTweets" if it's available.
  1. Sobre o inserir separador, selecione galeria > altura flexível em branco.On the Insert tab, select Gallery > Blank flexible height.

  2. Definir o itens propriedade da galeria controlar para LocalTweets.Set the Items property of the Gallery control to LocalTweets.

  3. No modelo de galeria, adicione três etiqueta controles e defina o texto propriedade de cada etiqueta para um dos seguintes valores:In the gallery template, add three Label controls, and set the Text property of each label to one of these values:

    • ThisItem.UserDetails.FullName & " (@" & ThisItem.UserDetails.UserName & ")"
    • Text(DateTimeValue(ThisItem.CreatedAtIso); DateTimeFormat.ShortDateTime)
    • ThisItem.TweetText
  4. Torne o texto na última etiqueta em negrito, para que a galeria é semelhante a este exemplo.Make the text in the last label bold so that the gallery resembles this example.

    Galeria que mostra os tweets de exemploGallery showing sample tweets

Step 4: Mostrar estado da ligaçãoStep 4: Show connection status

  1. Sob a galeria, insira uma etiqueta e, em seguida, defina seus cor propriedade Red.Under the gallery, insert a label, and then set its Color property to Red.

  2. Defina a etiqueta mais recente texto como esta fórmula:Set the newest label's Text property to this formula:

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

Esta fórmula determina se o dispositivo está online.This formula determines whether the device is online. Se for, a etiqueta mostra ligado; caso contrário, ele mostra Offline.If it is, the label shows Connected; otherwise, it shows Offline.

Step 5: Adicionar uma caixa de compor tweetsStep 5: Add a box to compose tweets

  1. Sob o rótulo de estado da ligação, inserir um introdução de texto controlar e mude o nome NewTweetTextInput.Under the connection-status label, insert a Text input control, and rename it NewTweetTextInput.

  2. Defina a caixa de entrada de texto predefinido propriedade "".Set the text-input box's Default property to "".

    Galeria sobre informações de estado e a caixa de entrada de textoGallery over status info and text-input box

Passo 6: Adicione um botão para publicar o tweetStep 6: Add a button to post the tweet

  1. Na caixa de entrada de texto, adicione uma botão controlar e defina seu texto propriedade a este valor:Under the text-input box, add a Button control, and set its Text property to this value:

    "Tweet"

  2. Definir o botão OnSelect como esta fórmula:Set the button's OnSelect property to this formula:

    If( Connection.Connected;
        Twitter.Tweet( ""; {tweetText: NewTweetTextInput.Text} );
        Collect( LocalTweetsToPost; {tweetText: NewTweetTextInput.Text} );;
            SaveData( LocalTweetsToPost; "LocalTweetsToPost" )
    );;
    Reset( NewTweetTextInput );;
    
  3. Na OnStart propriedade para o aplicação, adicione uma linha no final da fórmula:In the OnStart property for the App, add a line at the end of the formula:

    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 uncommentedRun formula to load tweets with uncommented line

Esta fórmula determina se o dispositivo está online:This formula determines whether the device is online:

  • Se o dispositivo estiver online, publica o tweet imediatamente.If the device is online, it posts the tweet immediately.
  • Se o dispositivo estiver offline, captura o tweet num LocalTweetsToPost coleção e guarda-o no dispositivo.If the device is offline, it captures the tweet in a LocalTweetsToPost collection and saves it to the device.

Em seguida, a fórmula repõe o texto na caixa de entrada de texto.Then the formula resets the text in the text-input box.

Passo 7: Verificar novos tweetsStep 7: Check for new tweets

  1. À direita do botão, adicione uma temporizador controle.On the right side of the button, add a Timer control.

    Aplicações finaisFinal apps

  2. Definir o temporizador duração propriedade 300000.Set the timer's Duration property to 300000.

  3. Definir o temporizador início automático e repetir propriedades para verdadeiro.Set the timer's AutoStart and Repeat properties to true.

  4. Definir o temporizador OnTimerEnd para esta fórmula:Set the timer's OnTimerEnd to this formula:

    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.This formula determines whether the device is online. Se for, a aplicação envia tweets de todos os itens a LocalTweetsToPost coleção e, em seguida, limpa a coleção.If it is, the app tweets all the items in the LocalTweetsToPost collection and then clears the collection.

Testar a aplicaçãoTest the app

  1. Abra a aplicação num dispositivo móvel que está ligado à Internet.Open the app on a mobile device that's connected to the Internet.

    Tweets existentes aparecem na galeria, e o estado é apresentado ligado.Existing tweets appear in the gallery, and the status shows Connected.

  2. Desligue o dispositivo da Internet, ativar o modo de avião do dispositivo e desativar o wi-fi.Disconnect the device from the Internet by enabling the device's airplane mode and disabling wi-fi.

    A etiqueta de estado mostra que a aplicação está Offline.The status label shows that the app is Offline.

  3. Enquanto o dispositivo está offline, escrever um tweet que inclui PowerAppse, em seguida, selecione a Tweet botão.While the device is offline, write a tweet that includes PowerApps, and then select the Tweet button.

    O tweet é armazenado localmente na LocalTweetsToPost coleção.The tweet is stored locally in the LocalTweetsToPost collection.

  4. Voltar a ligar o dispositivo à Internet ao desativar o modo de avião do dispositivo e ativar o wi-fi.Reconnect the device to the Internet by disabling the device's airplane mode and enabling wi-fi.

    Dentro de cinco minutos, a aplicação publica o tweet, o que é apresentada na galeria.Within five minutes, the app posts the tweet, which appears in the gallery.

Esperamos que este artigo lhe proporcione uma noção das funcionalidades do PowerApps para criar aplicações offline.We hope this article gives you an idea of the capabilities that PowerApps has for building offline apps. Como sempre, introduza comentários no nosso fórum e partilhe os seus exemplos de aplicações offline no Blogue da comunidade do PowerApps.As always, please provide feedback in our forum and share your examples of offline apps in the PowerApps community blog.