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:
- Abra Power Apps Mobile y ejecute aplicaciones cuando el dispositivo no esté conectado a la red.
- 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.
- Sincronice datos entre su dispositivo y el servidor.
Si su aplicación se conecta a Dataverse, el soporte sin conexión está integrado. Power Apps le permitirá descargar datos a su dispositivo y cargar los cambios nuevamente a Dataverse. Si su aplicación no utiliza Dataverse, puede utilizar colecciones y aprovechar las funciones LoadData y SaveData para el almacenamiento básico cuando no esté conectado.
Nota
- La capacidad sin conexión para las aplicaciones de lienzo está disponible mientras se ejecutan las aplicaciones con los reproductores nativos de Power Apps Mobile en iOS, Android y Windows.
- Las aplicaciones de lienzo que se ejecutan en navegadores web no pueden ejecutarse sin conexión, incluso cuando se usa un navegador web en un dispositivo móvil.
- Las aplicaciones de lienzo en Teams están limitadas a 1 MB de datos a través de las funciones LoadData y SaveData, útiles para una pequeña cantidad de cadenas de texto, números y fechas. El uso de imágenes u otros medios no es apropiado para este límite. Más información: Referencia de funciones LoadData y SaveData
Habilite el soporte sin conexión en una aplicación de lienzo basada en Dataverse
Para las aplicaciones de lienzo basadas en Microsoft Dataverse, debe utilizar la capacidad sin conexión integrada con la experiencia sin conexión-primero. Para obtener más información, consulte Configurar Mobile Offline para aplicaciones de lienzo y Trabajar con aplicaciones de lienzo sin conexión. Con solo presionar un interruptor, la aplicación puede funcionar con datos de Dataverse dondequiera que esté, con o sin conexión de red. Simplemente cree su aplicación con fórmulas de Power Fx estándar y la función sin conexión se encargará de toda la complejidad por usted.
Utilice LoadData y SaveData para todos los demás conectores
Esta sección 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 que no utilizan datos de Dataverse:
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.
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
- Crear una aplicación de lienzo en blanco con diseño de Teléfono.
- En la pestaña Vista, seleccione Orígenes de datos.
- En el panel Datos, seleccione Agregar origen de datos.
- Seleccione Nueva conexión > Twitter > Crear.
- Especifique sus credenciales, cree la conexión y luego cierre el panel Datos.
Paso 2: Recopilar los tweets existentes
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" );
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.
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.
Paso 3: Mostrar tweets en una galería
En la pestaña Insertar, seleccione Galería > Altura flexible en blanco.
Establezca la propiedad Items del control Galería en
LocalTweets
.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
Ponga el texto en la última etiqueta en negrita para que la galería se parezca a este ejemplo.
Paso 4: Mostrar el estado de la conexión
En la galería, inserte una etiqueta y luego configure su propiedad Color en Rojo.
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
En la etiqueta de estado de conexión, inserte control Entrada de texto y cámbiele el nombre a NewTweetTextInput.
Establezca la propiedad Default en
""
.
Paso 6: Agregar un botón para enviar el tweet
En el cuadro de entrada de texto, agregue un control Botón y establezca su propiedad Text en este valor:
"Tweet"
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 );
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
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
En el lado derecho del botón, agregue un control Temporizador.
Establezca la propiedad Duration del temporizador en 300000.
Establecer el temporizador AutoStart y las propiedades Repeat en true.
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
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.
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.
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.
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).