Udvikle lærredsapps, der køres offline

Mobilbrugere har ofte behov for at være produktive, selv når de har begrænset eller ingen forbindelse. Når du opretter en lærredsapp, kan du udføre disse opgaver:

  • Åbn Power Apps Mobile, og kør apps, når enheden ikke har forbindelse til netværket.
  • Fastslå, om en app er offline, online eller en del af en forbrugsbaseret forbindelse ved hjælp af signalobjektet Forbindelse.
  • Synkroniser data mellem enheden og serveren.

Hvis din app opretter forbindelse til Dataverse, er offlinesupport indbygget. Power Apps giver dig mulighed for at hente data til enheden og overføre ændringer tilbage til Dataverse. Hvis din app ikke bruger Dataverse, kan du bruge samlinger og udnytte funktionerne LoadData og SaveData til lagring af grundlæggende data, når du arbejder offline.

Bemærk

  • Offlinefunktionalitet for lærredsapps er kun tilgængelig, når du kører apps ved hjælp af de indbyggede Power Apps Mobile-spillere på iOS, Android og Windows.
  • Lærredapps, der kører i webbrowsere, kan ikke køre offline, heller ikke når du bruger en webbrowser på en mobilenhed.
  • Lærredapps i Teams er begrænset til 1 MB data via LoadData- og SaveData-funktioner, som er nyttigt for et lille antal tekststrenge, tal og datoer. Brugen af billeder eller andre medier er upassende for denne grænse. Flere oplysninger: Reference til funktionen LoadData og SaveData

Aktivér offlinesupport i en Dataverse-baseret lærredsapp

Vedrørende Microsoft Dataverse-baserede lærredsapps skal du bruge offlinefunktionaliteten indbygget med offline-først. Du kan finde flere oplysninger i Konfigurer mobil offline til lærredsapps og Arbejd med lærredsapps offline. Når du skifter på en kontakt, kan din app arbejde med Dataverse-data, uanset hvor du er, med eller uden en netværksforbindelse. Du kan blot bygge din app med standard Power Fx-formler, og offlinefunktionen håndterer hele kompleksiteten for dig.

Brug af LoadData og SaveData til alle andre connectorer

Denne sektion indeholder et eksempel, som bruger Twitter-data. Et endnu mere enkelt eksempel, der ikke kræver en forbindelse, er medtaget i funktionsreferencen LoadData og SaveData.

Se denne video for at få mere at vide om, hvordan du opretter offline-aktiverede lærredsapp, der ikke bruger Dataverse-data:

Begrænsninger

Kombiner LoadData og SaveData for at danne en enkel mekanisme til lagring af mindre mængder data på en lokal enhed. Når du bruger disse funktioner, kan du tilføje simple offlinefunktioner til din app.

Disse funktioner er begrænset af mængden af tilgængelig apphukommelse, fordi de opererer på en samling i hukommelsen. Tilgængelig hukommelse kan variere afhængigt af enheden, operativsystemet, den hukommelse, som Power Apps Mobile bruger, samt appens kompleksitet med hensyn til skærmbilleder og kontrolelementer. Hvis du gemmer mere end nogle få MB data, skal du teste appen med forventede scenarier på de enheder, du forventer at køre den på. Du har generelt 30-70 MB tilgængelig hukommelse.

Funktionerne løser heller ikke automatisk fletningskonflikter, når en enhed er online. Konfiguration af, hvilke data der gemmes, og hvordan genoprettelsen af en forbindelse skal håndteres, er op til producenten, når der skrives udtryk.

Gå tilbage til denne emne, og abonner på Power Apps-bloggen, hvis du vil have opdateringer til offline-funktioner.

Oversigt

Når du designer offlinescenarier, skal du først overveje, hvordan dine apps arbejder med data. Apps i Power Apps får primært adgang til data via en gruppe af connectorer, som platformen indeholder, f.eks. SharePoint, Office 365 og Microsoft Dataverse. Du kan også bygge brugerdefinerede connectorer, der gør det muligt for apps at få adgang til alle tjenester, der har et RESTful-slutpunkt. Det kan f.eks. være en Web-API eller en tjeneste som Azure Functions. Alle disse connectorer bruger HTTPS via internettet, hvilket betyder, at brugerne skal være online for at få adgang til data og andre funktioner, som en tjeneste tilbyder.

Power Apps-app med connectorer.

Håndtering af offlinedata

I Power Apps kan du filtrere, søge i, sortere, samle og manipulere data på en ensartet måde uanset datakilden. Kilder spænder fra samlinger i hukommelsen i appen til lister, der er oprettet ved hjælp af Microsoft Lister, til SQL-databaser og Dataverse. På grund af denne ensartethed kan du nemt målrette en app, så den bruger en anden datakilde. Men hvad vigtigere er for offlinescenarier, kan du også bruge lokale samlinger til datastyring næsten uden ændringer af en apps logik. Lokale samlinger er faktisk den primære mekanisme til håndtering af offlinedata.

Bygge en offlineapp

For at bevare fokus på de offline aspekter af appudvikling illustrerer dette emne et enkelt scenarie, hvor der fokuseres på Twitter. Du skal bygge en app, der gør det muligt at læse Twitter-opslag og sende tweets, mens du er offline. Når appen bliver online, sendes tweets, og lokale data genindlæses.

På et overordnet niveau udfører appen disse opgaver:

  • Når brugeren åbner appen:

    • Hvis enheden er online, henter appen data gennem Twitter-connectoren og udfylder en samling med de pågældende data.
    • Hvis enheden er offline, indlæser appen dataene fra en lokal cachefil ved hjælp af funktionen LoadData.
    • Brugeren kan sende tweets. Hvis appen er online, sender den tweets direkte til Twitter og opdaterer den lokale cache.
  • Hvert femte minut, mens appen er online:

    • Appen bogfører alle tweets i den lokale cache.
    • Appen opdaterer den lokale cache og gemmer den ved hjælp af funktionen SaveData.

Trin 1: Tilføje Twitter til en tom telefonapp

  1. Opret en tom lærredsapp med Telefon-layout.
  2. På fanen Vis skal du vælge Datakilder.
  3. I ruden Data skal du vælge Tilføj datakilde.
  4. Vælg Ny forbindelse > Twitter > Opret.
  5. Angiv dine legitimationsoplysninger, opret forbindelsen, og luk derefter ruden Data.

Trin 2: Indsamle eksisterende tweets

  1. Vælg App i ruden Trævisning, og angiv derefter egenskaben OnStart til denne 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 til indlæsning af tweets.

  2. Vælg ellipsemenuen for App-objektet i ruden Trævisning, og vælg derefter Kør OnStart for at køre den pågældende formel.

    Kør formel for at indlæse tweets.

    Bemærk

    Funktionerne LoadData og SaveData viser muligvis en fejlmeddelelse i Power Apps Studio, fordi browseren ikke understøtter dem. De udføres dog normalt, efter at du har installeret denne app på en enhed.

Denne formel kontrollerer, om enheden er online:

  • Hvis enheden er online, indlæser formlen op til 10 tweets med søgeordet "PowerApps" i en samling af typen LocalTweets.
  • Hvis enheden er offline, indlæser formlen den lokale cache fra en fil med navnet "LocalTweets", hvis den er tilgængelig.
  1. Vælg Galleri > Tom fleksibel højde under fanen Indsæt.

  2. Angiv egenskaben Items for kontrolelementet af typen Galleri til LocalTweets.

  3. Tilføj tre kontrolelementer af typen Etiket i galleriskabelonen , og angiv egenskaben Text for de enkelte etiketter til en af disse værdier:

    • ThisItem.UserDetails.FullName & " (@" & ThisItem.UserDetails.UserName & ")"
    • Text(DateTimeValue(ThisItem.CreatedAtIso), DateTimeFormat.ShortDateTime)
    • ThisItem.TweetText
  4. Gør teksten i sidste etiket fed, så galleriet minder om dette eksempel.

    Galleri, der viser eksempeltweets.

Trin 4: Vise forbindelsesstatus

  1. Indsæt en etiket under galleriet, og angiv derefter dens egenskab Color til Red.

  2. Angiv den nyeste etikets egenskab Text til denne formel:

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

Denne formel fastlægger, om enheden er online. Hvis enheden er online, viser etiketten Connected, og hvis ikke, er teksten Offline.

Trin 5: Tilføje et felt for at oprette tweets

  1. Indsæt et kontrolelement af typen Tekstinput under etiketten for forbindelsesstatus, og omdøb det til NewTweetTextInput.

  2. Angiv egenskaben Default for tekstinputfeltet til "".

    Galleri over statusoplysninger og tekstinputfelt.

Trin 6: Tilføje en knap for at opslå tweetet

  1. Tilføj et kontrolelement af typen Knap under tekstinputfeltet, og angiv egenskaben Text til denne værdi:

    "Tweet"

  2. Angiv knappens egenskab OnSelect til denne formel:

    If( Connection.Connected,
        Twitter.Tweet( "", {tweetText: NewTweetTextInput.Text} ),
        Collect( LocalTweetsToPost, {tweetText: NewTweetTextInput.Text} );
            SaveData( LocalTweetsToPost, "LocalTweetsToPost" )
    );
    Reset( NewTweetTextInput );
    
  3. Tilføj en linje i slutningen af formlen i egenskaben OnStart for App:

    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 for at indlæse tweets med en ikke-kommenteret linje.

Denne formel fastlægger, om enheden er online:

  • Hvis enheden er online, opslås tweetet med det samme.
  • Hvis enheden er offline, registreres tweetet i samlingen LocalTweetsToPost og gemmes på enheden.

Formlen nulstiller derefter teksten i tekstinputfeltet.

Trin 7: Søge efter nye tweets

  1. Tilføj et kontrolelement af typen Timer til højre for knappen.

    Endelige apps.

  2. Angiv timerens egenskab Duration til 300000.

  3. Indstil timerens egenskaber AutoStart og Repeat til true.

  4. Angiv timerens OnTimerEnd til denne formel:

    If( Connection.Connected,
        ForAll( LocalTweetsToPost, Twitter.Tweet( "", {tweetText: tweetText} ) );
        Clear( LocalTweetsToPost );
        ClearCollect( LocalTweets, Twitter.SearchTweet( "PowerApps", {maxResults: 10} ) );
        SaveData( LocalTweets, "LocalTweets" );
    )
    

Denne formel fastlægger, om enheden er online. Hvis enheden er online, sender appen alle elementer i samlingen LocalTweetsToPost som tweets og rydder derefter samlingen.

Test appen

  1. Åbn appen ved hjælp Power Apps Mobile på en mobilenhed, der har forbindelse til internettet.

    Eksisterende tweets vises i galleriet, og statussen viser Connected.

  2. Afbryd forbindelsen mellem enheden og internettet ved at aktivere enhedens flytilstand og deaktivere Wi-Fi.

    Statusetiketten viser, at appen er Offline.

  3. Mens enheden er offline, skal du skrive et tweet, der indeholder Power Apps, og derefter vælge knappen Tweet.

    Tweetet gemmes lokalt i samlingen LocalTweetsToPost.

  4. Genopret forbindelsen mellem enheden og internettet ved at deaktivere enhedens flytilstand og aktivere Wi-Fi.

    Inden for fem minutter slår appen det tweet op, som vises i galleriet.

Vi håber, at denne artikel giver dig et indblik i de funktioner, som Power Apps tilbyder, når du skal bygge offlineapps. Som altid må du meget gerne give feedback i vores forum og dele dine eksempler på offlineapps på bloggen for vores Power Apps-community.

Bemærk

Kan du fortælle os om dine sprogpræferencer for dokumentation? Tag en kort undersøgelse. (bemærk, at denne undersøgelse er på engelsk)

Undersøgelsen tager ca. syv minutter. Der indsamles ingen personlige data (erklæring om beskyttelse af personlige oplysninger).