Desarrollar aplicaciones de lienzo que puedan ejecutarse sin conexión

Los usuarios móviles a menudo necesitan ser productivos incluso cuando tienen conectividad limitada o nula. Cuando crea una aplicación de lienzo, puede realizar estas tareas:

  • Abrir Power Apps Mobile y ejecutar aplicaciones sin conexión.
  • Determinar si una aplicación está sin conexión, en línea o en una conexión de uso medido mediante el objeto de señal conexión.
  • Usar colecciones y aprovechar funciones como LoadData y SaveData para el almacenamiento de datos básico cuando esté sin conexión.

Nota

Este artículo incluye un ejemplo con datos de Twitter. Un ejemplo aún más simple que no requiere una conexión se incluye en la referencia de funciones LoadData y SaveData.

Vea este vídeo para aprender cómo crear aplicaciones de lienzo habilitadas sin conexión:

Limitaciones

LoadData y SaveData se combinan para formar un mecanismo simple para almacenar pequeñas cantidades de datos en un dispositivo local. Al usar estas funciones, puede agregar capacidades sin conexión simples a su aplicación

Estas funciones están limitadas por la cantidad de memoria de la aplicación disponible, ya que operan en una colección en memoria. La memoria disponible puede variar según el dispositivo, el sistema operativo, la memoria que Power Apps Mobile use y la complejidad de la aplicación en términos de pantallas y controles. Si almacena más de unos pocos megabytes de datos, pruebe su aplicación con los escenarios esperados en los dispositivos en los que espera que se ejecute. En general, tendrá 30-70 megabytes de memoria disponible.

Las funciones tampoco resuelven automáticamente los conflictos de fusión cuando un dispositivo se conecta. La configuración referente a qué datos se guardan y cómo gestionar la reconexión depende del creador al escribir expresiones.

Para obtener actualizaciones sobre las capacidades sin conexión, regrese a este tema y suscríbase al Blog de Power Apps.

Información general

Cuando diseña escenarios fuera de línea, primero debe considerar cómo funcionan sus aplicaciones con los datos. Las aplicaciones en Power Apps principalmente acceden a los datos a través de un conjunto de conectores que proporciona la plataforma, como SharePoint, Office 365 y Microsoft Dataverse. También puede crear conectores personalizados que permiten a las aplicaciones tener acceso a cualquier servicio que proporcione un punto de conexión REST. Podría tratarse de una API web o un servicio como Azure Functions. Todos estos conectores usan HTTPS a través de Internet, lo que significa que los usuarios deben estar en línea para acceder a los datos y otras funcionalidades que ofrece un servicio.

Aplicación de Power Apps con conectores.

Administrar datos sin conexión

En Power Apps, puede filtrar, buscar, ordenar, agregar y manipular datos de manera coherente independientemente del origen de datos. Las fuentes van desde colecciones en memoria en la aplicación hasta listas creadas con Microsoft Lists hasta bases de datos SQL y Dataverse. Debido a esta coherencia, puede rediseñar fácilmente una aplicación para usar un origen de datos diferente. Lo más importante para los escenarios fuera de conexión, es que también permite usar colecciones locales para la administración de datos sin realizar apenas cambios en la lógica de la aplicación. De hecho, las colecciones locales son el mecanismo principal para administrar datos sin conexión.

Crear una aplicación sin conexión

Para centrarnos en los aspectos del desarrollo de aplicaciones sin conexión, este tema muestra un sencillo escenario centrado en Twitter. Creará una aplicación que permite leer entradas de Twitter y enviar tweets mientras está sin conexión. Cuando la aplicación se conecta, la aplicación envía los tweets y vuelve a cargar los datos locales.

En general, la aplicación realiza estas tareas:

  • Cuando el usuario abre la aplicación:

    • Si el dispositivo está en línea, la aplicación recopila los dato a través del conector de Twitter y rellena una colección con esos datos.
    • Si el dispositivo está desconectado, la aplicación carga los datos desde un archivo de caché local utilizando la función LoadData.
    • El usuario puede enviar tweets. Si la aplicación está en línea, publica los tweets directamente en Twitter y actualiza la memoria caché local.
  • Cada cinco minutos mientras la aplicación está en línea:

    • La aplicación publica cualquier tweet en el caché local.
    • La aplicación actualiza la memoria caché local y la guarda utilizando la función SaveData.

Paso 1: Agregar Twitter a una aplicación de teléfono en blanco

  1. Crear una aplicación de lienzo en blanco con diseño de Teléfono.
  2. En la pestaña Vista, seleccione Orígenes de datos.
  3. En el panel Datos, seleccione Agregar origen de datos.
  4. Seleccione Nueva conexión > Twitter > Crear.
  5. Especifique sus credenciales, cree la conexión y luego cierre el panel Datos.

Paso 2: Recopilar los tweets existentes

  1. En el panel Vista de árbol, seleccione App, y luego establezca su propiedad OnStart según esta fórmula:

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

    Fórmula para cargar tweets.

  2. En el panel Vista de árbol, seleccione el menú de puntos suspensivos para el objeto App y luego seleccione Ejecutar OnStart para ejecutar esa fórmula.

    Ejecutar fórmula para cargar tweets.

    Nota

    Las funciones LoadData y SaveData pueden mostrar un error en Power Apps Studio porque los navegadores no los admiten. Sin embargo, funcionarán normalmente después de implementar esta aplicación en un dispositivo.

Esta fórmula comprueba si el dispositivo está en línea:

  • Si el dispositivo está en línea, la fórmula cargan en la colección hasta 10 tweets con el término de búsqueda "PowerApps" en una colección LocalTweets.
  • Si el dispositivo está sin conexión, la fórmula carga la memoria caché local desde un archivo denominado "LocalTweets", si está disponible.
  1. En la pestaña Insertar, seleccione Galería > Altura flexible en blanco.

  2. Establezca la propiedad Items del control Galería en LocalTweets.

  3. En la plantilla de la galería, agregue tres controles Etiqueta y establezca la propiedad Text de cada etiqueta a uno de estos valores:

    • ThisItem.UserDetails.FullName & " (@" & ThisItem.UserDetails.UserName & ")"
    • Text(DateTimeValue(ThisItem.CreatedAtIso), DateTimeFormat.ShortDateTime)
    • ThisItem.TweetText
  4. Ponga el texto en la última etiqueta en negrita para que la galería se parezca a este ejemplo.

    La galería muestra ejemplos de tweets.

Paso 4: Mostrar el estado de la conexión

  1. En la galería, inserte una etiqueta y luego configure su propiedad Color en Rojo.

  2. Establezca la propiedad Text de la etiqueta más reciente según esta fórmula:

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

Esta fórmula determina si el dispositivo está en línea. Si lo está, la etiqueta muestra Conectado, en caso contrario es Sin conexión.

Paso 5: Agregr un cuadro para componer tweets

  1. En la etiqueta de estado de conexión, inserte control Entrada de texto y cámbiele el nombre a NewTweetTextInput.

  2. Establezca la propiedad Default en "".

    Galería encima de la información de estado y cuadro de entrada de texto.

Paso 6: Agregar un botón para enviar el tweet

  1. En el cuadro de entrada de texto, agregue un control Botón y establezca su propiedad Text en este valor:

    "Tweet"

  2. Establezca la propiedad OnSelect del botón en esta fórmula:

    If( Connection.Connected,
        Twitter.Tweet( "", {tweetText: NewTweetTextInput.Text} ),
        Collect( LocalTweetsToPost, {tweetText: NewTweetTextInput.Text} );
            SaveData( LocalTweetsToPost, "LocalTweetsToPost" )
    );
    Reset( NewTweetTextInput );
    
  3. En la propiedad OnStart para App, agregue una línea al final de la fórmula:

    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
    

    Ejecutar la fórmula para cargar tweets con línea no comentada.

Esta fórmula determina si el dispositivo está en línea:

  • Si el dispositivo está en línea, publica el tweet inmediatamente.
  • Si el dispositivo está sin conexión, captura el tweet en la colección LocalTweetsToPost y la guarda en el dispositivo.

A continuación, la fórmula restablece el texto en el cuadro de entrada de texto.

Paso 7: Buscar nuevos tweets

  1. En el lado derecho del botón, agregue un control Temporizador.

    Aplicaciones finales.

  2. Establezca la propiedad Duration del temporizador en 300000.

  3. Establecer el temporizador AutoStart y las propiedades Repeat en true.

  4. Establezca la propiedad OnTimerEnd del temporizador según esta fórmula:

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

Esta fórmula determina si el dispositivo está en línea. Si es así, la aplicación tuitea todos los elementos en la colección LocalTweetsToPost y luego borra la colección.

Probar la aplicación

  1. Abra la aplicación usando Power Apps Mobile en un dispositivo móvil que esté conectado a Internet.

    Los tweets existentes aparecen en la galería y el estado muestra Conectado.

  2. Desconecte el dispositivo de Internet habilitando el modo avión del dispositivo y deshabilitando wi-fi.

    La etiqueta de estado muestra que la aplicación está Sin conexión.

  3. Mientras el dispositivo está desconectado, escriba un tweet que incluya Power Apps y luego seleccione el botón Tweet.

    El tweet se almacenará localmente en la colección LocalTweetsToPost.

  4. Vuelva a conectar el dispositivo de Internet deshabilitando el modo avión del dispositivo y habilitando wi-fi.

    En cinco minutos, la aplicación publica el tweet, que aparece en la galería.

Esperamos que este artículo le haya proporcionado una idea de las funcionalidades que tiene Power Apps para la creación de aplicaciones sin conexión. Como siempre, proporcione sus comentarios en nuestro foro y comparta sus ejemplos de aplicaciones sin conexión en el Blog de la Comunidad de Power Apps.

Nota

¿Puede indicarnos sus preferencias de idioma de documentación? Realice una breve encuesta. (tenga en cuenta que esta encuesta está en inglés)

La encuesta durará unos siete minutos. No se recopilan datos personales (declaración de privacidad).