Uno degli scenari più comuni che gli sviluppatori delle app per dispositivi mobili si trovano ad affrontare consiste nel favorire la produttività degli utenti quando la connettività è limitata o addirittura assente. PowerApps offre un set di funzionalità e comportamenti che consentono di sviluppare app con supporto offline. Puoi:

  • Avviare l'app PowerApps per dispositivi mobili quando offline.
  • Eseguire applicazioni sviluppate quando offline.
  • Determinare quando un'app è offline, online o in una connessione a consumo usando l'oggetto segnale Connessione.
  • Usare raccolte e sfruttare le funzioni come LoadData e SaveData per l'archiviazione dei dati di base quando offline.

Come creare app con supporto offline

La prima cosa da considerare negli scenari offline è l'utilizzo dei dati nelle app. Le app in PowerApps accedono principalmente ai dati attraverso un set di connettori offerto dalla piattaforma, ad esempio SharePoint, Office 365 e Common Data Service. È anche possibile creare connettori personalizzati che consentono alle app di accedere a qualsiasi servizio che fornisca un endpoint RESTful. Potrebbe trattarsi di un'API Web o di un servizio, ad esempio Funzioni di Azure. Tutti questi connettori usano HTTPS tramite Internet, quindi gli utenti devono essere online per poter accedere ai dati e a qualsiasi altra funzionalità offerta da un servizio.

App PowerApps con i connettori

Gestione dei dati offline

Uno degli aspetti più interessanti di PowerApps è un set di funzionalità e formule che consentono di filtrare, cercare, ordinare, aggregare e modificare i dati in modo coerente, indipendentemente dall'origine dati. Le origini vanno dalle raccolte in memoria nell'app agli elenchi di SharePoint, ai database SQL e a Common Data Service. Questa coerenza consente di ridestinare facilmente un'app all'uso di un back-end diverso. Ancora più importante in questo caso, consente anche di usare le raccolte locali per la gestione dei dati quasi senza quasi apportare modifiche alla logica di un'app. Le raccolte locali sono, in effetti, il meccanismo principale per la gestione dei dati offline.

Creazione di un'applicazione Twitter offline

Per continuare ad analizzare gli aspetto offline dello sviluppo di app verrà ora mostrato un semplice scenario basato su Twitter. Verrà creata un'app che consente di leggere post su Twitter e inviare tweet quando offline. Quando l'app torna online, pubblica tweet e ricarica i dati locali.

A livello principale, l'app effettua le seguenti operazioni:

  1. All'avvio dell'app (in base alla proprietà OnVisible nella prima schermata):

    • Se il dispositivo è online, si accede direttamente al connettore Twitter per recuperare i dati e, con questi, popolare una raccolta.
    • Se il dispositivo è offline, si caricano i dati da un file della cache locale usando LoadData.
    • Si consente all'utente di inviare tweet: se online, pubblicandoli direttamente su Twitter e aggiornando la cache locale.
  2. Ogni 5 minuti, se online:

    • Si pubblicano tutti i tweet presenti nella cache locale.
    • Si aggiorna la cache locale e la si salva con SaveData.

Passaggio 1: Creare una nuova app per smartphone

  1. Aprire PowerApps Studio.
  2. Scegliere o toccare Nuovo > App vuota > Layout del telefono.

    App vuota, layout del telefono

Passaggio 2: Aggiungere una connessione a Twitter

  1. Scegliere o toccare Contenuto > Origini dati, quindi scegliere Aggiungi origine dati nel pannello Origini dati.
  2. Scegliere o toccare Nuova connessione, selezionare Twitter e scegliere o toccare Crea.
  3. Immettere le credenziali e creare la connessione.

    Aggiungere una connessione a Twitter

Passaggio 3: Caricare i tweet in una raccolta LocalTweets all'avvio dell'app

Selezionare la proprietà OnVisible per Screen1 nell'app e copiare la formula seguente:

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")

Formula per caricare tweet

Questa formula controlla se il dispositivo è online:

  • Se il dispositivo è online, carica una raccolta LocalTweets che contiene fino a 100 tweet con il termine di ricerca "PowerApps".
  • Se il dispositivo è offline, carica la cache locale da un file denominato "Tweet", se disponibile.

Passaggio 4: Aggiungere una raccolta e associarla alla raccolta LocalTweets

  1. Inserire una nuova raccolta ad altezza dinamica: Inserisci > Raccolta > Vuota ad altezza dinamica.
  2. Impostare la proprietà Items su LocalTweets.
  3. Aggiungere quattro controlli Etichetta per visualizzare i dati da ciascun tweet e impostare le proprietà Text su:
    • ThisItem.TweetText
    • ThisItem.UserDetails.FullName & " @" & ThisItem.UserDetails.UserName
    • "RT: " & ThisItem.RetweetCount
    • Text(DateTimeValue(ThisItem.CreatedAtIso), DateTimeFormat.ShortDateTime)
  4. Aggiungere un controllo Immagine e impostare la proprietà Image su ThisItem.UserDetails.ProfileImageUrl.

Passaggio 5: Aggiungere un'etichetta di stato di connessione

Inserire un nuovo controllo Etichetta e impostarne la proprietà Text sulle formule seguenti:

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

Questa formula controlla se il dispositivo è online. Se lo è, il testo dell'etichetta è "Connesso", in caso contrario è "Offline".

Passaggio 6: Aggiungere un input di testo per comporre nuovi tweet

  1. Inserire un nuovo controllo Input di testo denominato "NewTweetTextInput".
  2. Impostare la proprietà Reset dell'input di testo su resetNewTweet.

Passaggio 7: Aggiungere un pulsante per pubblicare il tweet

  1. Aggiungere un controllo Pulsante e impostarne la proprietà Text su "Tweet".
  2. Impostare la proprietà OnSelect sulla formula seguente:

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

Questa formula controlla se il dispositivo è online:

  • Se il dispositivo è online, twitta il testo immediatamente.
  • Se il dispositivo è offline, acquisisce il tweet in una raccolta LocalTweetsToPost e lo salva l'applicazione.

Quindi, la formula reimposta il testo nella casella di testo.

Passaggio 8: Aggiungere un timer per verificare se ci sono tweet ogni cinque minuti

Aggiungere un nuovo controllo Timer:

  • Impostare la proprietà Duration su 300000.
  • Impostare la proprietà AutoStart su true.
  • Impostare la proprietà OnTimerEnd sulla formula seguente:

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

Questa formula controlla se il dispositivo è online. Se lo è, l'app twitta tutti gli elementi nella raccolta LocalTweetsToPost, quindi ne cancella il contenuto.

Ora che l'app è completata, se ne valuterà l'aspetto prima di procedere all'esecuzione di test. A sinistra, l'app è connessa; a destra, è offline, con un tweet pronto per la pubblicazione quando sarà nuovamente online.

App completata in modalità online e offline

Test dell'app

Per testare l'app, procedere come segue:

  1. Eseguire PowerApps in un dispositivo mobile in modalità online.

    È necessario eseguire un'app almeno una volta in modalità online, per poter scaricare l'app nel dispositivo.

  2. Avviare l'app Twitter.

  3. Si noti che vengono caricati i tweet e che lo stato è Connesso.

  4. Chiudere PowerApps completamente.

  5. Impostare il dispositivo in modalità aereo per assicurarsi che sia offline.

  6. Eseguire PowerApps.

    È ora possibile eseguire l'app Twitter offline e sarà possibile accedere alle altre app che sono stati eseguite in precedenza su questo dispositivo mentre online (cioè PowerApps nasconde le app che non sono ancora state scaricate sul dispositivo).

  7. Eseguire nuovamente l'app.

  8. Si noti come riflette correttamente lo stato di connessione, con lo stato Offline.

  9. Scrivere un nuovo tweet, che verrà archiviato in locale nella raccolta LocalTweetsToPost.

  10. Uscire dalla modalità aereo. Dopo che viene attivato il timer, l'app pubblica il tweet.

Ci auguriamo che questo articolo offra un'idea delle funzionalità di PowerApps per la creazione di app offline. Come sempre, invitiamo gli utenti a fornire commenti e suggerimenti nel forum e a condividere gli esempi di app offline nel blog della community di PowerApps.