Utveckla offline-kompatibla appar för arbetsytor

Mobila användare måste ofta vara produktiva även när de har begränsad eller ingen anslutning. När du bygger en arbetsyteapp kan du utföra följande uppgifter:

  • Öppna Power Apps Mobile och köra appar när du är offline.
  • Fastställ när en app är offline, online eller i en anslutning med datapriser med hjälp av signalobjektet Anslutning.
  • Använd samlingar och utnyttja funktioner LoadData och SaveData för lagring av grundläggande data offline.

Anteckning

Den här artikeln innehåller ett exempel på hur du använder Twitter-data. Ett ännu enklare exempel som inte kräver en anslutning ingår i LoadData och SaveData funktionensreferens.

Titta på det här videoklippet och lär dig hur du skapar offlineaktiverade arbetsyteappar:

Begränsningar

LoadData och SaveData kombineras för att skapa en enkel mekanism för lagring av små mängder data på en lokal enhet. Genom att använda de här funktionerna kan du lägga till enkla offline-funktioner i appen.

De här funktionerna begränsas av mängden tillgängligt program minne när de körs på en samling i minnet. Tillgängligt minne kan variera beroende på enhet, operativ system, minne som Power Apps Mobile använder samt appens komplexitet i form av skärmar och kontroller. Om du lagrar mer än några megabyte data testar du appen med de scenarier som du tror att de ska köras på. Du har vanligt vis 30-70 megabyte tillgängligt minne.

Funktionerna löser inte heller automatiskt kopplingskonflikter när en enhet är online. Konfiguration för vilka data som sparas och hur åter anslutning ska hanteras i tillverkaren när uttryck skrivs.

Om du vill uppdatera offline-funktionerna går du tillbaka till den här ämne och prenumererar på Power Apps-bloggen.

Översikt

Innan du utformar scenarier med olika förutsättningar bör du fundera över hur dina appar arbetar med data. Appar i Power Apps har i huvudsak tillgång till data via en uppsättning anslutningar som plattformen tillhandahåller, t.ex., SharePoint, Office 365 och Microsoft Dataverse. Du kan också skapa anpassade anslutningsappar som ger appar åtkomst till en tjänst som tillhandahåller en RESTful-slutpunkt. Detta kan vara en webb-API eller en tjänst, till exempel 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.

Power Apps-app med anslutningsappar.

Hantering av data offline

I Power Apps kan du filtrera, söka, sortera, samla ihop och manipulera data på ett konsekvent sätt oavsett datakälla. Källorna går från minnessamlingar i appen till listor som skapats med Microsoft Lists till SQL-databaser och Dataverse. Tack vare den här konsekvensen kan du enkelt nå en app för att använda en annan datakälla. Viktigare här för offline-scenarier kan du använda lokala samlingar för datahantering, nästan utan ändringar av en apps logik. Faktum är att lokala samlingar är den primära mekanismen för datahantering offline.

Skapa en offline-app

Om du vill behålla fokus på offline-aspekter vid utveckling av appar illustrerar detta ämne ett enkelt scenario för 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. När appen är online, skickar appen tweets och läser in lokala data på nytt.

På en hög nivå utför appen följande uppgifter:

  • När användaren öppnar appen:

    • Om enheten är online hämtar appen data via Twitter-kontakten och fyller en samling med dessa data.
    • Om enheten är offline läser appen in data från en lokal cachefil med hjälp av funktionen LoadData.
    • Användaren kan skicka tweets. Om appen är online postas tweets direkt till Twitter och uppdaterar det lokala cacheminnet.
  • Var femte minut när appen är online:

    • Appen skickar alla tweets i det lokala cacheminnet.
    • Appen uppdaterar det lokala cacheminnet och sparar den med hjälp av funktionen SaveData.

Steg 1: lägga till Twitter i en tom telefonapp

  1. Skapa en tom arbetsyteapp med layout telefon.
  2. På fliken Visa väljer du Datakällor.
  3. I fönstret Data välj Lägg till datakälla.
  4. Välj Ny anslutning > Twitter > Skapa.
  5. Ange dina autentiseringsuppgifter, skapa anslutningen och stäng sedan fönstret Data.

Steg 2: samla in befintliga tweets

  1. I rutan Trädvy väljer du App och anger sedan egenskapen OnStart till denna formel:

    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 ladda tweets.

  2. I rutan Trädvy väljer du ellipsmenyn för objektet App och välj sedan Run OnStart för att köra formeln.

    Kör formel för att ladda tweets.

    Anteckning

    Funktionerna LoadData och SaveData kan visa ett felmeddelande i Power Apps Studio eftersom webbläsare inte stöder dem. De fungerar emellertid normalt när du har distribuerat appen till en enhet.

Den här formeln kontrollerar om enheten är online eller inte:

  • Om enheten är online, laddar formeln upp till 10 tweets med söktermen "PowerApps" i en LocalTweets-samling.
  • Om enheten är offline, laddas formeln lokala cachen från en fil med namnet "LocalTweets" om tillgänglig.
  1. På fliken Infoga, välj Galleri > Tom flexibel höjd.

  2. Ange egenskapen Items för Galleri-kontrollen till LocalTweets.

  3. I gallerimallen, lägg till tre Etikett-kontroller och ange egenskapen Text för varje etikett till ett av dessa värden:

    • ThisItem.UserDetails.FullName & " (@" & ThisItem.UserDetails.UserName & ")"
    • Text(DateTimeValue(ThisItem.CreatedAtIso), DateTimeFormat.ShortDateTime)
    • ThisItem.TweetText
  4. Gör texten i den sista etiketten fetstilt så att galleriet liknar det här exemplet.

    Galleri som visar exempel på tweets.

Steg 4: Visa anslutningsstatus

  1. Infoga en etikett under galleriet och ange sedan egenskapen Color till röd.

  2. Ange den nyaste etikettens egenskap Text till denna formel:

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

Den här formeln bestämmer om enheten är online eller inte. Om den är det visar etiketten Ansluten annars visar den Offline.

Steg 5: lägga till en ruta för att skapa tweets

  1. Under etiketten anslutningsstatus, infoga en Textinmatningkontroll och byter namn på den NewTweetTextInput.

  2. Ange textinmatningsradens egenskap Default till "".

    Galleri över statusinformation och Text Inputruta.

Steg 6: Lägg till en knapp för att publicera en tweet

  1. Under textinmatningsraden, lägg till en Knapp-kontroll och ange dess egenskap Text till detta värde:

    "Tweet"

  2. Ställ in knappens egenskap OnSelect enligt den här formeln:

    If( Connection.Connected,
        Twitter.Tweet( "", {tweetText: NewTweetTextInput.Text} ),
        Collect( LocalTweetsToPost, {tweetText: NewTweetTextInput.Text} );
            SaveData( LocalTweetsToPost, "LocalTweetsToPost" )
    );
    Reset( NewTweetTextInput );
    
  3. I egenskapen OnStart för appen App, lägger du till en rad i slutet av formeln:

    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 formel för att ladda tweets med okommenterad rad.

Den här formeln bestämmer om enheten är online eller inte:

  • Om enheten är online, publiceras tweet omedelbart.
  • Om enheten är offline, läggs tweets-texten i en LocalTweetsToPost-samling och sparas till enheten.

Formeln återställer sedan texten i textinmatningsraden.

Steg 7: Sök efter nya tweets

  1. På knappens högra sida lägger du till en Timer-kontroll.

    Sista appar.

  2. Ange timerns egenskap Duration till 300000.

  3. Ange timerns egenskaper AutoStart och Repeat till true.

  4. Ställ in timerns OnTimerEnd till den här formeln:

    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 bestämmer om enheten är online eller inte. Om appen tweets alla objekt i samlingen LocalTweetsToPost och sedan rensa samlingen.

Testa appen

  1. Öppna appen med Power Apps Mobile på en mobil enhet som är ansluten till Internet.

    Befintliga tweets visas i galleriet och status visas som ansluten.

  2. Koppla bort enheten från Internet genom att aktivera enhetens flygplansläge och inaktivera Wi-Fi.

    Statusetiketten visar att appen är offline.

  3. När enheten är offline kan du skriva en tweet som innehåller Power Apps och sedan välja knappen Tweet.

    Tweet kommer att lagras lokalt i samlingen LocalTweetsToPost.

  4. Återanslut enheten från Internet genom att inaktivera enhetens flygplansläge och aktivera Wi-Fi.

    Inom fem minuter skickar appen en tweet, som visas i galleriet.

Vi hoppas att denna artikel ger dig en uppfattning om Power Apps funktioner för att skapa offline-appar. Som alltid kan du lämna feedback i våra forum och dela dina exempel på offline-appar i Power Apps community-blogg.

Anteckning

Kan du berätta om dina inställningar för dokumentationsspråk? Svara i en kort undersökning. (observera att undersökningen är på engelska)

Undersökningen tar ungefär sju minuter. Inga personuppgifter samlas in (sekretesspolicy).