Tworzenie aplikacji kanwy działających offline

Użytkownicy mobilni często muszą mieć wydajność nawet wtedy, gdy mają ograniczoną łączność lub brak łączności. Podczas tworzenia aplikacji dla kanwy można wykonać następujące zadania:

  • Otwórz aplikację Power Apps Mobile i uruchamiaj aplikacje, gdy urządzenie nie jest podłączone do sieci.
  • Określ, kiedy aplikacja jest w trybie offline, online lub używa mierzonego połączenia, wykorzystując obiekt sygnału Połączenie.
  • Synchronizacja danych między urządzeniem a serwerem.

Jeśli aplikacja łączy się z Dataverse, obsługa trybu offline jest wbudowana. Power Apps umożliwia pobieranie danych na urządzenie i przesyłanie zmian z powrotem do Dataverse. Jeśli aplikacja nie korzysta z Dataverse, można użyć kolekcji i wykorzystać funkcje LoadData i SaveData do podstawowego przechowywania danych w trybie offline.

Uwaga

  • Funkcja offline dla aplikacji kanwy jest dostępna podczas uruchamiania aplikacji przy użyciu natywnej aplikacji Power Apps Mobile w systemach iOS, Android i Windows.
  • Aplikacje kanwy uruchomione w przeglądarkach internetowych nie mogą działać w trybie offline, nawet w przypadku korzystania z przeglądarki internetowej na urządzeniu mobilnym.
  • Aplikacje kanwy w usłudze Teams są ograniczone do 1 MB danych za pośrednictwem funkcji LoadData i SaveData — przydatne dla niewielkiej liczby ciągów tekstowych, liczb i dat. Korzystanie z obrazów lub innych nośników jest nieodpowiednie dla tego limitu. Więcej informacji: Odwołanie do funkcji LoadData i SaveData

Włącz obsługę trybu offline w aplikacji Dataverse opartej na kanwie

W przypadku aplikacji opartych na kanwie Microsoft Dataverse należy użyć funkcji offline wbudowanej w środowisko offline-first. Więcej informacji można znaleźć w Konfiguracja mobilnego trybu offline dla aplikacji opartych na kanwie i Praca z aplikacjami opartymi na kanwie w trybie offline. Za pomocą przełącznika aplikacja może pracować z danymi Dataverse, gdziekolwiek jesteś, z połączeniem sieciowym lub bez niego. Wystarczy zbudować aplikację przy użyciu standardowych formuł Power Fx, a funkcja offline zajmie się całą złożonością.

Użyj LoadData i SaveData dla wszystkich innych łączników

W tej sekcji przedstawiono przykład korzystania z danych usługi Twitter. To jeszcze prostsze przykłady, które nie wymagają połączenia, są uwzględniane w informacje dotyczące funkcji LoadData i SaveData.

Obejrzyj ten film, aby dowiedzieć się, jak tworzyć aplikacje oparte na kanwie działające w trybie offline, które nie korzystają z danych Dataverse:

Ograniczenia

Połącz LoadData i SaveData, aby utworzyć prosty mechanizm przechowywania na urządzeniu lokalnym niewielkich ilości danych. Korzystając z tych funkcji, użytkownik może dodać proste funkcje trybu offline do aplikacji.

Te funkcje są ograniczone przez ilość dostępnej pamięci aplikacji, ponieważ są one używane w zbiorze pamięci. Ilość dostępnej pamięci może się różnić w zależności od urządzenia, systemu operacyjnego, pamięci używanej przez Power Apps Mobile oraz złożoności aplikacji pod względem ekranów i kontrolek. W przypadku przechowywania więcej niż kilku megabajtów danych przetestuj swoją aplikację w oczekiwanych scenariuszach na urządzeniach, na których oczekujesz na uruchomienie. Zazwyczaj istnieje 30-70 MB dostępnej pamięci.

Funkcje nie powodują również automatycznego rozwiązywania konfliktów scalania podczas przejściu do trybu online. Konfiguracja zapisywanych danych i sposobu obsługi ponownego połączenia zależy od twórcy podczas pisania wyrażeń.

Aby uzyskać więcej informacji o możliwościach pracy w trybie offline, należy wrócić do tego tematu i subskrybować blog Power Apps.

Omówienie

Projektując scenariusze w trybie offline, należy rozważyć, jak aplikacje będą pracować z danymi. Aplikacje w Power Apps są szczególnie narażone na dostęp do danych za pośrednictwem zestawu łączników udostępnianych na platformie, takich jak SharePoint, Office 365 oraz Microsoft Dataverse. Możesz również tworzyć łączniki niestandardowe, które umożliwiają aplikacjom dostęp do dowolnej usługi, którą udostępnia punkt końcowy usługi RESTful. Może to być internetowy interfejs API lub usługi, takie jak Azure Functions. Wszystkie te łączniki używają protokołu HTTPS przez Internet, co oznacza, że użytkownicy muszą być online, aby mieć dostęp do danych i innych funkcji, które oferuje usługa.

Aplikacja Power Apps z łącznikami.

Obsługa danych w trybie offline

W Power Apps można filtrować, wyszukiwać, sortować, agregować i operować danymi we spójny sposób, niezależnie od źródła danych. Źródła zakres od zbiorów w pamięci w aplikacji do list utworzonych przy użyciu list Microsoft Lists do baz danych SQL i Dataverse. Ze względu na tę spójność aplikacje można łatwo zmienić, aby móc korzystać z innego źródła danych. Co ważniejsze w scenariuszach offline, możesz używać lokalnych kolekcji do zarządzania danymi bez prawie żadnych zmian w logice aplikacji. W rzeczywistości lokalne kolekcje są podstawowym mechanizmem obsługi danych w trybie offline.

Budowanie aplikacji offline

Aby utrzymać uwagę na aspektach tworzenia aplikacji w trybie offline, ten temat pokazuje prosty scenariusz skoncentrowany wokół serwisu Twitter. Utworzysz aplikację, która umożliwia odczytywanie wpisów w serwisie Twitter i przesłanie tweetów, będąc w trybie offline. Gdy aplikacja przejdzie w tryb online, opublikuje tweety i przeładuje dane lokalne.

Na wysokim poziomie aplikacja wykonuje następujące zadania:

  • Kiedy użytkownik otworzy aplikację:

    • Jeśli urządzenie jest w trybie online, aplikacja pobiera dane przez złącze Twittera i zapełnia kolekcję tymi danymi.
    • Jeśli urządzenie jest w trybie offline, aplikacja ładuje dane z lokalnego pliku pamięci podręcznej za pomocą funkcji LoadData.
    • Użytkownik może przesyłać tweety. Jeśli aplikacja jest w trybie online, księguje te tweety bezpośrednio do usługi Twitter i odświeża lokalną pamięć podręczną.
  • Co pięć minut, gdy aplikacja jest w trybie online:

    • W aplikacji są księgowane wszystkie tweety w lokalnej pamięci podręcznej.
    • Aplikacja odświeża lokalną pamięć podręczną i zapisuje ją, korzystając z funkcji SaveData.

Krok 1: Dodawanie usługi Twitter do pustej aplikacji telefonicznej

  1. Tworzenie pustej aplikacji kanwy z układem Telefon.
  2. Na karcie Widok wybierz pozycję Źródła danych.
  3. W okienku Dane wybierz pozycję Dodaj źródło danych.
  4. Wybierz Nowe połączenie > Twitter > Utwórz.
  5. Wprowadź poświadczenia, utwórz połączenie i zamknij okienko Dane.

Krok 2: gromadzenie istniejących tweetów

  1. W okienku Widoku drzewa wybierz Aplikacja, a następnie ustaw jej właściwość OnStart na tę formułę:

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

    Formuła ładowania tweetów.

  2. W okienku Widoku drzewa wybierz menu wielokropka dla obiektu Aplikacji, a następnie z listy wybierz kolejno opcję Uruchom OnStart, aby uruchomić tę formułę.

    Uruchom formułę ładowania tweetów.

    Uwaga

    Funkcje LoadData i SaveData mogą pokazać błąd w Power Apps Studio, ponieważ przeglądarka ich nie obsługuje. Jednak zostaną one wykonane zwykle po wdrożeniu tej aplikacji na urządzenie.

Ta formuła sprawdza, czy urządzenie jest w trybie online:

  • Jeśli urządzenie jest w trybie online, formuła ładuje maksymalnie 10 tweetów z wyszukiwanym terminem „PowerApps” do kolekcji LocalTweets.
  • Jeśli urządzenie jest w trybie offline, formuła ładuje lokalną pamięć podręczną z pliku o nazwie „LocalTweets”, jeśli jest dostępny.
  1. Na karcie Wstawianie wybierz Galerię > Pusta wysokość elastyczna.

  2. Ustaw właściwość Elementy kontrolki Galeria obrazów na wartość LocalTweets.

  3. W szablonie galerii dodaj trzy kontrolki Etykieta i ustaw właściwość Tekst każdej etykiety na jedną z następujących wartości:

    • ThisItem.UserDetails.FullName & " (@" & ThisItem.UserDetails.UserName & ")"
    • Text(DateTimeValue(ThisItem.CreatedAtIso), DateTimeFormat.ShortDateTime)
    • ThisItem.TweetText
  4. Aby sprawdzić, czy tekst w ostatniej etykiecie jest pogrubiony, należy go pogrubić do tego przykładu.

    Galeria zawierająca przykładowe tweety.

Krok 4: Wyświetlanie stanu połączenia

  1. W galerii wstaw etykietę, a następnie ustaw jej właściwość Kolor na Czerwony.

  2. Ustaw właściwość Tekst najnowszej etykiety na następującą formułę:

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

Ta formuła określa, czy urządzenie jest w trybie online. Jeśli tak jest, tekst na etykiecie to Połączono, w przeciwnym razie Offline.

Krok 5: Dodawanie pola do redagowania tweetów

  1. W obszarze etykiety stanu połączenia Wstaw kontrolkę Wprowadzania tekstu i zmień jej nazwę na NewTweetTextInput.

  2. Ustaw właściwość Domyślne w polu wprowadzania tekstu na wartość "".

    Galeria ponad informacjami o stanie i polem wprowadzania tekstu.

Krok 6. Dodawanie przycisku do publikowania tweeta

  1. W polu wprowadzania tekstu dodaj kontrolkę Przycisk i ustaw jej właściwość Tekst na tę wartość:

    "Tweet"

  2. Dla właściwości OnSelect przycisku ustaw następującą formułę:

    If( Connection.Connected,
        Twitter.Tweet( "", {tweetText: NewTweetTextInput.Text} ),
        Collect( LocalTweetsToPost, {tweetText: NewTweetTextInput.Text} );
            SaveData( LocalTweetsToPost, "LocalTweetsToPost" )
    );
    Reset( NewTweetTextInput );
    
  3. W polu właściwość OnStart elementu Aplikacja dodaj wiersz na końcu formuły:

    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
    

    Uruchom formułę, aby wczytać tweety z niekomentowanym wierszem.

Ta formuła określa, czy urządzenie jest w trybie online:

  • Jeśli urządzenie jest w trybie online, natychmiast publikuje tweet.
  • Jeśli urządzenie jest w trybie offline, przechwytuje tweet w kolekcji LocalTweetsToPost i zapisuje go w urządzeniu.

Następnie formuła resetuje tekst w polu wprowadzania tekstu.

Krok 7: Sprawdzanie, czy są nowe tweety

  1. Dodaj kontrolkę Zegara po prawej stronie przycisku.

    Końcowe aplikacje.

  2. Ustaw właściwość Czas trwania na 300000.

  3. Ustaw właściwości AutoStart i Powtórzenia czasomierza na wartość prawda.

  4. Ustaw OnTimerEnd zegara na następującą formułę:

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

Ta formuła określa, czy urządzenie jest w trybie online. Jeśli tak jest, aplikacja tweetuje wszystkie pozycje w kolekcji LocalTweetsToPost, a następnie czyści kolekcję.

Testowanie aplikacji

  1. Otwórz aplikację za pomocą aplikacji Power Apps Mobile na urządzeniu mobilnym połączonym z Internetem.

    Istniejące tweety zostaną wyświetlone w galerii, a stan zostanie wyświetlony jako Połączone.

  2. Odłącz urządzenie od Internetu, włączając w tym celu tryb samolotowy urządzenia i wyłączając sieć Wi-Fi.

    Etykieta stanu wskazuje, że aplikacja jest w trybie Offline.

  3. Kiedy urządzenie jest w trybie offline, napisz tweet zawierający Power Apps, a następnie wybierz przycisk Tweet.

    Tweet zostanie zapisany lokalnie w kolekcji LocalTweetsToPost.

  4. Ponownie podłącz urządzenie do Internetu, wyłączając tryb samolotowy urządzenia i włączając Wi-Fi.

    W ciągu pięciu minut aplikacja zaksięguje Tweet, który zostanie wyświetlony w galerii.

Mamy nadzieję, że ten artykuł daje wyobrażenie o możliwościach, którymi usługa Power Apps dysponuje podczas tworzenia aplikacji mogących działać w trybie offline. Jak zawsze prześlij opinię na naszym forum i udostępnij swoje przykłady aplikacji w trybie offline w blogu społeczności Power Apps.

Uwaga

Czy możesz poinformować nas o preferencjach dotyczących języka dokumentacji? Wypełnij krótką ankietę. (zauważ, że ta ankieta jest po angielsku)

Ankieta zajmie około siedmiu minut. Nie są zbierane żadne dane osobowe (oświadczenie o ochronie prywatności).