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

Mobile Benutzer häufig zum produktiven arbeiten benötigen sogar wenn sie nur eine eingeschränkte oder keine Verbindung.Mobile users often need to be productive even when they have limited or no connectivity. Wenn Sie eine Canvas-app erstellen, können Sie diese Aufgaben ausführen:When you build a canvas app, you can perform these tasks:

  • PowerApps Mobile öffnen und Ausführen von Offline-apps.Open PowerApps 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 von Sammlungen und Nutzung von Funktionen wie LoadData und SaveData, um offline grundlegende Datenspeicherung zur Verfügung zu machen.Use collections and leverage functions such as LoadData and SaveData for basic data storage when offline.

EinschränkungenLimitations

LoadData und SaveData kombinieren, um einen einfachen Mechanismus zum Speichern von kleine Mengen von Daten auf einem lokalen Gerät zu erstellen.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 einfache Offlinefunktionen zu Ihrer app hinzufügen.By using these functions, you can add simple offline capabilities to your app.

Diese Funktionen werden durch die Größe des verfügbaren app-Speichers begrenzt, da sie in einer in-Memory-Sammlung ausgeführt werden.These functions are limited by the amount of available app memory because they operate on an in-memory collection. Verfügbare Arbeitsspeicher kann variieren, je nach Gerät, das Betriebssystem, den Arbeitsspeicher, den PowerApps Mobile verwendet und die Komplexität der app im Hinblick auf Bildschirme und Steuerelemente.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. Wenn Sie länger als einige Megabyte an Daten speichern, testen Sie Ihre app mit erwarteten Szenarien auf den Geräten, die auf denen Sie es erwarten.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. Sie müssen in der Regel 30 bis 70 MB des verfügbaren Arbeitsspeichers.You'll generally have 30-70 megabytes of available memory.

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

Für Updates auf Offlinefunktionen, kehren Sie zu diesem Thema zurück, und Abonnieren der PowerApps-Blog.For updates on offline capabilities, return to this topic, and subscribe to the PowerApps blog.

ÜbersichtOverview

Wenn Sie offline-Szenarien entwerfen, sollten Sie zunächst, wie Ihre apps mit Daten arbeiten.When you design offline scenarios, you should first consider how your apps work with data. Apps in PowerApps greifen auf Daten hauptsächlich durch eine Reihe von Connectors , die die Plattform bereitstellt, z. B. SharePoint, Office 365 und 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. 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 filtern, suchen, sortieren, aggregieren, und Bearbeiten von Daten auf konsistente Weise unabhängig von der Datenquelle.In PowerApps, you can filter, search, sort, aggregate, and manipulate data in a consistent way regardless of the data source. Quellen reichen von Auflistungen im Arbeitsspeicher in der app in SharePoint-Listen, 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, um eine andere Datenquelle verwenden problemlos neu zuweisen.Because of this consistency, you can easily retarget an app to use a different data source. Für Offlineszenarien, können Sie noch wichtiger: lokale Sammlungen für die datenverwaltung mit fast ohne Änderungen an der Logik einer app verwenden.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 Sie eine offline-appBuild an offline app

Um den Fokus bei den offlineaspekten der app-Entwicklung zu halten, wird in diesem Thema veranschaulicht, ein einfaches Szenarios, die 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, mit der Sie Twitter-Beiträge lesen und Tweets Absenden, während Sie offline.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 einer hohen Ebene führt die app folgende 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, wird die app Ruft Daten über den Twitter-Connector ab und füllt eine Auflistung mit den Daten.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 aus einer lokalen Cachedatei mithilfe der LoadData Funktion.If the device is offline, the app loads the data from a local cache file by using the LoadData function.
    • Der Benutzer kann die Tweets übermitteln.The user can submit tweets. Wenn die app online ist, die Tweets direkt in Twitter gepostet, und der lokalen 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 sendet alle Tweets im lokalen Cache.The app posts any tweets in the local cache.
    • Die app wird der lokalen Cache aktualisiert 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 in eine leere Smartphone-appStep 1: Add Twitter to a blank phone app

  1. Wählen Sie in PowerApps Studio, Datei > neu.In PowerApps 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 Datenquellen.On the View tab, select Data sources.
  4. In der Daten wählen Sie im Bereich Datenquelle hinzufügen.In the Data pane, select Add data source.
  5. Wählen Sie neue Verbindung > Twitter > erstellen.Select New Connection > Twitter > Create.
  6. Geben Sie Ihre Anmeldeinformationen ein, erstellen Sie die Verbindung, und schließen Sie die Daten Bereich.Enter your credentials, create the connection, and then close the Data pane.

Schritt 2: Erfassen der vorhandenen tweetsStep 2: Collect existing tweets

  1. In der Strukturansicht wählen Sie im Bereich App, und legen Sie dann die OnStart -Eigenschaft auf diese Formel: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. In der Strukturansicht Bereich Wählen Sie die Auslassungszeichen für die App Objekt aus, und wählen Sie dann OnStart ausführen diese Formel ausgeführt.In the Tree view pane, select the ellipsis menu for the App object, and then select Run OnStart to run that formula.

    Führen Sie die Formel zum Laden von tweetsRun formula to load tweets

    Hinweis

    Die LoadData und SaveData Funktionen möglicherweise ein Fehler in PowerApps Studio angezeigt, da der Browser diese nicht unterstützen.The LoadData and SaveData functions might show an error in PowerApps Studio because browsers don't support them. Allerdings werden sie normalerweise ausführen, nachdem Sie diese app auf einem Gerät bereitstellen.However, they'll perform normally after you deploy this app to a device.

Diese Formel wird ü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 einem LocalTweets Auflistung.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 im lokalen Cache aus einer Datei namens "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. Auf der einfügen Registerkarte Katalog > leer flexible Höhe.On the Insert tab, select Gallery > Blank flexible height.

  2. Legen Sie die Elemente Eigenschaft der Katalog die Steuerung an LocalTweets.Set the Items property of the Gallery control to LocalTweets.

  3. Fügen Sie in der Katalogvorlage drei Bezeichnung Steuerelemente, und legen die Text -Eigenschaft jeder Bezeichnung auf einen der folgenden Werte: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. Der Text fett in die letzte Bezeichnung so, dass der Katalog in diesem Beispiel ähnelt.Make the text in the last label bold so that the gallery resembles this example.

    Katalog mit Beispiel-tweetsGallery showing sample tweets

Schritt 4: Verbindungsstatus angezeigtStep 4: Show connection status

  1. Klicken Sie unter den Katalog, fügen Sie eine Bezeichnung, und legen Sie seine Farbe Eigenschaft Red.Under the gallery, insert a label, and then set its Color property to Red.

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

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

Diese Formel wird bestimmt, ob das Gerät online ist.This formula determines whether the device is online. Wenn es sich handelt, die Bezeichnung zeigt verbundenist, andernfalls zeigt Offline.If it is, the label shows Connected; otherwise, it shows Offline.

Schritt 5: Fügen Sie ein Feld, um die compose-tweetsStep 5: Add a box to compose tweets

  1. Fügen Sie unter der Bezeichnung Verbindungsstatus einer Texteingabe steuern, und benennen Sie sie NewTweetTextInput.Under the connection-status label, insert a Text input control, and rename it NewTweetTextInput.

  2. Legen Sie das Texteingabe-Feld des Standard Eigenschaft "".Set the text-input box's Default property to "".

    Katalog über Statusinformationen und Texteingabe-FeldGallery over status info and text-input box

Schritt 6: Fügen Sie eine Schaltfläche zum Veröffentlichen des TWEETSStep 6: Add a button to post the tweet

  1. Unter dem Feld Texteingabe Hinzufügen einer Schaltfläche steuern, und legen dessen Text -Eigenschaft auf diesen Wert:Under the text-input box, add a Button control, and set its Text property to this value:

    "Tweet"

  2. Legen Sie die OnSelect -Eigenschaft auf diese Formel: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. In der OnStart -Eigenschaft für die App, fügen Sie am 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
    

    Führen Sie die Formel zum Laden von Tweets mit auskommentierungen aufgehoben wurdenRun formula to load tweets with uncommented line

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

  • Wenn das Gerät online ist, sendet er sofort den Tweet.If the device is online, it posts the tweet immediately.
  • Wenn das Gerät offline ist, erfasst es den Tweet in einer LocalTweetsToPost Auflistung und speichert sie auf dem Gerät.If the device is offline, it captures the tweet in a LocalTweetsToPost collection and saves it to the device.

Klicken Sie dann setzt die Formel den Text in das Texteingabe-Feld zurück.Then the formula resets the text in the text-input box.

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

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

    Letzte appsFinal apps

  2. Festlegen des Timers Dauer Eigenschaft 300000.Set the timer's Duration property to 300000.

  3. Festlegen des Timers AutoStart und wiederholen Eigenschaften "true".Set the timer's AutoStart and Repeat properties to true.

  4. Festlegen des Timers OnTimerEnd auf diese Formel: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 wird bestimmt, ob das Gerät online ist.This formula determines whether the device is online. Wenn es sich handelt, die app von tweets alle Elemente in der LocalTweetsToPost Auflistung und löscht dann die Auflistung.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, die im Katalog angezeigt werden, und zeigt der Status verbunden.Existing tweets appear in the gallery, and the status shows Connected.

  2. Durch Aktivieren des Geräts flugzeugmodus, und deaktivieren wi-Fi, trennen Sie das Gerät über das Internet.Disconnect the device from the Internet by enabling the device's airplane mode and disabling wi-fi.

    Die statusbezeichnung zeigt an, dass die app Offline.The status label shows that the app is Offline.

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

    TWEETS befindet sich lokal in der LocalTweetsToPost Auflistung.The tweet is stored locally in the LocalTweetsToPost collection.

  4. Schließen Sie das Gerät mit dem Internet durch das Deaktivieren des Geräts flugzeugmodus, und aktivieren wi-Fi wieder.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 eine Vorstellung von den Möglichkeiten gegeben hat, die PowerApps für das Erstellen von Offline-Apps bietet.We hope this article gives you an idea of the capabilities that PowerApps has for building offline apps. Wie immer freuen wir uns über Ihr Feedback in unserem Forum und über Ihre Beispiele für Offline-Apps im PowerApps Community-Blog.As always, please provide feedback in our forum and share your examples of offline apps in the PowerApps community blog.