Entwickeln von offlinefähigen Canvas-AppsDevelop offline-capable canvas apps

Mobile Benutzer müssen häufig produktiv sein, auch wenn Sie über eingeschränkte oder keine Konnektivität verfügen.Mobile users often need to be productive even when they have limited or no connectivity. Wenn Sie eine Canvas-app erstellen, können Sie folgende Aufgaben ausführen:When you build a canvas app, you can perform these tasks:

  • Öffnen Sie powerapps Mobile, und führen Sie apps Offline aus.Open Power Apps Mobile and run apps when offline.
  • Mithilfe des Signalobjekts Connection bestimmen, ob eine App offline, online oder in einer getakteten Verbindung ist.Determine when an app is offline, online, or in a metered connection by using the Connection signal object.
  • Verwenden Sie Auflistungen, und nutzen Sie die LoadData -Funktion und die SaveData - Funktion für die grundlegende DatenspeicherungUse collections and leverage the LoadData and SaveData functions for basic data storage when offline.

Dieser Artikel enthält ein Beispiel für die Verwendung von Twitter-Daten.This article includes an example using Twitter data. Ein noch einfacheres Beispiel, das keine Verbindung erfordert, ist in der Funktionsreferenz " LoadData " und " SaveData " enthalten.An even simpler example that doesn't require a connection is included in the LoadData and SaveData function reference.

EinschränkungenLimitations

LoadData und SaveData bilden einen einfachen Mechanismus zum Speichern kleiner Datenmengen auf einem lokalen Gerät.LoadData and SaveData combine to form a simple mechanism to store small amounts of data on a local device. Mithilfe dieser Funktionen können Sie Ihrer app einfache Offline Funktionen hinzufügen.By using these functions, you can add simple offline capabilities to your app.

Diese Funktionen sind durch die Menge des verfügbaren APP-Speichers beschränkt, da Sie für eine Auflistung im Arbeitsspeicher ausgeführt werden.These functions are limited by the amount of available app memory because they operate on an in-memory collection. Der verfügbare Arbeitsspeicher kann abhängig vom Gerät, dem Betriebssystem, dem von Power Apps Mobile verwendeten Arbeitsspeicher und der Komplexität der app in Bezug auf Bildschirme und Steuerelemente variieren.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. Wenn Sie mehr als ein paar Megabyte Daten speichern, testen Sie Ihre APP mit den erwarteten Szenarien auf den Geräten, auf denen Sie erwarten, dass Sie ausgeführt werden.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. In der Regel verfügen Sie über 30-70 Megabyte an verfügbarem Arbeitsspeicher.You'll generally have 30-70 megabytes of available memory.

Die Funktionen lösen auch Mergekonflikte nicht automatisch auf, wenn ein Gerät online geschaltet wird.The functions also don't automatically resolve merge conflicts when a device comes online. Die Konfiguration, welche Daten gespeichert werden und wie die erneute Verbindung gehandhabt wird, ist beim Schreiben von Ausdrücken der Ersteller.Configuration on what data is saved and how to handle reconnection is up to the maker when writing expressions.

Weitere Informationen zu Offline Funktionen erhalten Sie, wenn Sie zu diesem Thema zurückkehren und den Blog zu Power appsabonnieren.For updates on offline capabilities, return to this topic, and subscribe to the Power Apps blog.

ÜbersichtOverview

Beim Entwerfen von Offline Szenarien sollten Sie zuerst berücksichtigen, wie Ihre apps mit Daten arbeiten.When you design offline scenarios, you should first consider how your apps work with data. Apps in Power apps greifen in erster Linie auf Daten über eine Reihe von Connectors zu, die die Plattform bereitstellt, z. b. SharePoint, Office 365 und 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. Darüber hinaus können Sie benutzerdefinierte Connectors erstellen, die Apps den Zugriff auf jeden Dienst ermöglichen, der einen RESTful-Endpunkt bereitstellt.You can also build custom connectors that enable apps to access any service that provides a RESTful endpoint. Dabei kann es sich um eine Web-API oder um einen Dienst handeln, wie etwa Azure Functions.This could be a Web API or a service such as Azure Functions. Alle diese Connectors verwenden HTTPS im Internet, was bedeutet, dass Ihre Benutzer online sein müssen, damit sie auf Daten und andere Funktionen zugreifen können, die von einem Dienst bereitgestellt werden.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.

Powerapps-App mit Connectors

Verarbeitung von OfflinedatenHandling offline data

In powerapps können Sie Daten unabhängig von der Datenquelle auf konsistente Weise filtern, durchsuchen, sortieren, Aggregieren und bearbeiten.In Power Apps, you can filter, search, sort, aggregate, and manipulate data in a consistent way regardless of the data source. Quellen reichen von in-Memory-Auflistungen in der APP zu SharePoint-Listen bis hin zu SQL-Datenbanken und Common Data Service.Sources range from in-memory collections in the app to SharePoint lists to SQL databases and Common Data Service. Aufgrund dieser Konsistenz können Sie eine APP problemlos neu zuweisen, um eine andere Datenquelle zu verwenden.Because of this consistency, you can easily retarget an app to use a different data source. Noch wichtiger ist für Offline Szenarien, dass Sie lokale Sammlungen für die Datenverwaltung ohne Änderungen an der Logik einer App verwenden können.More importantly for offline scenarios, you can use local collections for data management with almost no changes to an app's logic. Tatsächlich stellen lokale Sammlungen den wichtigsten Mechanismus in der Verarbeitung von Offlinedaten dar.In fact, local collections are the primary mechanism for handling offline data.

Erstellen einer Offline-AppBuild an offline app

Um den Fokus auf die Offline Aspekte der APP-Entwicklung zu behalten, veranschaulicht dieses Thema ein einfaches Szenario, das sich auf Twitter konzentriert.To keep the focus on the offline aspects of app development, this topic illustrates a simple scenario focused around Twitter. Sie erstellen eine APP, die es Ihnen ermöglicht, Twitter-Beiträge zu lesen und Tweets zu senden, während Sie offline sind.You'll build an app that enables you to read Twitter posts and submit tweets while being offline. Wenn die App Zugang zu einer Onlineverbindung erhält, veröffentlicht sie die Tweets und lädt die lokalen Daten erneut.When the app comes online, the app posts tweets and reloads the local data.

Auf hoher Ebene führt die APP die folgenden Aufgaben aus:At a high level, the app performs these tasks:

  • Wenn der Benutzer die APP öffnet:When the user opens the app:

    • Wenn das Gerät online ist, ruft die APP Daten über den Twitter-Connector ab und füllt eine Sammlung mit diesen Daten auf.If the device is online, the app fetches data through the Twitter connector and populates a collection with that data.
    • Wenn das Gerät offline ist, lädt die APP die Daten mithilfe der LoadData -Funktion aus einer lokalen Cachedatei.If the device is offline, the app loads the data from a local cache file by using the LoadData function.
    • Der Benutzer kann tweets übermitteln.The user can submit tweets. Wenn die APP Online ist, werden die tweets direkt an Twitter gesendet, und der lokale Cache wird aktualisiert.If the app is online, it posts the tweets directly to Twitter and refreshes the local cache.
  • Alle fünf Minuten, während die APP Online ist:Every five minutes while the app is online:

    • Die APP postet alle tweets im lokalen Cache.The app posts any tweets in the local cache.
    • Die APP aktualisiert den lokalen Cache und speichert Sie mithilfe der SaveData -Funktion.The app refreshes the local cache and saves it by using the SaveData function.

Schritt 1: Hinzufügen von Twitter zu einer leeren Phone-AppStep 1: Add Twitter to a blank phone app

  1. Wählen Sie in powerapps Studio Datei > neuaus.In Power Apps Studio, select File > New.
  2. Wählen Sie auf der Kachel Leere App Telefonlayout aus.On the Blank app tile, select Phone layout.
  3. Klicken Sie auf der Registerkarte Ansicht auf die Option Datenquellen.On the View tab, select Data sources.
  4. Wählen Sie im Bereich Daten die Option Datenquelle hinzufügenaus.In the Data pane, select Add data source.
  5. Wählen Sie neue Verbindung > Twitter > Erstellenaus.Select New Connection > Twitter > Create.
  6. Geben Sie Ihre Anmelde Informationen ein, erstellen Sie die Verbindung, und schließen Sie dann den Daten Bereich.Enter your credentials, create the connection, and then close the Data pane.

Schritt 2: erfassen vorhandener tweetsStep 2: Collect existing tweets

  1. Wählen Sie im Struktur Ansichts Bereich Appaus, und legen Sie dann die zugehörige OnStart -Eigenschaft auf die folgende Formel fest: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" );;
    

    Formel zum Laden von TweetsFormula to load tweets

  2. Wählen Sie im Struktur Ansichts Bereich das Menü mit den Auslassungs Punkten für das App -Objekt aus, und klicken Sie dann auf OnStart ausführen , um die Formel auszuführen.In the Tree view pane, select the ellipsis menu for the App object, and then select Run OnStart to run that formula.

    Run-Formel zum Laden von TweetsRun formula to load tweets

    Hinweis

    Die Funktionen " LoadData " und " SaveData " zeigen möglicherweise einen Fehler in Power apps Studio an, da Sie von Browsern nicht unterstützt werdenThe LoadData and SaveData functions might show an error in Power Apps Studio because browsers don't support them. Sie werden jedoch normal durchgeführt, nachdem Sie diese APP auf einem Gerät bereitgestellt haben.However, they'll perform normally after you deploy this app to a device.

Diese Formel überprüft, ob das Gerät online ist:This formula checks whether the device is online:

  • Wenn das Gerät online ist, lädt die Formel bis zu 10 tweets mit dem Suchbegriff "powerapps" in eine localtweets -Sammlung.If the device is online, the formula loads up to 10 tweets with the search term "PowerApps" into a LocalTweets collection.
  • Wenn das Gerät offline ist, lädt die Formel den lokalen Cache aus einer Datei mit dem Namen "localtweets", sofern diese verfügbar ist.If the device is offline, the formula loads the local cache from a file called "LocalTweets" if it's available.
  1. Wählen Sie auf der Registerkarte Einfügen die Option Katalog aus, > leere flexible Höhe.On the Insert tab, select Gallery > Blank flexible height.

  2. Legen Sie die Items -Eigenschaft des Katalog -Steuer Elements auf LocalTweetsfest.Set the Items property of the Gallery control to LocalTweets.

  3. Fügen Sie in der Katalog Vorlage drei Label -Steuerelemente hinzu, und legen Sie die Text -Eigenschaft jeder Bezeichnung auf einen der folgenden Werte fest: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. Legen Sie den Text in der letzten Bezeichnung Fett fest, damit der Katalog dem folgenden Beispiel ähnelt.Make the text in the last label bold so that the gallery resembles this example.

    Galerie mit Beispiel-tweetsGallery showing sample tweets

Schritt 4: Anzeigen des VerbindungsstatusStep 4: Show connection status

  1. Fügen Sie im Katalog eine Bezeichnung ein, und legen Sie die Farb Eigenschaft auf rotfest.Under the gallery, insert a label, and then set its Color property to Red.

  2. Legen Sie die Text -Eigenschaft der neuesten Bezeichnung auf diese Formel fest:Set the newest label's Text property to this formula:

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

Diese Formel bestimmt, ob das Gerät online ist.This formula determines whether the device is online. Wenn dies der Fall ist, zeigt die Bezeichnung verbundenan. Andernfalls wird es Offlineangezeigt.If it is, the label shows Connected; otherwise, it shows Offline.

Schritt 5: Hinzufügen eines Felds zum Verfassen von TweetsStep 5: Add a box to compose tweets

  1. Fügen Sie unter der Bezeichnung Verbindungsstatus ein Text Eingabe -Steuerelement ein, und benennen Sie es newtweettextinputum.Under the connection-status label, insert a Text input control, and rename it NewTweetTextInput.

  2. Legen Sie die default -Eigenschaft des Texteingabe Felds auf ""fest.Set the text-input box's Default property to "".

    Galerie über Statusinformationen und TexteingabefeldGallery over status info and text-input box

Schritt 6: Hinzufügen einer Schaltfläche zum Posten des tweetsStep 6: Add a button to post the tweet

  1. Fügen Sie im Textfeld Texteingabe ein Schalt Flächen-Steuerelement hinzu, und legen Sie dessen Text -Eigenschaft auf diesen Wert fest:Under the text-input box, add a Button control, and set its Text property to this value:

    "Tweet"

  2. Legen Sie die onselect -Eigenschaft der Schaltfläche auf die folgende Formel fest: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. Fügen Sie in der OnStart -Eigenschaft für die Appam Ende der Formel eine Zeile hinzu: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
    

    Formel ausführen, um Tweets mit nicht kommentierter Zeile zu ladenRun formula to load tweets with uncommented line

Diese Formel bestimmt, ob das Gerät online ist:This formula determines whether the device is online:

  • Wenn das Gerät online ist, sendet es sofort den Tweet.If the device is online, it posts the tweet immediately.
  • Wenn das Gerät offline ist, wird der Tweet in einer localtweetstopost -Sammlung erfasst und auf dem Gerät gespeichert.If the device is offline, it captures the tweet in a LocalTweetsToPost collection and saves it to the device.

Anschließend setzt die Formel den Text im Texteingabefeld zurück.Then the formula resets the text in the text-input box.

Schritt 7: Überprüfen auf neue tweetsStep 7: Check for new tweets

  1. Fügen Sie auf der rechten Seite der Schaltfläche ein Timer -Steuerelement hinzu.On the right side of the button, add a Timer control.

    endgültige appsFinal apps

  2. Legen Sie die Duration -Eigenschaft des Timers auf 300000fest.Set the timer's Duration property to 300000.

  3. Legen Sie die Autostart -und Repeat -Eigenschaften des Timers auf " true" fest.Set the timer's AutoStart and Repeat properties to true.

  4. Legen Sie die ontimerend -Eigenschaft des Timers auf diese Formel fest: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" );;
    )
    

Diese Formel bestimmt, ob das Gerät online ist.This formula determines whether the device is online. Wenn dies der Fall ist, werden alle Elemente in der localtweetstopost -Auflistung von der APP mit einem Tweet und dann die Auflistung gelöscht.If it is, the app tweets all the items in the LocalTweetsToPost collection and then clears the collection.

Testen der AppTest the app

  1. Öffnen Sie die APP auf einem mobilen Gerät, das mit dem Internet verbunden ist.Open the app on a mobile device that's connected to the Internet.

    Vorhandene tweets werden im Katalog angezeigt, und der Status zeigt verbundenan.Existing tweets appear in the gallery, and the status shows Connected.

  2. Trennen Sie die Verbindung zwischen dem Gerät und dem Internet, indem Sie den Flugzeug Modus des Geräts aktivieren und Wi-Fi deaktivieren.Disconnect the device from the Internet by enabling the device's airplane mode and disabling wi-fi.

    Die Status Bezeichnung zeigt, dass die APP Offlineist.The status label shows that the app is Offline.

  3. Wenn das Gerät offline ist, schreiben Sie einen Tweet, der powerappsenthält, und wählen Sie dann die Schaltfläche Tweet aus.While the device is offline, write a tweet that includes PowerApps, and then select the Tweet button.

    Der Tweet wird lokal in der localtweetstopost -Auflistung gespeichert.The tweet is stored locally in the LocalTweetsToPost collection.

  4. Stellen Sie erneut eine Verbindung zwischen dem Gerät und dem Internet her, indem Sie den Flugzeug Modus des Geräts deaktivieren und Wi-Fi aktivieren.Reconnect the device to the Internet by disabling the device's airplane mode and enabling wi-fi.

    Innerhalb von fünf Minuten sendet die APP den Tweet, der im Katalog angezeigt wird.Within five minutes, the app posts the tweet, which appears in the gallery.

Wir hoffen, dass dieser Artikel Ihnen einen Überblick über die Funktionen von Power Apps zum Entwickeln von Offline-Apps bietet.We hope this article gives you an idea of the capabilities that Power Apps has for building offline apps. Bitte geben Sie in unserem Forum Feedback, und teilen Sie Ihre Beispiele für Offline-Apps im Community-Blog von powerapps.As always, please provide feedback in our forum and share your examples of offline apps in the Power Apps community blog.