Utveckla offline-kompatibla appar för arbetsytorDevelop offline-capable canvas apps

Mobila användare behöver ofta att vara produktiva även när de har begränsad eller ingen anslutning.Mobile users often need to be productive even when they have limited or no connectivity. När du skapar en app för arbetsytor kan du utföra dessa uppgifter:When you build a canvas app, you can perform these tasks:

  • Öppna PowerApps Mobile och köra appar när du är offline.Open PowerApps Mobile and run apps when offline.
  • Fastställ när en app är offline, online eller i en anslutning med datapriser med hjälp av signalobjektet Anslutning.Determine when an app is offline, online, or in a metered connection by using the Connection signal object.
  • Använd samlingar och utnyttja funktioner såsom LoadData och SaveData för lagring av grundläggande data offline.Use collections and leverage functions such as LoadData and SaveData for basic data storage when offline.

BegränsningarLimitations

LoadData och SaveData kombinera för att skapa en enkel mekanism för att lagra små mängder data på en lokal enhet.LoadData and SaveData combine to form a simple mechanism to store small amounts of data on a local device. Genom att använda dessa funktioner kan du lägga till enkel offlinefunktionerna i din app.By using these functions, you can add simple offline capabilities to your app.

Dessa funktioner är begränsade mängden minne som tillgänglig app eftersom de fungerar i en InMemory-samling.These functions are limited by the amount of available app memory because they operate on an in-memory collection. Tillgängligt minne kan variera beroende på enheten, operativsystem, det minne som använder PowerApps Mobile och komplexiteten i appen när det gäller skärmar och kontroller.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. Om du sparar mer än ett par MB data, kan du testa din app med förväntade scenarier på de enheter som du förväntar dig den kan köras.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. Vanligtvis har du 30 70 mängden tillgängligt minne.You'll generally have 30-70 megabytes of available memory.

Funktionerna också lösa inte automatiskt kopplingskonflikter när en enhet är online.The functions also don't automatically resolve merge conflicts when a device comes online. Konfigurationen på vilka data som sparas och hur du hanterar återanslutning är upp till tillverkaren när du skriver uttryck.Configuration on what data is saved and how to handle reconnection is up to the maker when writing expressions.

Gå tillbaka till det här avsnittet för uppdateringar på offlinefunktionerna och prenumerera på den PowerApps-blogg.For updates on offline capabilities, return to this topic, and subscribe to the PowerApps blog.

ÖversiktOverview

När du utformar offline-scenarier bör du först överväga hur dina appar arbetar med data.When you design offline scenarios, you should first consider how your apps work with data. Appar i PowerApps kommer främst åt data via en uppsättning kopplingar som ingår i plattformen, till exempel SharePoint, Office 365 och 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. Du kan också skapa anpassade anslutningsappar som ger appar åtkomst till en tjänst som tillhandahåller en RESTful-slutpunkt.You can also build custom connectors that enable apps to access any service that provides a RESTful endpoint. Detta kan vara en webb-API eller en tjänst, till exempel Azure Functions.This could be a Web API or a service such as Azure Functions. Dessa anslutningar använder HTTPS via Internet, vilket innebär att användarna måste vara online för att komma åt data och andra funktioner som en tjänst erbjuder.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 med anslutningsappar

Hantering av data offlineHandling offline data

I PowerApps kan du filtrera, söka, sortera, sammanställa och manipulera data på ett konsekvent sätt oavsett datakälla.In PowerApps, you can filter, search, sort, aggregate, and manipulate data in a consistent way regardless of the data source. Datakällor kan vara allt från InMemory-samlingar i appen till SharePoint-listor till SQL-databaser och Common Data Service.Sources range from in-memory collections in the app to SharePoint lists to SQL databases and Common Data Service. På grund av den här konsekvensen, kan du enkelt kan omdirigera en app för att använda en annan datakälla.Because of this consistency, you can easily retarget an app to use a different data source. Viktigare för offline-scenarier, kan du använda lokala samlingar för datahantering nästan utan ändringar i en Apps logik.More importantly for offline scenarios, you can use local collections for data management with almost no changes to an app's logic. Faktum är att lokala samlingar är den primära mekanismen för datahantering offline.In fact, local collections are the primary mechanism for handling offline data.

Skapa en offline-appBuild an offline app

Om du vill behålla fokus på offline-aspekter vid utveckling av appar, illustrerar det här avsnittet ett enkelt scenario med fokus på Twitter.To keep the focus on the offline aspects of app development, this topic illustrates a simple scenario focused around Twitter. Du ska skapa en app som gör att du kan läsa Twitter-inlägg och skicka tweets när du är offline.You'll build an app that enables you to read Twitter posts and submit tweets while being offline. När appen är online, skickar appen tweets och läser in lokala data på nytt.When the app comes online, the app posts tweets and reloads the local data.

Appen utför dessa uppgifter på en hög nivå:At a high level, the app performs these tasks:

  • När användaren öppnar appen:When the user opens the app:

    • Om enheten är online, appen hämtar data via Twitter-anslutningen och fyller på en samling med dessa data.If the device is online, the app fetches data through the Twitter connector and populates a collection with that data.
    • Om enheten är offline, appen har lästs in data från en lokal cache-fil med hjälp av den LoadData funktion.If the device is offline, the app loads the data from a local cache file by using the LoadData function.
    • Användaren kan skicka tweets.The user can submit tweets. Om appen är online, skickar tweets direkt till Twitter och uppdaterar den lokala cachen.If the app is online, it posts the tweets directly to Twitter and refreshes the local cache.
  • Var femte minut medan appen är online:Every five minutes while the app is online:

    • Appen skickar alla tweets i den lokala cachen.The app posts any tweets in the local cache.
    • Appen uppdaterar den lokala cachen och sparar den med hjälp av den SaveData funktion.The app refreshes the local cache and saves it by using the SaveData function.

Steg 1: Lägga till Twitter till en tom telefonappStep 1: Add Twitter to a blank phone app

  1. I PowerApps Studio, väljer filen > New.In PowerApps Studio, select File > New.
  2. På panelen Tom app väljer du Layout för mobil.On the Blank app tile, select Phone layout.
  3. På fliken Visa väljer du Datakällor.On the View tab, select Data sources.
  4. I den Data väljer Lägg till datakälla.In the Data pane, select Add data source.
  5. Välj ny anslutning > Twitter > skapa.Select New Connection > Twitter > Create.
  6. Ange dina autentiseringsuppgifter, skapa anslutningen och stäng sedan den Data fönstret.Enter your credentials, create the connection, and then close the Data pane.

Steg 2: Samla in befintliga tweetsStep 2: Collect existing tweets

  1. I den trädvy väljer App, och Ställ in dess OnStart egenskap enligt följande 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 för att läsa in tweetsFormula to load tweets

  2. I den trädvy fönstret väljer du ellips-menyn för den App objekt och välj sedan kör OnStart att köra formeln.In the Tree view pane, select the ellipsis menu for the App object, and then select Run OnStart to run that formula.

    Kör formeln för att läsa in tweetsRun formula to load tweets

    Anteckning

    Den LoadData och SaveData funktioner kan visa ett fel i PowerApps Studio, eftersom webbläsare inte stöder dem.The LoadData and SaveData functions might show an error in PowerApps Studio because browsers don't support them. Men utför de normalt när du har distribuerat den här appen till en enhet.However, they'll perform normally after you deploy this app to a device.

Den här formeln kontrollerar om enheten är online:This formula checks whether the device is online:

  • Om enheten är online, formeln läser in upp till 10 tweets med söktermen ”PowerApps” i en LocalTweets samling.If the device is online, the formula loads up to 10 tweets with the search term "PowerApps" into a LocalTweets collection.
  • Om enheten är offline, laddas den lokala cachen från en fil med namnet ”LocalTweets” om det är tillgängligt i formeln.If the device is offline, the formula loads the local cache from a file called "LocalTweets" if it's available.
  1. På den infoga fliken galleriet > tom flexibel höjd.On the Insert tab, select Gallery > Blank flexible height.

  2. Ange den objekt egenskapen för den galleriet kontroll till LocalTweets.Set the Items property of the Gallery control to LocalTweets.

  3. Lägg till tre i gallerimallen etikett kontroller och ange den Text egenskap för varje etikett till ett av följande värden: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. Se texten i den sista etiketten fetstil så att galleriet liknar följande exempel.Make the text in the last label bold so that the gallery resembles this example.

    Galleriet visar exempel tweetsGallery showing sample tweets

Steg 4: Visa anslutningsstatusStep 4: Show connection status

  1. Infoga en etikett under galleriet, och ange därefter dess färg egenskap Red.Under the gallery, insert a label, and then set its Color property to Red.

  2. Ange den senaste etiketten Text egenskap enligt följande formel:Set the newest label's Text property to this formula:

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

Den här formeln avgör om enheten är online.This formula determines whether the device is online. Om det är, etiketten visar ansluten, annars visas Offline.If it is, the label shows Connected; otherwise, it shows Offline.

Steg 5: Lägg till en ruta om du ska skapa tweetsStep 5: Add a box to compose tweets

  1. Under etiketten anslutningsstatusen infoga en textinmatning kontroll och Byt namn på den NewTweetTextInput.Under the connection-status label, insert a Text input control, and rename it NewTweetTextInput.

  2. Ställ in rutan textinmatning standard egenskap "".Set the text-input box's Default property to "".

    Galleri över StatusInfo och textrutanGallery over status info and text-input box

Steg 6: Lägg till en knapp för att publicera en tweetStep 6: Add a button to post the tweet

  1. Under textrutan, lägger du till en knappen kontroll och ange dess Text till det här värdet:Under the text-input box, add a Button control, and set its Text property to this value:

    "Tweet"

  2. Ställ in knappens OnSelect egenskap enligt följande 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. I den OnStart -egenskapen för den App, lägga till en rad i slutet av formeln: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
    

    Kör formeln för att läsa in tweets med uncommented radRun formula to load tweets with uncommented line

Den här formeln avgör om enheten är online:This formula determines whether the device is online:

  • Om enheten är online, publicerar tweeten omedelbart.If the device is online, it posts the tweet immediately.
  • Om enheten är offline, samlar in tweets i en LocalTweetsToPost samling och sparas till enheten.If the device is offline, it captures the tweet in a LocalTweetsToPost collection and saves it to the device.

Formeln återställer sedan texten i rutan för textinmatning.Then the formula resets the text in the text-input box.

Steg 7: Sök efter nya tweetsStep 7: Check for new tweets

  1. Till höger på knappen Lägg till en Timer kontroll.On the right side of the button, add a Timer control.

    Sista apparFinal apps

  2. Ställ in timerns varaktighet egenskap 300000.Set the timer's Duration property to 300000.

  3. Ställ in timerns AutoStart och Upprepa egenskaper så att SANT.Set the timer's AutoStart and Repeat properties to true.

  4. Ställ in timerns OnTimerEnd enligt följande 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" );;
    )
    

Den här formeln avgör om enheten är online.This formula determines whether the device is online. Om det är appen tweets för alla objekt i den LocalTweetsToPost samling och tar bort samlingen.If it is, the app tweets all the items in the LocalTweetsToPost collection and then clears the collection.

Testa appenTest the app

  1. Öppna appen på en mobil enhet som är ansluten till Internet.Open the app on a mobile device that's connected to the Internet.

    Befintliga tweets som visas i galleriet och statusen ansluten.Existing tweets appear in the gallery, and the status shows Connected.

  2. Koppla bort enheten från Internet genom att aktivera enhetens Flygplansläge och inaktiverar wi-fi.Disconnect the device from the Internet by enabling the device's airplane mode and disabling wi-fi.

    Status för etiketten visar att appen är Offline.The status label shows that the app is Offline.

  3. När enheten är offline, skriva en tweet som innehåller PowerApps, och välj sedan den Tweet knappen.While the device is offline, write a tweet that includes PowerApps, and then select the Tweet button.

    Tweeten lagras lokalt i den LocalTweetsToPost samling.The tweet is stored locally in the LocalTweetsToPost collection.

  4. Ansluta enheten till Internet genom att inaktivera enhetens Flygplansläge och aktivera wi-fi.Reconnect the device to the Internet by disabling the device's airplane mode and enabling wi-fi.

    Inom fem minuter tweets appen, vilket visas i galleriet.Within five minutes, the app posts the tweet, which appears in the gallery.

Vi hoppas att denna artikel ger dig en uppfattning om PowerApps funktioner för att skapa offline-appar.We hope this article gives you an idea of the capabilities that PowerApps has for building offline apps. Som alltid kan du lämna feedback i våra forum och dela dina exempel på offline-appar i PowerApps community-blogg.As always, please provide feedback in our forum and share your examples of offline apps in the PowerApps community blog.