Las API son un estándar de facto para compilar y compartir las modernas apps que potencian a las empresas de hoy. Todas las empresas modernas aprovechan las API para moverse rápidamente y mantenerse al día. Pero ofrecer, administrar y analizar las API, los datos y los servicios de manera segura es algo complejo y elemental; y cada vez implica un mayor desafío a medida que los ecosistemas empresariales se expanden más allá de los centros de datos locales e incluyen nubes privadas y públicas, SaaS y otros extremos de TI. Para sortear esta complejidad, las empresas necesitan la administración de API.
En el siguiente escenario, tenemos algunos servicios de backend entre los que se incluyen los servicios de REST/SOAP, microservicios, un bus de servicio y tal vez algunos servicios más de terceros. Del otro lado, hay algunos consumidores de estos servicios: socios, empleados y clientes. Tienen apps que necesitan obtener datos de tus servicios de backend o activar una acción con una API.
Los desarrolladores componen apps nuevas y atractivas utilizando API para compilar y participar en los ecosistemas. Producir estas API coloca el acento en todas las apps empresariales nuevas y atractivas que vemos en la economía de Internet. Todo lo necesario para producir las API, como el portal para desarrolladores, el empaquetado de API, las opciones de seguridad flexibles y la conversión de las métricas operativas en análisis empresariales, es lo que describe a la administración de API y lo que Apigee ofrece.
La administración de API de Apigee ayuda a modernizar tus apps y a monetizar tus canales empresariales. Ayuda a controlar el acceso a los datos y servicios de backend de una app. Además, ofrece a los desarrolladores de apps las herramientas que necesitan para acceder a las API y brinda a los proveedores de API las herramientas que necesitan para administrar y aprovisionar las API.
Servicios de API: en esta parte se enruta el tráfico desde las apps a los servicios de backend y sirve como puerta de enlace empresarial que orquestra los servicios de backend y evita que las personas abusen de ellos. En este punto, un proveedor de API puede implementar limitaciones y cuotas en los servicios para proteger el backend. Puedes compilar una fachada para los servicios de backend y ofrecer un conjunto de interfaces para esas apps externas en comparación con lo que hay dentro. Incluso puedes controlar el acceso de manera tal que diferentes apps puedan acceder a diferentes servicios y obtener diferentes resultados cuando se los requiera. Podrías reformatear la solicitud al ingresar y corregirla para que se adecúe a tus servicios de backend. Podrías modificar la respuesta que dan los servicios de backend, antes de volver a enviarla a las apps. Puedes agregar almacenamiento en caché para mejorar el rendimiento al responder en forma directa desde la caché y evitar una llamada al backend.
Portal para desarrolladores: Apigee ofrece un portal para desarrolladores con el objetivo de asistir a los consumidores de API o desarrolladores de apps. Estos pueden registrarse para usar la API, y obtener credenciales para acceder al servicio y la documentación para aprender a utilizar la API. Si es necesario ofrecer las API como productos, los proveedores de API pueden tomar todos los servicios y agruparlos en diferentes paquetes para ofrecer diferente acceso. Si se trata de un portal interno, puedes simplificarlo, pero si se trata de uno externo, puedes colocarle la marca para que coincida con la marca de tu sitio web.
Monetización de API: puedes crear varios planes de monetización que se cobren a los desarrolladores (o pagarlos a través de la coparticipación de ingresos) para el uso de tus API.
Análisis de API: ayuda a tu equipo de API a medir todo, desde las métricas de participación de los desarrolladores hasta las métricas empresariales y operativas. Estos análisis ayudan a los equipos de API a mejorar sus API y a los desarrolladores de apps a mejorar sus apps. Ayuda a responder preguntas sobre patrones de tráfico, principales desarrolladores, qué métodos de API son populares, tiempos de respuesta de API y otras métricas del tipo que se requieren para mejorar el servicio.
Apigee te ofrece una opción entre configuración o codificación; existen varias políticas preestablecidas que realizan lo básico. Puedes incorporar estas políticas para solicitar un token o agregar almacenamiento de respuesta en caché si deseas realizar desarrollo dirigido por código. Puedes crear tus propias políticas e incorporarlas y combinarlas con las políticas preestablecidas, y eso puede realizarse con JavaScript Java o Python.
La puerta de enlace de API es un pequeño subconjunto de una plataforma de administración de API. Te permite ofrecer acceso seguro y exhibir tus servicios de Google Cloud (Cloud Functions, App Engine, Cloud Run, Compute Engine, GKE), a través de una API de REST bien definida que es coherente en todos tus servicios, independientemente de la implementación del servicio. Una API coherente:
Permite que los desarrolladores de apps consuman tus servicios con facilidad
Te permite modificar la implementación de servicios de backend sin afectar la API pública
Te permite aprovechar las funciones de escalamiento, supervisión y seguridad integradas a Google Cloud Platform (GCP)
Por otra parte, Apigee incluye una puerta de enlace, pero ayuda a impulsar el consumo de API, ya que incluye un portal para desarrolladores, supervisión, monetización, operaciones de API avanzadas y otras posibilidades de extensión. La puerta de enlace misma tiene más capacidades y cuenta con políticas incorporadas. Apigee puede conectarse a backends arbitrarios, como las conexiones ascendentes alojadas en Google Cloud.
Para obtener más información sobre #GCPSketchnote, sigue el repositorio de GitHub. Para obtener contenido similar de la nube, sígueme en Twitter @pvergadia y no dejes de ver thecloudgirl.dev.
Artículo relacionado
Una descripción general de Google Cloud Networking.
2021 fue un año de cambios para todos nosotros, ya que la pandemia continuó acelerando el papel de la tecnología a fin de mantenernos conectados por video. Google Meet jugó un papel importante: permitió esas conexiones, ayudando a amigos, familiares y colegas de todo el mundo a reunirse de manera segura.
Como vimos en nuestra reciente encuesta de Economist Impact global (octubre de 2021), el trabajo híbrido se convirtió en una práctica estándar para muchos, lo que subraya la necesidad de reuniones por video significativas en el futuro previsible. Nuestra encuesta también observó que, durante el transcurso de la pandemia, la falta de conexión física llevó a sentimientos de desconexión. Por eso, este año trabajamos de forma ardua para permitir que las personas se mantengan conectadas de una manera más humana, con una solución que sea flexible, envolvente, inclusiva y segura en su diseño.
A continuación, presentamos un repaso de las funciones de Google Meet más impactantes y solicitadas de este año que ayudan a abordar los desafíos del trabajo, aprendizaje y vida híbridos.
Como muchos de nosotros trabajamos desde casa y otros hicimos grandes cambios en todo el país, brindamos una mayor flexibilidad para respaldar el trabajo desde cualquier lugar. Incorporamos nuevas funciones que ayudan a las personas a unirse o a organizar reuniones con facilidad desde el dispositivo que elijan.
Una nueva interfaz intuitiva permite que los participantes lo inicien rápidamente, muestren hasta 49 personas a la vez y oculten la vista propia para reducir la fatiga de la reunión.
Una app web progresiva independiente y apps móviles actualizadas te permiten unirte desde tu dispositivo, ya sea que estés trabajando desde la computadora de escritorio o conectándote desde tu teléfono a una reunión mientras estás en marcha.
Recientemente, los tamaños de las reuniones aumentaron, llegando a admitir hasta 500 asistentes para planes selectos de educación, negocios y empresas, lo que ayuda a garantizar que todos tengan un lugar en la reunión.
Informes de asistencia que pueden realizar un seguimiento de los asistentes, ya sea para el trabajo, una clase o un nuevo taller que estés organizando.
A medida que las personas regresaban a la oficina, muchas organizaciones necesitaban garantizar una experiencia de reunión envolvente para los asistentes en persona y los remotos. A fin de respaldar este desafío, invertimos en el nuevo hardware y en las funciones de Google Meet que contribuyen a acortar la brecha.
Modo complementario, que se implementará para los usuarios en enero, te permite unirte a una reunión desde una sala de conferencias en tu dispositivo personal a fin de participar activamente en chats, encuestas y preguntas y respuestas, mientras usas el audio y el video en la sala.
Los nuevos dispositivos de videoconferencia todo en uno Google Meet Series One, Series One Desk 27 y Board 65, y las soluciones Rally Bar y Rally Bar Mini de Logitech pueden convertir casi cualquier espacio en un centro de colaboración de video.
La interoperabilidad lanzada recientemente entre dispositivos Cisco Webex y dispositivos Google Meet puede ampliar tu red de llamadas y crear una experiencia multiplataforma.
Las organizaciones también pueden sacar más provecho de su hardware de Google Meet, que ahora se puede usar como pantallas de señalización digital para anuncios en el lugar de trabajo cuando no se utilizan.
Para que las reuniones sean más equitativas e inclusivas, queremos que todos los miembros del equipo se sientan vistos y escuchados. Independientemente desde dónde llames, tu nivel de experiencia con las videoconferencias o el idioma que hables, puedes tener la oportunidad de interactuar y participar.
Los nuevos fondos virtuales, el ajuste automático de la luz y la reducción de ruido ayudan a mantener el enfoque en las personas y garantizan que los participantes puedan ser vistos y escuchados, ya sea que se unan desde la oficina, una cafetería o la mesa de la cocina.
Las mejoras de levantamiento de manos con descenso automático brindan a los participantes la oportunidad de compartir sus perspectivas, mientras que las salas de trabajo en grupo pueden facilitar una participación más profunda en los debates de grupos pequeños.
Las encuestas y las preguntas y respuestas pueden ayudar a que la presentación avance y a que se mantenga en tema, a la vez que contribuyen a garantizar la participación del público y que se aclaren dudas.
Los subtítulos traducidos, que se implementarán pronto, y el soporte de subtítulos en vivo para varios idiomas hablados ayudan a asistentes sordos o con problemas de audición y a quienes tienen otro idioma principal o que se encuentran en un lugar ruidoso, a comprender mejor y participar en las reuniones.
A medida que más organizaciones adoptan soluciones de reuniones basadas en la nube, la seguridad sigue siendo una prioridad para los responsables de la toma de decisiones de TI. A fin de abordar esta preocupación, lanzamos nuevas funciones de seguridad y controles de host sobre nuestra infraestructura global confiable con el fin de proteger mejor tus datos y conversaciones.
Con cifrado del lado del cliente para Google Meet, que ahora se encuentra en versión beta, las empresas pueden administrar las claves de cifrado de forma interna para satisfacer los requisitos de cumplimiento y soberanía de los datos.
Los anfitriones y coanfitriones de la reunión ahora pueden elegir qué asistentes pueden compartir pantallas y enviar chats, así como silenciar la sala cuando otros están hablando y finalizar la llamada para todos los participantes de la llamada.
Las organizaciones y las personas pueden grabar reuniones con confianza y controlar el acceso a la vista con Google Drive para verlas bajo demanda.
Los organizadores de reuniones ahora pueden llegar a una audiencia más amplia con soporte de transmisión en vivo para hasta 100,000 espectadores que se puede compartir con personas en otras organizaciones confiables.
Cuando pienso en 2021, me siento muy orgulloso de las innovaciones que lanzó nuestro equipo y, lo más importante, de la perseverancia de nuestros clientes para adaptarse a las nuevas realidades de sus lugares de trabajo. Están aprovechando nuestra solución junto con nuevas prácticas para acortar la brecha y sentir que el trabajo híbrido es más humano. Estamos entusiasmados de ver todas las formas (y lugares) en que las personas usarán Meet para conectarse, crear y colaborar en 2022.
Te damos la bienvenida a Now in Android, una guía que actualizamos constantemente con las novedades más importantes sobre el desarrollo de Android. Esta semana, presentamos la segunda parte de nuestra serie sobre el evento Android Developer Summit (ADS) 2021.
Se realizaron muchísimas sesiones sobre Jetpack Compose.
Uno de los anuncios más importantes de ADS fue la incorporación de Material You en Jetpack Compose, así que no hay mejor manera de comenzar que con la conferencia “Implementación de Material You con Jetpack Compose”, de Nick Rout. En ella se abarca una gran variedad de temas, como temas y componentes de Material nuevos y actualizados, colores dinámicos, cambios en la IU del sistema, interoperabilidad con temas de Material You en vistas de Android, y mucho más. Además, se implementaron estos temas con la ayuda de la nueva biblioteca androidx.compose.material3 de Jetpack. También puedes mirar la sesión de preguntas y respuestas Jetpack Compose con Material You #AskAndroid | EN VIVO para obtener más información.
Hablando de Material You, Rody Davis y Ivy Knight explicaron el funcionamiento y la aplicación de colores dinámicos en “Material You: cómo aplicar colores dinámicos a tu app y tu marca”. En esta conferencia, analizaron las paletas de tonos, cómo usar tokens de referencia y cuál será el aspecto de estos en tu app con el compilador de temas de Material, tanto en variantes independientes como Figma, y en el kit de diseño de Material 3.
Luego, Nick Butcher y George Mount realizan un “Análisis detallado de los diseños de Jetpack Compose”, en el que explican el modelo de diseño de Compose con el que puedes compilar exactamente los diseños que tu app necesita con código de mayor rendimiento. Analizan las capacidades del modelo de diseño y el modo en que funciona en un nivel profundo, de qué manera se compilan los diseños y modificadores empaquetados, y cómo puedes crear de manera sencilla diseños y modificadores personalizados.
Luego, Kris Giesing presentó Del diseño al código: cómo realizar entregas exitosas, charla en la que compartió su visión sobre cómo abordamos entregas complicadas de IU entre diseñadores y desarrolladores. El equipo de Material Design está colaborando con Figma para crear un flujo de trabajo de diseño a código que permita a los equipos crear componentes de IU en Figma y exportarlos a un paquete de IU. Este paquete se puede editar en Figma y se puede usar directamente en proyectos de Jetpack Compose para apps de Android. También se puede actualizar directamente en el código. Además, hay un programa de acceso anticipado disponible.
A continuación, Yuichi Araki y Doris Liu exploraron las maneras en que reimaginamos las animaciones de Android para Jetpack Compose, incluidas las animaciones basadas en estados, que conforman la mayoría de los casos, y las basadas en corrutinas, que se utilizan en situaciones más complejas.
Manuel Vivo explicó cómo usar la observación de estado automática de Jetpack Compose, analizó los conceptos básicos de los contenedores de estado de Compose, cuándo elevar el estado y cómo usar Android ViewModel como contenedor de estado.
Por último, Takeshi Hagikura habló sobre los cambios en los widgets de apps en Android 12, mientras que Marcel Pintó presentó las próximas API de Glance, que permitirán definir los widgets de las apps usando una sintaxis del estilo de Jetpack Compose.
La serie MAD Skills fue uno de los momentos más importantes de ADS e incluyó mucho contenido técnico nuevo sobre desarrollos modernos de Android.
Para comenzar, Tor Norbye y Jamal Eason presentaron “Novedades de Android Studio”, en la que incluyeron información sobre compatibilidad con el ciclo de vida de marcos en Android 11+, mejoras en el emulador incorporado de Studio con controles extendidos completos, y ejecución de lint visual con clases de dispositivos para ofrecer una mejor compatibilidad con pantallas grandes. Por su parte, Tor también presentó una demostración de las próximas características relacionadas con Jetpack Compose, como vistas previas interactivas con compatibilidad con desplazamiento de animaciones, compatibilidad con vista previa lateral y edición en vivo.
Elif Bilgin hizo un análisis profundo de las novedades de Room, en el que habló sobre las migraciones automáticas, incluidas las migraciones más complejas que requieren un AutoMigrationSpec, métodos de consulta relacionales, convertidores de tipo de enumeración, devoluciones de llamada de consultas, compatibilidad con API de Paging 3.0 y RxJava3, y compatibilidad experimental con Kotlin Symbol Processing para lograr mayores velocidades de compilación.
Manuel Vivo y José Alcérreca disertaron sobre cómo cargar datos en flujos de Kotlin, transformarlos y exponerlos a usuarios en tu IU, y sobre cómo probarlos, todo dentro del contexto de la programación reactiva. Exploraron el uso de los componentes repeatOnLifecycle y flowWithLifecycle, que priorizan el ciclo de vida, de lifecycle-runtime-ktx 2.4.0.
James Fung habló sobre CameraX 1.1 y en su disertación incluyó la nueva API de captura de video, las conversiones sencillas de YUV a RGB, las API de versiones beta de extensiones y mucho más.
En su disertación sobre WorkManager, Rahul Ravikumar y Ben Weiss incluyeron conceptos básicos sobre cómo solicitar y cancelar tareas persistentes de larga duración, cuándo y cómo usar las API de trabajo agilizado, cómo usar WorkManager para compilar apps multiproceso sólidas y de alto rendimiento, y cómo usar el inspector de tareas en segundo plano dentro de Android Studio.
Amanda Alexander y Sean McQuillan explicaron la importancia de los emojis, por qué es crucial ofrecer compatibilidad con los emojis más recientes y por qué se debe realizar la actualización a AppCompat 1.4. En el resto de la charla, analizaron el funcionamiento y el modo en que optimizamos emoji2.
Ivan Gavrilovic y Scott Pollom explicaron cómo es posible obtener beneficios de los cambios de la versión 7.0 del complemento de Gradle para Android. Entre estos beneficios, se incluyen características que mejoran el rendimiento, como compatibilidad con KSP, migración a clases de recursos no transitivos y almacenamiento de configuración en caché seguro gracias a las actualizaciones de Build Analyzer. También discurrieron sobre cómo crear una tarea de Gradle personalizada y compatible con el almacenamiento de configuración en caché y sobre cómo extender el complemento de Gradle para Android con sus nuevas API.
Don Turner y Andrew Louis presentaron la versión alfa de Jetpack Media3, una colección de bibliotecas de compatibilidad para reproducción de contenido multimedia, entre las que se incluye ExoPlayer. Explicaron el motivo por el cual creamos Media3, sus contenidos, los beneficios que ofrece y cómo comenzar a usarlo en tu app.
Por último, en la sesión Desarrollo moderno de Android #AskAndroid | EN VIVO, se respondieron preguntas sobre componentes de la arquitectura, Kotlin, Android Studio y rendimiento.
Android está disponible en muchos factores de forma; no solo en teléfonos, tablets y laptops con Chrome OS, sino también en relojes, televisores y autos, por lo que te permite aprovechar tus habilidades para el desarrollo en Android con el objetivo de que tu contenido llegue a una amplia variedad de dispositivos.
En primer lugar, Maia Conrado y Jeremy Walker presentaron la nueva vista previa para desarrolladores de Compose for Wear OS, mostraron las similitudes y diferencias con la versión de Jetpack Compose para dispositivos móviles, y las nuevas características. De este modo, puedes aprovechar tus habilidades relacionadas con Compose para desarrollar rápidamente tu propia app para Wear OS con menos código.
Luego, Jay Yoo y Stav Raviv explicaron cómo usar la biblioteca de apps para autos para que tu app de navegación, estacionamiento o carga llegue a más de 100 millones de vehículos que cuentan con Android Auto y a una lista creciente de fabricantes que ofrecen compatibilidad con Android Automotive OS.
Por último, Mayuri Khinvasara y Brian Lindahl hablaron sobre cómo destacar contenidos que los usuarios aún no terminaron ni implementaron en Android TV y Google TV mediante la API de Ver a continuación, y cómo usar las API de Android para transmitir audio y video de la más alta calidad.
En mi sesión hablé sobre lo que estamos haciendo para optimizar el desarrollo de juegos e incluí Android Game Development Kit, o AGDK. Destaqué los beneficios básicos de Android Studio para el desarrollo de NDK, como el uso de Visual Studio para desarrollar juegos para Android con la Android Game Development Extension y el desarrollo con las bibliotecas de C/C++ del AGDK, como GameActivity, GameTextInput y la biblioteca de controlador de juegos. Además, incluí instrucciones para que puedas llevar tu juego a más pantallas, como televisores, Chromebooks, teléfonos y tablets. Por último, aprenderás a sacar provecho de Play Asset Delivery, Android Performance Tuner, alcance y dispositivos, el Inspector de GPU de Android y los Servicios de juego de Play.
Para concluir, contamos lo que estamos haciendo en Google Play para ayudarte a llevar tu app o juego a los usuarios finales y hablamos sobre los cambios que deberás tener en cuenta.
En la sesión “Novedades de Google Play”, Lucy Hughes se explayó sobre las características nuevas y actualizadas de Google Play, como Android Vitals, calificaciones y opiniones, alcance y dispositivos, y mensajes desde la app para suscripciones de Play con facturación. Además, habló sobre las mejoras que estamos realizando en relación con la confianza y la seguridad, las actualizaciones de juegos y un nuevo curso de certificación sobre directorios de tiendas.
Dom Elliott y Soléne Maître presentaron la próxima API de Play Integrity. Permite determinar si el servicio de backend está interactuando con el objeto binario genuino que Google Play instaló en un dispositivo Android genuino para ayudarte a evitar trampas, manipulaciones, fraudes, robos, usos no autorizados y mucho más.
Eso fue todo por hoy respecto de la segunda parte de las novedades de Android Developer Summit vinculadas a Jetpack Compose, Material You, MAD Skills, Android TV, Android Auto y Automotive, WearOS, desarrollo de juegos y Google Play. Te esperamos pronto para ofrecerte más novedades del universo de desarrolladores de Android.
Aquí en Firebase, creemos que los desarrolladores desempeñan una función clave para ayudar a que las personas aprendan, vivan mejor, visiten lugares y logren que sus empresas crezcan. Este es el motivo por el que nos comprometemos a brindarte herramientas integradas, extensibles y fáciles de usar, para que puedas continuar generando experiencias en las que mil millones de personas no solo confían, sino que también adoran.
Todos los meses, millones de apps, que crean empresas de todos los tamaños, desde emergentes hasta globales, usan Firebase de manera activa. Tu confianza en nosotros es lo que nos motiva y nos inspira a seguir mejorando Firebase. Hoy, Firebase Summit regresa como un evento virtual y nos complace anunciar las actualizaciones de nuestra plataforma que permitirán acelerar el desarrollo de apps, ejecutarlas con confianza y escalar con facilidad. Continúa leyendo para conocer más detalles sobre las novedades y no te olvides de consultar todo el excelente contenido (que incluye sesiones técnicas, demostraciones, rutas y mucho más) de la cumbre en el sitio web del evento.
Si tienes poco tiempo, pasa a una sección en particular, o lee el siguiente artículo completo.
Obtener información estadística valiosa para ejecutar tu app con confianza
Escalar con facilidad mediante herramientas potentes de participación
Firebase te ayuda a poner tu app en funcionamiento mediante una estructura completamente administrada y una experiencia optimizada que te permite concentrarte en lo que más importa.
Firebase Extensions son conjuntos de código preempaquetados que automatizan tareas comunes de desarrollo y te permiten agregarle funcionalidad a tu app en menos pasos. Colaboramos con empresas que conoces y en las que confías para que puedas integrar varios servicios sin aprender API nuevas. Hace poco, nuestros amigos de Stripe agregaron pagos únicos y un SDK a su extensión Realiza pagos con Stripe. Además, acabamos de lanzar una función nueva que te permite aceptar más de 15 métodos de pagos diferentes, entre los que se incluyen billeteras, redireccionamiento de dinero y “Compra ahora y paga después” dentro de la app.
También presentaremos extensiones nuevas para agregar funciones fundamentales de comercio electrónico a tu app en menos tiempo. Estas extensiones te permiten enviar mercancía y hacer un seguimiento de esta con ShipEngine, volver a atraer a los usuarios que abandonan sus carritos de compra con correos electrónicos de SendGrid o mensajes SMS mediante Twilio, y también te permiten implementar la búsqueda en Cloud Firestore con Elastic. Incluso puedes agregar una interfaz única para aceptar pagos desde varios proveedores mediante Google Pay, que es especialmente útil si vas a lanzar tu app en todo el mundo. Para obtener más información, visita la página de Firebase Extensions e instálalas hoy mismo. Si necesitas inspiración para comenzar, consulta el código de nuestra app de ejemplo en GitHub, que usa más de 17 extensiones diferentes, y mira la versión implementada en: https://karas-coffee.web.app/.
Estas extensiones nuevas, que crearon nuestros socios en colaboración con Firebase, te permiten agregar funciones de comercio electrónico a la app en mucho menos tiempo.
Nos complace anunciar que Firebase ahora ofrece compatibilidad de nivel beta con tvOS y macOS. Es decir, puedes usar tus productos favoritos de Firebase para compilar y ejecutar apps compatibles con Apple TV y Macbooks desde un único código base, y brindarles a los usuarios una experiencia excelente y con menos complicaciones en diferentes dispositivos. Por ejemplo, cuando agregas el SDK de Crashlytics, puedes identificar fallas críticas e incluso filtrarlas por tipo de dispositivo o sistema operativo de Apple, directamente desde la consola de Firebase Crashlytics.
Gracias a la compatibilidad mejorada con las plataformas de Apple, puedes ofrecer una experiencia fluida entre varios dispositivos
Si desarrollas de juegos, te alegrará saber que la mayoría de nuestros SDK de C++ ahora son compatibles con Apple TV, por lo que puedes desarrollar juegos increíbles para Apple Arcade con Firebase. Además, aplicaremos la compatibilidad con motores y frameworks de juegos, ya que habilitaremos Cloud Firestore para Unity y C++. De esta manera, puedes agregar la potencia de Cloud Firestore a tu juego en segundos, lo que te permite almacenar y sincronizar los datos de tu juego casi en tiempo real, agregar el modo sin conexión y escalar tu experiencia de juego para admitir miles de jugadores.
Cloud Firestore ahora está disponible para Unity y C++, lo que te brinda capacidades de sincronización de datos en tiempo real y modo sin conexión
También realizamos varias notables mejoras para Unity y el SDK del NDK de Crashlytics a fin de facilitar la depuración del código base del juego. Ahora, Crashlytics hace un seguimiento de una gama más amplia de tipos de errores nativos y ofrece compatibilidad con IL2CPP para juegos de Unity, a fin de mostrar marcos de C++ más simbolizados que se pueden asignar al código de C#.
Por último, con la versión más reciente de Dartpad, el editor en línea de Flutter, puedes usar Flutter y Firebase juntos y desde el navegador para desarrollar apps que lleguen a los usuarios en todas las plataformas. Flutter es el framework de código abierto de Google que se usa para desarrollar apps atractivas y multiplataforma que se compilan de forma nativa a partir de un único código base. Es un complemento natural para el servicio multiplataforma de backend de Firebase. En la actualidad, Dartpad admite Cloud Firestore y Firebase Authentication y será compatible con otros productos de Firebase próximamente. Dirígete a dartpad.dev e importa el paquete de Firebase para comenzar. También puedes consultar nuestra app de ejemplo.
Dartpad, el editor en línea de Flutter, ahora te brinda compatibilidad con Firebase de forma predeterminada
Hace unos meses, te presentamos App Check, que brinda una capa sólida de seguridad para tu infraestructura de backend. Para ello, certifica que el tráfico entrante provenga de tu app en un dispositivo legítimo y bloquea el tráfico sin credenciales válidas. Hoy App Check tiene una mayor capacidad porque implementamos tres actualizaciones importantes.
En primer lugar, ahora puedes usar App Check con el fin de proteger el acceso a Cloud Firestore (gracias a la compatibilidad con Firestore Web SDK que se lanzará en poco tiempo), además de Cloud Storage for Firebase, Realtime Database y Cloud Functions for Firebase, que anunciamos anteriormente. En segundo lugar, agregamos protecciones personalizadas de servidor para que puedas usar App Check con cualquier recurso de backend personalizado. Incluso se integra con plataformas de administración de API, por ejemplo, Apigee y CDN, como CloudFlare. En tercer lugar, ampliamos la cantidad de proveedores de certificación que admite App Check para incluir ahora reCAPTCHA Enterprise y App Attest, el proveedor de certificación de apps de Apple. Registra tu app con App Check hoy mismo y comienza a aplicar protecciones a través de la consola de Firebase. Consulta nuestra documentación para obtener más información sobre App Check.
App Check protege tu app y tus datos de usuario
Publicaremos documentación detallada en la que se especifican los datos que recopila y comparte cada producto de Firebase a fin de ayudarte a cumplir con las próximas políticas de seguridad de Google Play. Nuestro objetivo es compilar en función del compromiso de Google con la privacidad y la transparencia, y ayudarte a prepararte para la nueva sección sobre la seguridad de datos de Google Play, que se lanzará para los usuarios de la app el próximo año.
La imagen anterior es solo un ejemplo y está sujeta a cambios
Con Firebase, puedes monitorear el rendimiento y la estabilidad de tu app, probar cambios y obtener información valiosa para resolver problemas a fin de brindar la mejor experiencia posible.
Firebase Performance Monitoring recopila y muestra datos acerca del rendimiento de tu app, para que sepas exactamente qué sucede con esta desde el punto de vista de los usuarios cuando funciona con lentitud. Sin embargo, no importa cuánto empeño pongas cuando pruebes en la máquina local tu app, esta puede sufrir problemas de latencia porque los usuarios acceden a ella en diferentes dispositivos, desde diferentes países y a diferentes velocidades de red. Para mantenerte al tanto, lanzaremos una función nueva que se denomina “alertas de rendimiento” en una versión beta. Estas nuevas alertas de rendimiento te enviarán un correo electrónico cuando la hora de inicio de tu app exceda un umbral determinado, de modo que puedas investigar y solucionar el problema de latencia en cuanto aparezca. Las alertas de rendimiento se pueden configurar desde la consola, y próximamente agregaremos más alertas para otras métricas de rendimiento.
Las nuevas alertas en tiempo real de Performance Monitoring te permitirán saber si se ralentiza la hora de inicio de tu app
Firebase Crashlytics te brinda una vista completa de la estabilidad de tu app, por lo que puedes hacer un seguimiento de los errores, priorizarlos y resolverlos antes de que afecten a una gran cantidad de usuarios. Además de la compatibilidad mejorada de Crashlytics con las plataformas de Apple y los informes de juegos, Crashlytics ahora informa errores ANR (la aplicación no responde). Según nuestra investigación, los ANR representan casi el 50% de todos los cierres no deseados de apps en Android, lo que significa que pueden perjudicar más la calidad de tu app que las fallas. Con el fin de brindarte una vista integral de los problemas de estabilidad de tu app, Crashlytics ahora informa los errores ANR y muestra información contextual sobre los subprocesos afectados para que puedas identificar la causa de los ANR.
Crashlytics ahora informa errores de tipo “La aplicación no responde”, lo que te brinda una vista más integral de la estabilidad de la app
Además, anunciaremos un nuevo concepto en Crashlytics que se denomina “señales”. Las señales analizan las fallas a fin de descubrir puntos en común y características interesantes que son útiles para solucionar problemas. Hoy, lanzaremos tres señales: fallas tempranas, problemas nuevos y problemas repetitivos. Las fallas tempranas se refieren a los errores que experimentan los usuarios cuando inician la app o muy pronto después del inicio. Los problemas nuevos son aquellos que aparecieron en los últimos 7 días, mientras que los problemas repetitivos son aquellos que los usuarios experimentan una y otra vez. Las señales están disponibles para los desarrolladores de apps para Apple y Android. Échales un vistazo en la siguiente versión de tu app.
Las señales de Crashlytics muestran puntos en común y características interesantes de las fallas para mejorar la solución de problemas
A medida que crece tu app, Firebase ofrece el control, la automatización y la flexibilidad que necesitas para impulsar los resultados comerciales que deseas, como aumentar la participación y los ingresos.
Firebase Cloud Messaging facilita el envío de notificaciones push dirigidas, automatizadas y personalizadas a través de plataformas para que puedas llegar a los usuarios incluso si no usan tu app de manera activa. Firebase In-App Messaging te brinda la capacidad de enviar mensajes contextuales a los usuarios que usen tu app de manera activa, de modo que puedas incentivarlos a completar acciones clave en la app. Estos dos productos van de la mano para mantener el compromiso de los usuarios. Es por eso que nos emociona anunciar una experiencia de consola rediseñada que los une. Este panel unificado te brinda una vista integral de todas tus campañas de mensajería, de modo que puedas ejecutar campañas sofisticadas y multitáctiles para diferentes audiencias y puedas verificar cómo funcionan, todo desde un solo lugar. Por ejemplo, puedes enviarles un código de cupón a los usuarios que se prevé que dejarán de usar la app a fin de conservarlos porque tanto la Cloud Messaging como In-App Messaging funcionan a la perfección con los nuevos públicos predictivos de Google Analytics. Para probar el nuevo panel unificado, visita la consola y haz clic en el botón “Obtener vista previa ahora”.
El panel unificado para Cloud Messaging e In-App Messaging te permite consultar y administrar tus campañas desde un solo lugar
Otra manera de conservar a los usuarios y cautivarlos es personalizar la experiencia de la app para que se adapte a sus necesidades y preferencias. Con Firebase Remote Config, puedes controlar y cambiar, de forma dinámica, la apariencia y el comportamiento de tu app sin lanzar una versión nueva. Hoy nos complace lanzar una función nueva de Remote Config que se denomina “personalización” en una versión beta. La personalización te permite optimizar automáticamente las experiencias individuales de los usuarios para maximizar los objetivos que te importan mediante la tecnología de aprendizaje automático. Una vez que se haya realizado una simple configuración, la personalización buscará y aplicará de manera continua la configuración correcta de la app para cada usuario, lo que llevará a obtener el mejor resultado y a reducir tu carga de trabajo.
Halfbrick, el estudio de juegos detrás de títulos como Jetpack Joyride, Dan the Man y el clásico instantáneo Fruit Ninja, ya utilizó la personalización para aumentar los ingresos en un 16% e incrementar las puntuaciones positivas de la tienda de apps en un 15%. Ahoy Games, otro de los primeros clientes, probó la personalización en varios de sus juegos y logró aumentar las compras directas desde la app entre un 12% y un 13% con poco o ningún esfuerzo por parte de su equipo.
La personalización de Remote Config utiliza el aprendizaje automático para permitirte optimizar las experiencias del usuario a fin de lograr tus objetivos
También hemos realizado varias mejoras centrales en Remote Config, lo que incluye la actualización del flujo de edición de parámetros para facilitar el cambio de las condiciones de segmentación y los valores predeterminados, y la incorporación de compatibilidad con el tipo de datos a fin de fortalecer la validación de datos y reducir el riesgo de enviarles un valor incorrecto a tus usuarios. Por último, actualizamos el historial de cambios para que puedas consultar, con claridad, cuándo y cómo se cambiaron los parámetros por última vez. De esta manera, podrás comprender qué cambios en la configuración de la app se correlacionan con los cambios en las métricas clave. Dirígete a la consola de Remote Config para consultar estas actualizaciones y probar la personalización hoy mismo.
Mejoras en la validación de datos y la segmentación en Remote Config
Desde la compilación de tu app hasta su optimización, te acompañamos durante todo el recorrido. Nuestro objetivo es lograr que el desarrollo de apps sea más rápido y más fácil, y optimizar tu camino hacia el éxito. Puedes confiar en nosotros para que te ayudemos a lograr que tu app sea la mejor posible para los usuarios y tu empresa. Para obtener más información valiosa sobre los anuncios que compartimos anteriormente, asegúrate de consultar las sesiones técnicas, los codelabs y las demostraciones de Firebase Summit. Si deseas un adelanto de lo que se lanzará en 2022, únete a nuestro programa Alfa.
Publicado por el equipo de TensorFlow Lite
TensorFlow Lite es el framework de aprendizaje automático de Google que se utiliza para implementar modelos de aprendizaje automático en diferentes dispositivos y superficies, como dispositivos móviles (iOS y Android), computadoras de escritorio y otros dispositivos periféricos. Hace poco, agregamos compatibilidad para que también se puedan ejecutar modelos de TensorFlow Lite en un navegador. Para crear apps con TensorFlow Lite, puedes utilizar un modelo existente de TensorFlow Hub o convertir un modelo de TensorFlow existente en un modelo de TensorFlow Lite mediante un conversor. Cuando se implementa un modelo en una app, puedes ejecutar un proceso de inferencia en el modelo según los datos ingresados.
Además de ejecutar un proceso de inferencia, TensorFlow Lite ahora admite el entrenamiento de modelos en un dispositivo. El entrenamiento en el dispositivo permite casos de uso de personalización interesantes donde se pueden ajustar los modelos según las necesidades del usuario. Por ejemplo, podrías implementar un modelo de clasificación de imágenes y permitir que un usuario lo optimice para reconocer especies de pájaros con el aprendizaje por transferencia, mientras le permites a otro usuario ajustar el mismo modelo de nuevo para reconocer frutas. Esta nueva función está disponible en la versión 2.7 y posteriores de TensorFlow y, en este momento, está disponible en las apps para Android. (En un futuro será compatible con iOS).
El entrenamiento en el dispositivo también es una base necesaria para los casos de uso de aprendizaje federado a fin de entrenar modelos globales sobre datos descentralizados. En esta entrada de blog, no hablamos sobre el aprendizaje federado, sino que nos centramos en ayudarte a integrar el entrenamiento en el dispositivo a tus apps para Android.
Luego, haremos referencia a una app de muestra de Colab y Android a medida que te guiamos en la ruta de implementación de extremo a extremo para el aprendizaje en el dispositivo a fin de ajustar un modelo de clasificación de imágenes.
En nuestra entrada de blog de 2019, presentamos conceptos de entrenamiento en el dispositivo y un ejemplo en TensorFlow Lite. Sin embargo, hubo varias limitaciones. Por ejemplo, no era sencillo personalizar la estructura del modelo y los optimizadores. También existían varios modelos de TensorFlow Lite físicos (.tflite) en lugar de un solo modelo de TensorFlow Lite. Asimismo, no era sencillo almacenar y actualizar los pesos del entrenamiento. Como se explica a continuación, la última versión de TensorFlow Lite optimiza este proceso mediante opciones más convenientes para el entrenamiento en el dispositivo.
Deberás seguir los siguientes pasos importantes para implementar un modelo de TensorFlow Lite con entrenamiento integrado en el dispositivo:
Estos pasos se explican a continuación.
El modelo de TensorFlow Lite debería admitir tanto la inferencia como el entrenamiento del modelo, que por lo general implica guardar los pesos del modelo en el sistema de archivos y restaurarlos desde el mismo sistema de archivos. Se realiza esto para guardar los pesos del entrenamiento después de cada ciclo de entrenamiento, de modo que en el siguiente ciclo se puedan usar los pesos del anterior en lugar de comenzar un entrenamiento desde cero.
Sugerimos implementar estas tf.functions para que representen el entrenamiento, inferencia, pesos guardados y pesos cargados:
# The `train` function takes a batch of input images and labels. @tf.function(input_signature=[ tf.TensorSpec([None, IMG_SIZE, IMG_SIZE], tf.float32), tf.TensorSpec([None, 10], tf.float32), ]) def train(self, x, y): with tf.GradientTape() as tape: prediction = self.model(x) loss = self._LOSS_FN(prediction, y) gradients = tape.gradient(loss, self.model.trainable_variables) self._OPTIM.apply_gradients( zip(gradients, self.model.trainable_variables)) result = {"loss": loss} for grad in gradients: result[grad.name] = grad return result
@tf.function(input_signature=[tf.TensorSpec([None, IMG_SIZE, IMG_SIZE], tf.float32)]) def predict(self, x): return { "output": self.model(x) }
@tf.function(input_signature=[tf.TensorSpec(shape=[], dtype=tf.string)]) def save(self, checkpoint_path): tensor_names = [weight.name for weight in self.model.weights] tensors_to_save = [weight.read_value() for weight in self.model.weights] tf.raw_ops.Save( filename=checkpoint_path, tensor_names=tensor_names, data=tensors_to_save, name='save') return { "checkpoint_path": checkpoint_path }
Es posible que ya conozcas el flujo de trabajo para convertir el modelo de TensorFlow al formato TensorFlow Lite. Algunas de las funciones de bajo nivel para el entrenamiento en el dispositivo (p. ej., variables para almacenar los parámetros del modelo) aún son experimentales y otras (p. ej., la serialización del peso) en este momento se basan en operadores TF Select, por lo que deberás configurar estas marcas durante la conversión. Puedes descubrir ejemplos de todas las marcas que necesites establecer en Colab.
# Convert the model converter = tf.lite.TFLiteConverter.from_saved_model(SAVED_MODEL_DIR) converter.target_spec.supported_ops = [ tf.lite.OpsSet.TFLITE_BUILTINS, # enable TensorFlow Lite ops. tf.lite.OpsSet.SELECT_TF_OPS # enable TensorFlow ops. ] converter.experimental_enable_resource_variables = True tflite_model = converter.convert()
En Android, se puede realizar el entrenamiento en el dispositivo de TensorFlow Lite con las API de Java o C++. Puedes crear una instancia de la clase TensorFlow Lite Interpreter para cargar un modelo y así impulsar las tareas de entrenamiento del modelo. Antes, definimos varias tf.functions: se pueden invocar mediante la compatibilidad de TensorFlow Lite con las Firmas, lo que permite que un único modelo de TensorFlow Lite admita múltiples puntos de "entrada". Por ejemplo, definimos una función de entrenamiento para el entrenamiento en el dispositivo, que es una de las firmas del modelo. El entrenamiento se puede invocar mediante el método runSignature de TensorFlow Lite al especificar el nombre de la firma ("entrenamiento").
/** * Runs one training step with the given bottleneck batches and labels. * * @param bottlenecks 2-D float array of bottleneck batches of size (BATCH_SIZE, BOTTLENECK_SIZE) * @param labels 2-D float array of label batches of size (BATCH_SIZE, NUM_CLASSES) * @return the training loss */ float runTraining(float[][] bottlenecks, float[][] labels) { Map inputs = new HashMap'<>'(); inputs.put("bottleneck", bottlenecks); inputs.put("label", labels); Map outputs = new HashMap'<>'(); FloatBuffer loss = FloatBuffer.allocate(1); outputs.put("loss", loss); this.interpreter.runSignature(inputs, outputs, "train"); return loss.get(0); }
De forma similar, el siguiente ejemplo muestra cómo invocar la inferencia mediante la firma "inferencia" del modelo.
/** * Invokes inference on the given image batches. * * @param testImage 3-D float array of image of size (IMG_SIZE, IMG_SIZE, 3) * @return 1-D float array of softmax output of prediction */ float[] runInference(float[][][] testImage) { // Run the inference. Map inputs = new HashMap<>(); inputs.put("feature", new float[][][][] {testImage}); Map outputs = new HashMap<>(); float[][] output = new float[1][numClasses]; outputs.put("output", output); this.interpreter.runSignature(inputs, outputs, "infer"); return output[0]; }
¡Eso es todo! Ahora tienes un modelo de TensorFlow Lite que puede utilizar entrenamiento en el dispositivo. Esperamos que esta guía sobre el código te dé una buena idea sobre cómo ejecutar el entrenamiento en el dispositivo en TensorFlow Lite. Nos entusiasma ver hasta dónde lo llevas.
En teoría, deberías poder aplicar el entrenamiento en el dispositivo en TensorFlow Lite a cualquier caso de uso que admita TensorFlow. Sin embargo, en realidad existen muy pocas consideraciones prácticas que necesitas tener en cuenta antes de implementar el entrenamiento en el dispositivo en tus apps y son las siguientes:
Los trabajos futuros incluyen (pero no se limitan a) compatibilidad de entrenamiento en el dispositivo en iOS, mejoras de rendimiento a fin de aprovechar los aceleradores en el dispositivo (p. ej., GPU) para el entrenamiento en el dispositivo, lo que reduce el tamaño binario al implementar más operaciones de entrenamiento de forma nativa en TensorFlow Lite, compatibilidad de API de nivel superior (p. ej., a través de la biblioteca de tareas de TensorFlow Lite) para abstraer los detalles de implementación y ejemplos que cubren otros casos de uso de entrenamiento en el dispositivo (p. ej., PLN). En nuestra guía a largo plazo, se intentan brindar soluciones de aprendizaje federado de extremo a extremo en el dispositivo.
¡Gracias por leernos! Nos entusiasma ver lo que creas con el aprendizaje en el dispositivo. Una vez más, aquí están los enlaces a la app de muestra y de Colab. Si tienes algún comentario, compártelo con nosotros en el Foro de TensorFlow o en GitHub.
En esta publicación, se reflejan las contribuciones significativas de muchas personas en el equipo de TensorFlow Lite de Google, incluidos Michelle Carney, Lawrence Chan, Jaesung Chung, Jared Duke, Terry Heo, Jared Lim, Yu-Cheng Ling, Thai Nguyen, Karim Nosseir, Arun Venkatesan, Haoliang Zhang, otros miembros del equipo de TensorFlow Lite y nuestros colaboradores en Google Research.