Share via


Разработване на приложения за платно с възможност за работа офлайн

Потребителите на мобилни устройства често трябва да бъдат продуктивни, дори когато имат ограничена или никаква свързаност. Когато създавате приложение за платно, можете да изпълнявате следните задачи:

  • Отворете Power Apps Mobile и стартирайте приложения, когато устройството не е свързано към мрежата.
  • Определете кога приложението е офлайн, онлайн или в дозирана връзка, като използвате обект на сигнал на Връзка.
  • Синхронизиране на данни между вашето устройство и сървъра.

Ако приложението ви се свързва, Dataverse офлайн поддръжката е вградена. Power Apps Ще ви позволи да изтеглите данни на устройството си и да качите промените обратно Dataverse. Ако приложението ви не се използва Dataverse, можете да използвате колекции и да използвате функциите LoadData и SaveData за основно съхранение, когато сте офлайн.

Бележка

  • Офлайн възможността за платно приложения е налична, докато изпълнявате приложенията с помощта на родния Power Apps Mobile плейъри на iOS, Android, и Windows.
  • Приложенията на платното, работещи в уеб браузъри, не могат да работят офлайн, дори когато използвате уеб браузър на мобилно устройство.
  • Приложенията за платно в Teams са ограничени до 1 MB данни чрез функциите LoadData и SaveData—полезно за малък брой текстови низове, числа и дати. Използването на изображения или други медии е неподходящо за това ограничение. Повече информация: LoadData и SaveData препратка към функцията

Активиране на офлайн поддръжка в базирано на платно Dataverse приложение

За базирани приложения за Microsoft Dataverse платно, трябва да използвате офлайн възможността, вградена с офлайн първото изживяване. За повече информация вижте Настройване на мобилни офлайн приложения за платно и Работа с приложения за платно офлайн. С едно натискане на превключвателя приложението ви може да работи с Dataverse данни, където и да сте, със или без мрежова връзка. Просто изградете приложението си със стандартни Power Fx формули и офлайн функцията се справя с цялата сложност за вас.

Използвайте LoadData и SaveData за всички други конектори

Този раздел включва пример, използващ данни от Twitter. Още по-опростен пример, който не изисква връзка, е включен в справка за функция LoadData и SaveData.

Гледайте този видеоклип, за да научите как да създавате офлайн приложения за платно, които не използват Dataverse данни:

Ограничения

LoadData и SaveData комбинирайте, за да образувате прост механизъм за съхраняване на малки количества данни на локално устройство. Използвайки тези функции, можете да добавите прости приложения офлайн към приложението си.

Тези функции са ограничени от обема на наличната памет за приложения, тъй като работят върху колекция в паметта. Наличната памет може да варира в зависимост от устройството, операционната система и тази памет, която Power Apps Mobile използва и сложността на приложението по отношение на екраните и контролите. Ако съхранявате повече от няколко мегабайта данни, тествайте приложението си с очакваните сценарии на устройствата, на които очаквате да работи. Обикновено имате 30-70 мегабайта свободна памет.

Функциите също не разрешават автоматично конфликтите на сливане, когато устройството излезе онлайн. При конфигуриране на данните, които се записват и как да се обработва повторно свързване, зависи от производителя, когато пишете изрази.

За актуализации на възможностите офлайн се върнете към тази тема и се абонирайте за блог на Power Apps.

Преглед

Когато проектирате офлайн сценарии, първо трябва да помислите как вашите приложения работят с данни. Приложения в Power Apps предимно използват данни чрез набор от конектори, които платформата предоставя, като например SharePoint, Office 365 и Microsoft Dataverse. Можете също така да създадете персонализирани конектори, които дават възможност на приложенията да имат достъп до всяка услуга, която предоставя RESTful крайна точка. Това може да е уеб API или услуга като Azure Functions. Всички тези конектори използват HTTPS през интернет, което означава, че вашите потребители трябва да са онлайн, за да имат достъп до данни и всякакви други възможности, които услугата предлага.

Power Apps приложение с конектори.

Работа с офлайн данни

В Power Apps можете да филтрирате, търсите, сортирате, агрегирате и манипулирате данни по последователен начин, независимо от източник на данни. Източниците варират от колекции в паметта на приложението през списъци, създадени с помощта на Microsoft Lists, до SQL бази данни и Dataverse. Поради тази последователност можете лесно да пренасочите приложение, за да използвате различен източник на данни. По-важното за офлайн сценариите можете да използвате локални колекции за управление на данни без почти никакви промени в логиката на приложението. Всъщност локалните колекции са основният механизъм за работа с офлайн данни.

Създайте офлайн приложение

За да запазите фокуса върху офлайн аспектите на развитието на приложението, тази тема илюстрира прост сценарий, фокусиран около Twitter. Ще изградите приложение, което ви позволява да четете публикации в Twitter и да изпращате туитове, докато сте офлайн. Когато приложението е онлайн, приложението публикува туитове и презарежда локалните данни.

На високо ниво приложението изпълнява следните задачи:

  • Когато потребителят отвори приложението:

    • Ако устройството е онлайн, приложението извлича данни чрез конектора на Twitter и попълва колекция с тези данни.
    • Ако устройството е офлайн, приложението зарежда данните от локален кеш файл с помощта на функцията LoadData.
    • Потребителят може да изпраща туитове. Ако приложението е онлайн, то публикува туитовете директно в Twitter и освежава локалния кеш.
  • На всеки пет минути, докато приложението е онлайн:

    • Приложението публикува всякакви туитове в локалния кеш.
    • Приложението освежава локалния кеш и го записва с помощта на функцията SaveData.

Стъпка 1: Добавете Twitter към празно приложение за телефон

  1. Създайте празно приложение за платно с оформление на телефон.
  2. В раздела Изглед и след това изберете Източници на данни.
  3. В екрана Данни изберете Добавяне на източник на данни.
  4. Изберете Нова връзка > Twitter > Създаване.
  5. Въведете вашите идентификационни данни, създайте връзката и след това затворете панела Данни.

Стъпка 2: Съберете съществуващите туитове

  1. В екрана Изглед на дърво, изберете Приложение и след това задайте своето свойство OnStart на тази формула:

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

    Формула за зареждане на туитове.

  2. В екрана Изглед на дърво, изберете менюто с многоточие за обекта Приложение и след това изберете Изпълнете OnStart, за да изпълните тази формула.

    Изпълнете формулата, за да заредите туитове.

    Бележка

    Функциите LoadData и SaveData може да покажат грешка в Power Apps Studio, защото браузърите не ги поддържат. Те обаче ще се представят нормално, след като разгърнете това приложение на устройство.

Тази формула проверява дали устройството е онлайн:

  • Ако устройството е онлайн, формулата зарежда до 10 туитове с думата за търсене „PowerApps” в колекция LocalTweets.
  • Ако устройството е офлайн, формулата зарежда локалния кеш от файл, наречен "LocalTweets", ако е наличен.
  1. В раздела Вмъкване, изберете Галерия > Празна гъвкава височина.

  2. Задайте свойството Елементи на контролата галерия на LocalTweets.

  3. В шаблона на галерията добавете три контроли етикет и задайте свойството Текст на всеки етикет към една от тези стойности:

    • ThisItem.UserDetails.FullName & " (@" & ThisItem.UserDetails.UserName & ")"
    • Text(DateTimeValue(ThisItem.CreatedAtIso), DateTimeFormat.ShortDateTime)
    • ThisItem.TweetText
  4. Направете текста в последния етикет удебелен, така че галерията да наподобява този пример.

    Галерия, показваща примерни туитове.

Стъпка 4: Показване на състоянието на връзката

  1. Под галерията поставете етикет и след това задайте неговото свойство Цвят на Червен.

  2. Задайте свойството Текст на най-новия етикет на тази формула:

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

Тази формула определя дали устройството е онлайн. Ако е, етикетът показва свързано; в противен случай показва Офлайн.

Стъпка 5: Добавете поле за съставяне на туитове

  1. Под етикета за състояние на връзката поставете контрола Въвеждане на текст и я преименувайте на NewTweetTextInput.

  2. Задайте свойството Default на полето за въвеждане на текст на "".

    Галерия над информация за състоянието и поле за въвеждане на текст.

Стъпка 6: Добавете бутон за публикуване на туита

  1. Под полето за въвеждане на текст добавете контрола бутон и задайте свойството Текст на тази стойност:

    "Tweet"

  2. Задайте свойството OnSelect на бутона на тази формула:

    If( Connection.Connected,
        Twitter.Tweet( "", {tweetText: NewTweetTextInput.Text} ),
        Collect( LocalTweetsToPost, {tweetText: NewTweetTextInput.Text} );
            SaveData( LocalTweetsToPost, "LocalTweetsToPost" )
    );
    Reset( NewTweetTextInput );
    
  3. В свойството OnStart за Приложение, добавете ред в края на формулата:

    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
    

    Изпълнете формула за зареждане на туитове с некоментиран ред.

Тази формула определя дали устройството е онлайн:

  • Ако устройството е онлайн, то публикува туита веднага.
  • Ако устройството е офлайн, то записва туита в колекцията LocalTweetsToPost и я записва в устройството.

Тогава формулата нулира текста в полето за въвеждане на текст.

Стъпка 7: Проверете за нови туитове

  1. От дясната страна на бутона добавете контрола Таймер.

    Окончателни приложения.

  2. Задайте свойството продължителност на таймера на 300000.

  3. Задайте свойствата AutoStart и повторение на таймера на вярно.

  4. Задайте OnTimerEnd на таймера на тази формула:

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

Тази формула определя дали устройството е онлайн. Ако е, приложението туитва всички елементи в колекцията LocalTweetsToPost и след това изчиства колекцията.

Тестване на приложението

  1. Отворете приложението с помощта на Power Apps за мобилни устройства на мобилно устройство, което е свързано с интернет.

    Съществуващите туитове се появяват в галерията, а състоянието показва Свързано.

  2. Изключете устройството от интернет, като активирате режима на самолет на устройството и деактивирате wi-fi.

    Етикетът за състоянието показва, че приложението е Офлайн.

  3. Докато устройството е офлайн, напишете туитър, който включва Power Apps и след това изберете бутона Тема в Twitter.

    Туитът се съхранява локално в колекцията LocalTweetsToPost.

  4. Свържете повторно устройството от интернет, като дезактивирате режима на самолет на устройството и активирате wi-fi.

    В рамките на пет минути приложението публикува туита, който се появява в галерията.

Надяваме се, че тази статия ви дава представа за възможностите, които Power Apps има за изграждане на офлайн приложения. Както винаги, моля, предоставете обратна връзка в нашия форум и споделете своите примери за офлайн приложения в блог на общността на Power Apps.

Бележка

Можете ли да ни споделите повече за езиковите си предпочитания за документацията? Попълнете кратко проучване. (имайте предвид, че това проучване е на английски език)

Проучването ще отнеме около седем минути. Не се събират лични данни (декларация за поверителност).