Ett av de vanligaste scenarier du möter som utvecklare av mobila appar är att göra det möjligt för dina användare att vara produktiva när det är begränsad eller ingen anslutning alls. PowerApps har en uppsättning funktioner och beteenden som hjälper dig att utveckla offline-kompatibla appar. Du kan:

  • Starta PowerApps mobila app när du är offline.
  • Kör appar som du utvecklar 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 såsom LoadData och SaveData för lagring av grundläggande data offline.

Skapa offline-kompatibla appar

Det första du tänker om offline-scenarier är hur dina appar arbetar med data. Appar i PowerApps kommer främst åt data via en uppsättning anslutningsappar som ingår i plattformen, såsom SharePoint, Office 365 och Common Data Service. 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.

PowerApps app med anslutningsappar

Hantering av data offline

En av de mest intressanta aspekterna av PowerApps är en uppsättning funktioner och formler som gör att du kan filtrera, söka, sortera, sammanställa och manipulera data på ett konsekvent sätt oavsett datakälla. Datakällor kan vara allt från InMemory-samlingar i appen, till SharePoint-listor, till SQL-databaser och Common Data Service. Den här konsekvensen gör att du enkelt kan omdirigera en app till att använda en annan serverdel. Viktigare här är att du också kan 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 för Twitter

Om du vill behålla fokus på offline-aspekter vid utveckling av appar, visar vi dig ett enkelt scenario för Twitter. Vi 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å gör appen följande:

  1. Vid start av appen (baserat på den första skärmens egenskap OnVisible):

    • Om enheten är online, får vi tillgång till Twitter-anslutningsappen direkt för att hämta data och fylla i en samling med dessa data.
    • Om enheten är offline, läser vi in data från en lokal cache-fil med LoadData.
    • Vi möjliggör för användaren att skicka tweets – om hen är online publicerar vi direkt till Twitter och uppdaterar den lokala cachen.
  2. Var femte minut, om online:

    • Publicerar vi alla tweets som vi har i den lokala cachen.
    • Uppdaterar vi den lokala cachen och sparar den med SaveData.

Steg 1: Skapa en ny telefonapp

  1. Starta PowerApps Studio.
  2. Klicka eller tryck på Ny > Tom app > Telefonlayout.

    Tom app, telefonlayout

Steg 2: Lägg till en Twitter-anslutning

  1. Klicka eller tryck på Innehåll > Datakällor och välj sedan Lägg till datakällan på panelen Datakällor.
  2. Klicka eller tryck på Ny anslutning, välj Twitter och klicka eller tryck på Skapa.
  3. Ange dina autentiseringsuppgifter och skapa anslutningen.

    Lägg till en Twitter-anslutning

Steg 3: Läs in tweets i en LocalTweets-samling vid start av appen

Välj egenskapen OnVisible för Screen1 i appen och kopiera i följande formel:

If(Connection.Connected,

    ClearCollect(LocalTweets, Twitter.SearchTweet("PowerApps", {maxResults: 100}));

    UpdateContext({statusText: "Online data"})

    ,

    LoadData(LocalTweets, "Tweets", true);

    UpdateContext({statusText: "Local data"})

);

LoadData(LocalTweetsToPost, "LocalTweets", true);

SaveData(LocalTweets, "Tweets")

Formel för att läsa in tweets

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

  • Om enheten är online, laddar den upp till 100 tweets med söktermen "PowerApps" till en LocalTweets-samling.
  • Om enheten är offline, laddas den lokala cachen från en fil med namnet "Tweets" om tillgänglig.

Steg 4: Lägg till ett galleri och koppla det till samlingen LocalTweets

  1. Infoga ett nytt galleri med flexibel höjd: Infoga > Galleri > Tom flexibel höjd.
  2. Ange egenskapen Objekt till LocalTweets.
  3. Lägg till fyra Etikett-kontroller för att visa data från varje tweets och ange egenskapen Text till:
    • ThisItem.TweetText
    • ThisItem.UserDetails.FullName & " @" & ThisItem.UserDetails.UserName
    • "RT: " & ThisItem.RetweetCount
    • Text(DateTimeValue(ThisItem.CreatedAtIso), DateTimeFormat.ShortDateTime)
  4. Lägg till en Avbildnings-kontroll och ange egenskapen Avbildning till ThisItem.UserDetails.ProfileImageUrl.

Steg 5: Lägg till en statusetikett för anslutning

Infoga en ny Etikett-kontroll och ange dess Text-egenskap till följande formel:

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

Den här formeln kontrollerar om enheten är online. Om den är online är texten i etiketten "Ansluten", annars är den "Offline".

Steg 6: Lägg till en textinmatning för att skapa nya tweets

  1. Infoga en ny kontroll för Textinmatning med namnet "NewTweetTextInput".
  2. Ange egenskapen Återställ för textinmatningen till resetNewTweet.

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

  1. Lägg till en Knapp-kontroll och ställ in dess Text-egenskap till ”Tweet”.
  2. Ange egenskapen OnSelect till följande formel:

    If (Connection.Connected,
    
        Twitter.Tweet("", {tweetText: NewTweetTextInput.Text}),
    
        Collect(LocalTweetsToPost, {tweetText: NewTweetTextInput.Text});
    
        SaveData(LocalTweetsToPost, "LocalTweetsToPost")
    
    );
    
    UpdateContext({resetNewTweet: true});
    
    UpdateContext({resetNewTweet: false})
    

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

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

Formeln återställer sedan texten i textrutan.

Steg 8: Lägg till en timer för att söka efter tweets var femte minut

Lägg till en ny Timer-kontroll:

  • Ange egenskapen Varaktighet till 300000.
  • Ange egenskapen AutoStart till true.
  • Ange OnTimerEnd till följande formel:

    If(Connection.Connected,
    
        ForAll(LocalTweetsToPost, Twitter.Tweet("", {tweetText: tweetText}));
    
        Clear(LocalTweetsToPost);
    
        Collect(LocalTweetsToPost, {tweetText: NewTweetTextInput.Text});
    
        SaveData(LocalTweetsToPost, "LocalTweetsToPost");
    
        UpdateContext({statusText: "Online data"})
    )
    

Den här formeln kontrollerar om enheten är online. Om den är online publicerar appen tweets för alla objekt i LocalTweetsToPost-samlingen. Sedan tar den bort samlingen.

Nu när appen är klar ska vi se hur den ser ut innan vi går vidare till att testa den. Till vänster är appen ansluten; till höger är den offline, med en tweets som är redo att publiceras när den är online igen.

Färdig app med online- och offline-läge

Testa appen

Använd följande steg för att testa appen:

  1. Kör PowerApps på en mobil enhet när du är online.

    Du måste köra en app minst en gång när du är online, så att du kan ladda ned appen till enheten.

  2. Starta Twitter-appen.

  3. Observera att tweets läses in och att statusen är Ansluten.

  4. Stäng PowerApps helt.

  5. Sätt enheten i flygplansläge så att den är offline.

  6. Kör PowerApps.

    Du kan nu köra Twitter-appen offline och du har åtkomst till andra appar som du tidigare har kört på enheten när du var online (d.v.s. PowerApps döljer alla appar som ännu inte har hämtats till din enhet).

  7. Kör appen igen.

  8. Observera hur den korrekt avspeglar anslutningsstatusen som Offline.

  9. Skriv en ny tweet. Den kommer att lagras lokalt i samlingen LocalTweetsToPost.

  10. Avsluta flygplansläget. När timern utlöses publicerar appen tweets.

Vi hoppas att denna artikel ger dig en uppfattning om PowerApps 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 PowerApps community-blogg.