Разработка приложений на основе холста, поддерживающих автономный режим работы

Мобильные пользователи часто должны быть продуктивными, даже если они имеют ограниченные возможно подключения к Интернету или вообще не имеют подключения. При создании приложения на основе холста вы можете выполнять следующие задачи:

  • Откройте Power Apps Mobile и запустите приложения, когда устройство не подключено к сети.
  • определять режим приложения (интерактивный, автономный или режим лимитного подключения) с помощью объекта сигнала подключения;
  • Синхронизируйте данные между вашим устройством и сервером.

Если ваше приложение подключается к Dataverse, поддержка в автономном режиме является встроенной. Power Apps позволит вам загрузить данные на ваше устройство и отправить изменения обратно в Dataverse. Если ваше приложение не использует Dataverse вы можете использовать коллекции и функции LoadData и SaveData для основного хранилища данных в автономном режиме.

Примечание

  • Автономные возможности для приложений на основе холста доступны при запуске приложений с использованием собственных плееров Power Apps Mobile в iOS, Android и Windows.
  • Приложения на основе холста, работающие в веб-браузерах, не могут работать в автономном режиме даже при использовании веб-браузера на мобильном устройстве.
  • Приложения на основе холста в Teams ограничены 1 МБ данных с помощью функций LoadData и SaveData — это полезно для небольшого количества текстовых строк, чисел и дат. Использование изображений или других медиа не соответствует этому ограничению. Больше информации: Справочник по функциям LoadData и SaveData

Включение автономной поддержки в приложении на основе холста в Dataverse

В приложениях на основе холста в Microsoft Dataverse необходимо использовать возможность работы в автономном режиме, встроенную в интерфейс с приоритетом автономного режима. Дополнительные сведения см. в разделах Настройка Mobile Offline для приложений на основе холста и Работа с приложениями на основе холста в автономном режиме. Один щелчок переключателя позволит вашему приложению работать с данными 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. Все эти соединители используют протокол HTTPS через Интернет. Это означает, что пользователи должны быть в сети, чтобы получить доступ к данным и любым другим возможностям, предлагаемым службой.

Приложение Power Apps с соединителями.

Управление данными в автономном режиме

В Power Apps вы можете фильтровать, искать, сортировать, агрегировать и манипулировать данными согласованным образом независимо от источника данных. Источники варьируются от коллекций в памяти в приложении? списков, созданных с помощью Microsoft Списки, до баз данных 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, потому что браузеры не поддерживают их. Тем не менее, они будут работать нормально после развертывания этого приложения на устройстве.

Эта формула проверяет, подключено ли устройство к сети.

  • Если устройство подключено к сети, формула загружает в коллекцию LocalTweets до 10 твитов, соответствующих поисковому запросу "PowerApps".
  • Если устройство находится в автономном режиме, формула загружает локальный кэш из файла с именем "LocalTweets", если он доступен.
  1. На вкладке Вставить выберите Коллекция > Пустая переменной высоты.

  2. Назначьте свойству Items элемента управления Галерея значение LocalTweets.

  3. В шаблоне коллекции добавьте три элемента управления Подпись и установите для свойства Text каждой метки одно из следующих значений:

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

    Коллекция с примерами твитов.

Шаг 4. Отображение статуса соединения

  1. Под коллекцией вставьте метку, затем установите для ее свойства Color значение Red.

  2. Задайте для свойства Text самой новой метки следующую формулу:

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

Эта формула определяет, подключено ли устройство к сети. Если оно подключено, в метке отображается текст Connected (Подключено); в противном случае отображается текст — Offline (В автономном режиме).

Шаг 5. Добавление поля для создания твитов

  1. Под меткой состояния соединения вставьте элемент управления Ввод текста и переименуйте его в NewTweetTextInput.

  2. Установите для свойства Default поля ввода текста значение "".

    Коллекция над информацией о статусе и полем ввода текста.

Шаг 6. Добавление кнопки для отправки твита

  1. Под полем ввода текста добавьте элемент управления Кнопка и установите для его свойства Text следующее значение:

    "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. Задайте свойству Duration таймера значение 300000.

  3. Установите для свойств AutoStart и Repeat таймера значение true.

  4. Задайте для свойства OnTimerEnd таймера следующую формулу:

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

Эта формула определяет, подключено ли устройство к сети. Если это так, приложение отправляет в Twitter все элементы из коллекции LocalTweetsToPost, а затем очищает коллекцию.

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

  1. Откройте приложение, используя Power Apps Mobile на мобильном устройстве, подключенном к Интернету.

    Существующие твиты появляются в коллекции, а статус показывает Connected (Подключено).

  2. Отключите устройство от Интернета, включив режим полета устройства и отключив Wi-Fi.

    Метка состояния показывает, что приложение Offline (Не в сети).

  3. Пока устройство находится в автономном режиме, напишите твит, который включает текст Power Apps, затем нажмите кнопку Tweet.

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

  4. Снова подключите устройство к Интернету, отключив режим полета устройства и включив Wi-Fi.

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

Мы надеемся, что из этой статьи вы получили представление о возможностях Power Apps для создания приложений, поддерживающих автономный режим работы. Как всегда, вы можете оставить свой отзыв на форуме, а также поделиться своими примерами приложений, поддерживающих работу в автономном режиме. Для этого используйте блог сообщества Power Apps.

Примечание

Каковы ваши предпочтения в отношении языка документации? Пройдите краткий опрос (обратите внимание, что этот опрос представлен на английском языке).

Опрос займет около семи минут. Личные данные не собираются (заявление о конфиденциальности).