Tworzenie aplikacji kanwy działających offlineDevelop offline-capable canvas apps

Użytkownicy mobilni często muszą być produktywni nawet wtedy, gdy mają ograniczoną łączność lub nie mają łączności.Mobile users often need to be productive even when they have limited or no connectivity. Podczas tworzenia aplikacji kanwy można wykonać następujące zadania:When you build a canvas app, you can perform these tasks:

  • Otwórz aplikację zaawansowane aplikacje mobilne i uruchom aplikacje w trybie offline.Open Power Apps Mobile and run apps when offline.
  • Określ, kiedy aplikacja jest w trybie offline, online lub używa mierzonego połączenia, wykorzystując obiekt sygnału Połączenie.Determine when an app is offline, online, or in a metered connection by using the Connection signal object.
  • Używaj kolekcji i korzystaj z funkcji loaddata i SaveData dla podstawowego magazynu danych w trybie offline.Use collections and leverage the LoadData and SaveData functions for basic data storage when offline.

Ten artykuł zawiera przykład użycia danych usługi Twitter.This article includes an example using Twitter data. Jeszcze łatwiejszym przykładem, który nie wymaga połączenia, jest dołączenie do odwołania do funkcji loaddata i SaveData .An even simpler example that doesn't require a connection is included in the LoadData and SaveData function reference.

OgraniczeniaLimitations

Loaddata i SaveData Połącz, aby utworzyć prosty mechanizm przechowywania małych ilości danych na urządzeniu lokalnym.LoadData and SaveData combine to form a simple mechanism to store small amounts of data on a local device. Korzystając z tych funkcji, można dodać proste możliwości offline do aplikacji.By using these functions, you can add simple offline capabilities to your app.

Te funkcje są ograniczone przez ilość dostępnej pamięci aplikacji, ponieważ działają na kolekcji w pamięci.These functions are limited by the amount of available app memory because they operate on an in-memory collection. Dostępna pamięć może się różnić w zależności od urządzenia, systemu operacyjnego, pamięci używanej przez aplikacje do zarządzania urządzeniami przenośnymi oraz złożoności aplikacji pod kątem ekranów i kontrolek.Available memory can vary depending on the device, the operating system, the memory that Power Apps Mobile uses, and the complexity of the app in terms of screens and controls. Jeśli przechowujesz więcej niż kilka megabajtów danych, przetestuj swoją aplikację z oczekiwanymi scenariuszami na urządzeniach, na których oczekujesz.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. Ogólnie rzecz biorąc masz 30-70 megabajtów dostępnej pamięci.You'll generally have 30-70 megabytes of available memory.

Funkcje te nie również automatycznie rozwiązują konflikty scalania, gdy urządzenie przejdzie do trybu online.The functions also don't automatically resolve merge conflicts when a device comes online. Konfiguracja zapisywanych danych i sposób obsługi ponownego połączenia jest do producenta podczas pisania wyrażeń.Configuration on what data is saved and how to handle reconnection is up to the maker when writing expressions.

Aby uzyskać aktualizacje dotyczące możliwości w trybie offline, Wróć do tego tematu i Zasubskrybuj Blog dotyczący usługi Apps.For updates on offline capabilities, return to this topic, and subscribe to the Power Apps blog.

PrzeglądOverview

Podczas projektowania scenariuszy w trybie offline należy najpierw rozważyć, w jaki sposób aplikacje pracują z danymi.When you design offline scenarios, you should first consider how your apps work with data. Aplikacje w usłudze aplikacje zaawansowane uzyskują dostęp do danych za pomocą zestawu łączników udostępnianych przez platformę, takich jak SharePoint, Office 365 i Common Data Service.Apps in Power Apps primarily access data through a set of connectors that the platform provides, such as SharePoint, Office 365, and Common Data Service. Możesz również tworzyć łączniki niestandardowe, które umożliwiają aplikacjom dostęp do dowolnej usługi, którą udostępnia punkt końcowy usługi RESTful.You can also build custom connectors that enable apps to access any service that provides a RESTful endpoint. Może to być internetowy interfejs API lub usługi, takie jak usługa Azure Functions.This could be a Web API or a service such as Azure Functions. Wszystkie te łączniki używają protokołu HTTPS przez Internet, co oznacza, że użytkownicy muszą być online, aby mieć dostęp do danych i innych funkcji, które oferuje usługa.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.

Aplikacja dla aplikacji zaawansowanych z łącznikami

Obsługa danych w trybie offlineHandling offline data

W usłudze aplikacje zaawansowane można filtrować, wyszukiwać, sortować, agregować i manipulować danymi w spójny sposób, niezależnie od źródła danych.In Power Apps, you can filter, search, sort, aggregate, and manipulate data in a consistent way regardless of the data source. Zakres źródeł z kolekcji w pamięci w aplikacji do list programu SharePoint z bazami danych SQL i Common Data Service.Sources range from in-memory collections in the app to SharePoint lists to SQL databases and Common Data Service. Ze względu na tę spójność można łatwo przekierować aplikację do korzystania z innego źródła danych.Because of this consistency, you can easily retarget an app to use a different data source. Dokładniej w przypadku scenariuszy w trybie offline można używać lokalnych kolekcji do zarządzania danymi bez niemal zmian w logice aplikacji.More importantly for offline scenarios, you can use local collections for data management with almost no changes to an app's logic. W rzeczywistości lokalne kolekcje są podstawowym mechanizmem obsługi danych w trybie offline.In fact, local collections are the primary mechanism for handling offline data.

Tworzenie aplikacji w trybie offlineBuild an offline app

Aby zachować fokus w aspektach tworzenia aplikacji w trybie offline, w tym temacie przedstawiono prosty scenariusz skoncentrowany na usłudze Twitter.To keep the focus on the offline aspects of app development, this topic illustrates a simple scenario focused around Twitter. Utworzysz aplikację, która umożliwia odczytywanie ogłoszeń usługi Twitter i przesyłanie tweetów podczas pracy w trybie offline.You'll build an app that enables you to read Twitter posts and submit tweets while being offline. Gdy aplikacja przejdzie w tryb online, opublikuje tweety i przeładuje dane lokalne.When the app comes online, the app posts tweets and reloads the local data.

Na wysokim poziomie aplikacja wykonuje następujące zadania:At a high level, the app performs these tasks:

  • Gdy użytkownik otworzy aplikację:When the user opens the app:

    • Jeśli urządzenie jest w trybie online, aplikacja pobiera dane za pomocą łącznika usługi Twitter i wypełnia kolekcję danymi.If the device is online, the app fetches data through the Twitter connector and populates a collection with that data.
    • Jeśli urządzenie jest w trybie offline, aplikacja ładuje dane z lokalnego pliku pamięci podręcznej za pomocą funkcji loaddata .If the device is offline, the app loads the data from a local cache file by using the LoadData function.
    • Użytkownik może przesyłać tweety.The user can submit tweets. Jeśli aplikacja jest w trybie online, publikuje tweety bezpośrednio w serwisie Twitter i odświeża lokalną pamięć podręczną.If the app is online, it posts the tweets directly to Twitter and refreshes the local cache.
  • Co pięć minut, gdy aplikacja jest w trybie online:Every five minutes while the app is online:

    • Aplikacja publikuje wszystkie tweety w lokalnej pamięci podręcznej.The app posts any tweets in the local cache.
    • Aplikacja odświeża lokalną pamięć podręczną i zapisuje ją przy użyciu funkcji SaveData .The app refreshes the local cache and saves it by using the SaveData function.

Krok 1. Dodawanie usługi Twitter do pustej aplikacji na telefonieStep 1: Add Twitter to a blank phone app

  1. W programie PowerShell Apps Studio wybierz pozycję plik > Nowy.In Power Apps Studio, select File > New.
  2. Na kafelku Pusta aplikacja wybierz pozycję Układ telefonu.On the Blank app tile, select Phone layout.
  3. Na karcie Widok wybierz pozycję Źródła danych.On the View tab, select Data sources.
  4. W okienku dane wybierz pozycję Dodaj źródło danych.In the Data pane, select Add data source.
  5. Wybierz pozycję nowe połączenie > serwisie Twitter > Utwórz.Select New Connection > Twitter > Create.
  6. Wprowadź swoje poświadczenia, Utwórz połączenie, a następnie zamknij okienko dane .Enter your credentials, create the connection, and then close the Data pane.

Krok 2. zbieranie istniejących tweetówStep 2: Collect existing tweets

  1. W okienku widoku drzewa wybierz pozycję aplikacja, a następnie ustaw jej właściwość OnStart na następującą formułę: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" );;
    

    formułę ładowania tweetówFormula to load tweets

  2. W okienku widoku drzewa wybierz menu wielokropka dla obiektu aplikacji , a następnie wybierz polecenie Uruchom OnStart , aby uruchomić tę formułę.In the Tree view pane, select the ellipsis menu for the App object, and then select Run OnStart to run that formula.

    Uruchom formułę, aby załadować tweetyRun formula to load tweets

    Uwaga

    Funkcje loaddata i SaveData mogą zawierać błąd w programie PowerShell Apps Studio, ponieważ przeglądarki nie obsługują tych funkcji.The LoadData and SaveData functions might show an error in Power Apps Studio because browsers don't support them. Jednak będą one działać normalnie po wdrożeniu tej aplikacji na urządzeniu.However, they'll perform normally after you deploy this app to a device.

Ta formuła sprawdza, czy urządzenie jest w trybie online:This formula checks whether the device is online:

  • Jeśli urządzenie jest w trybie online, formuła ładuje do 10 tweetów z wyszukiwanym terminem "PowerApps" do kolekcji LocalTweets .If the device is online, the formula loads up to 10 tweets with the search term "PowerApps" into a LocalTweets collection.
  • Jeśli urządzenie jest w trybie offline, formuła ładuje lokalną pamięć podręczną z pliku o nazwie "LocalTweets", jeśli jest dostępny.If the device is offline, the formula loads the local cache from a file called "LocalTweets" if it's available.
  1. Na karcie Wstawianie wybierz pozycję Galeria > pustej elastycznej wysokości.On the Insert tab, select Gallery > Blank flexible height.

  2. Ustaw właściwość Items kontrolki Galeria na LocalTweets.Set the Items property of the Gallery control to LocalTweets.

  3. W szablonie galerii Dodaj trzy kontrolki etykieta i ustaw właściwość Text każdej etykiety na jedną z następujących wartości: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. Wprowadź pogrubienie tekstu w ostatniej etykiecie, aby Galeria była podobna do tego przykładu.Make the text in the last label bold so that the gallery resembles this example.

    Galeria prezentująca przykładowe tweetyGallery showing sample tweets

Krok 4. Wyświetlanie stanu połączeniaStep 4: Show connection status

  1. W galerii Wstaw etykietę, a następnie ustaw jej właściwość Color na czerwony.Under the gallery, insert a label, and then set its Color property to Red.

  2. Ustaw właściwość Text najnowszej etykiety na następującą formułę:Set the newest label's Text property to this formula:

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

Ta formuła określa, czy urządzenie jest w trybie online.This formula determines whether the device is online. Jeśli tak, etykieta pokazuje połączone; w przeciwnym razie zostanie ona wyświetlona w trybie offline.If it is, the label shows Connected; otherwise, it shows Offline.

Krok 5. Dodawanie pola do redagowania tweetówStep 5: Add a box to compose tweets

  1. W etykiecie stan połączenia Wstaw kontrolkę wprowadzanie tekstu i zmień jej nazwę na NewTweetTextInput.Under the connection-status label, insert a Text input control, and rename it NewTweetTextInput.

  2. Ustaw domyślną właściwość pola tekstowego do "".Set the text-input box's Default property to "".

    Galeria a przez informacje o stanie i pole wprowadzania tekstuGallery over status info and text-input box

Krok 6. dodanie przycisku w celu opublikowania tweetuStep 6: Add a button to post the tweet

  1. W polu tekstowym wprowadzanie tekstu Dodaj kontrolkę przycisk i ustaw jej właściwość Text na tę wartość:Under the text-input box, add a Button control, and set its Text property to this value:

    "Tweet"

  2. Ustaw właściwość OnSelect przycisku na następującą formułę: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. We właściwości OnStart aplikacjiDodaj wiersz na końcu formuły: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
    

    Uruchom formułę, aby załadować tweety z niekomentowanym wierszemRun formula to load tweets with uncommented line

Ta formuła określa, czy urządzenie jest w trybie online:This formula determines whether the device is online:

  • Jeśli urządzenie jest w trybie online, natychmiast publikuje Tweet.If the device is online, it posts the tweet immediately.
  • Jeśli urządzenie jest w trybie offline, przechwytuje Tweet w kolekcji LocalTweetsToPost i zapisuje go na urządzeniu.If the device is offline, it captures the tweet in a LocalTweetsToPost collection and saves it to the device.

Następnie formuła resetuje tekst w polu tekstowym wprowadzanie tekstu.Then the formula resets the text in the text-input box.

Krok 7. Sprawdzanie, czy są nowe tweetyStep 7: Check for new tweets

  1. Po prawej stronie przycisku Dodaj formant czasomierza .On the right side of the button, add a Timer control.

    końcowe aplikacjeFinal apps

  2. Ustaw właściwość Duration czasomierza na 300000.Set the timer's Duration property to 300000.

  3. Ustaw właściwości Autostart i REPEAT czasomierza na wartość true.Set the timer's AutoStart and Repeat properties to true.

  4. Ustaw OnTimerEnd czasomierza na następującą formułę: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" );;
    )
    

Ta formuła określa, czy urządzenie jest w trybie online.This formula determines whether the device is online. Jeśli tak jest, aplikacja będzie tweetować wszystkie elementy w kolekcji LocalTweetsToPost , a następnie czyści kolekcję.If it is, the app tweets all the items in the LocalTweetsToPost collection and then clears the collection.

Testowanie aplikacjiTest the app

  1. Otwórz aplikację na urządzeniu przenośnym połączonym z Internetem.Open the app on a mobile device that's connected to the Internet.

    Istniejące tweety pojawiają się w galerii, a stan pokazuje połączone.Existing tweets appear in the gallery, and the status shows Connected.

  2. Odłącz urządzenie od Internetu, włączając tryb samolotowy urządzenia i wyłączając sieć Wi-Fi.Disconnect the device from the Internet by enabling the device's airplane mode and disabling wi-fi.

    Etykieta stanu pokazuje, że aplikacja jest w trybie offline.The status label shows that the app is Offline.

  3. Gdy urządzenie jest w trybie offline, napisz Tweet zawierający usługę powerapps, a następnie wybierz przycisk Tweet .While the device is offline, write a tweet that includes PowerApps, and then select the Tweet button.

    Tweet jest przechowywany lokalnie w kolekcji LocalTweetsToPost .The tweet is stored locally in the LocalTweetsToPost collection.

  4. Podłącz ponownie urządzenie do Internetu, wyłączając tryb samolotowy urządzenia i włączając sieć Wi-Fi.Reconnect the device to the Internet by disabling the device's airplane mode and enabling wi-fi.

    W ciągu pięciu minut aplikacja publikuje Tweet, który pojawia się w galerii.Within five minutes, the app posts the tweet, which appears in the gallery.

Mamy nadzieję, że ten artykuł zawiera omówienie możliwości tworzenia aplikacji w trybie offline przez aplikacje usługi.We hope this article gives you an idea of the capabilities that Power Apps has for building offline apps. Jak zawsze, Prześlij opinię na naszym forum i Podziel się przykładami aplikacji w trybie offline w blogu społeczności aplikacji zaawansowanychAs always, please provide feedback in our forum and share your examples of offline apps in the Power Apps community blog.