Publicado por Rahim Nathwani, Gerente de producto, Servicio de traducción de aplicaciones
Con usuarios en 190 países de todo el mundo, Google Play te ofrece un público realmente global para tus aplicaciones y juegos. La localización es una de las maneras más poderosas de conectarse con personas de diferentes lugares, por lo que lanzamos el soporte de traducciones para compras directas desde la aplicación y las campañas de aplicaciones universales a principios de este año. Con opciones de traducción a más de 30 idiomas disponibles a través de la Developer Console, actualizamos nuestro servicio de traducción para ayudarte a seleccionar los idiomas más relevantes, a fin de que los primeros pasos sean rápidos y sencillos.
Publicado por Rahim Nathwani, Gerente de producto, Servicio de traducción de aplicaciones
Con usuarios en 190 países de todo el mundo, Google Play te ofrece un público realmente global para tus aplicaciones y juegos. La localización es una de las maneras más poderosas de conectarse con personas de diferentes lugares, por lo que lanzamos el soporte de traducciones para compras directas desde la aplicación y las campañas de aplicaciones universales a principios de este año. Con opciones de traducción a más de 30 idiomas disponibles a través de la Developer Console, actualizamos nuestro servicio de traducción para ayudarte a seleccionar los idiomas más relevantes, a fin de que los primeros pasos sean rápidos y sencillos.

Con el lanzamiento de los nuevos análisis de idioma y país, tienes acceso al análisis de la instalación de aplicaciones en Google Play, que incluye lo siguiente:
  • Información sobre los principales idiomas y países en los que se han instalado las aplicaciones, desglosada hasta el nivel de la categoría de tu aplicación
  • El porcentaje de instalaciones realizadas por los usuarios de dichos idiomas
  • Más información que servirá para integrar tus planes de lanzamiento al mercado de estos países

Para facilitar el pedido de traducciones, te mostramos los paquetes de idiomas que puedes agregar a tu pedido con un solo clic.

Para comenzar, selecciona Manage translations -> Purchase translations en la página Store Listing en la Google Play Developer Console.

La transformación de Firebase a una plataforma móvil unificada trajo consigo nuevos artefactos de Gradle y CocoaPods que los desarrolladores móviles pueden usar para importar el SDK de Mobile Ads. Con estas incorporaciones, ahora existen varias alternativas para cada plataforma. Gracias a tus comentarios, queremos compartir más información sobre los que nosotros recomendamos y las bibliotecas que contienen. Te mostramos aquí un resumen.
La transformación de Firebase a una plataforma móvil unificada trajo consigo nuevos artefactos de Gradle y CocoaPods que los desarrolladores móviles pueden usar para importar el SDK de Mobile Ads. Con estas incorporaciones, ahora existen varias alternativas para cada plataforma. Gracias a tus comentarios, queremos compartir más información sobre los que nosotros recomendamos y las bibliotecas que contienen. Te mostramos aquí un resumen.

Android y Gradle

firebase-ads (recomendado)


Esta es la mejor manera de obtener el SDK de Mobile Ads en tu proyecto. Con el artefacto firebase-ads, obtienes todo lo que necesitas para cargar y mostrar anuncios de AdMob, DFP o AdX, más Firebase Analytics incorporado. También estarás listo para agregar los componentes del cliente para cualquier otro servicio Firebase que quieras usar, como firebase-crash o firebase-config. A menos que tengas una necesidad específica para usar el SDK sin Firebase, este será tu favorito.

Si quieres ver la presentación en pantalla sobre cómo configurar y ejecutar AdMob usando firebase-ads, mira este episodio de la serie de Firecasts:


play-services-ads


Para aquellos que no usan Firebase, este artefacto de Gradle contiene el SDK de Mobile Ads en sí mismo. Obtendrás el código del cliente desde AdMob, DFP y AdX, pero no los servicios de Firebase.

play-services


Este es el cliente completo de servicios de Google Play, que tampoco tiene Firebase. Este no solo te ofrece el SDK de Mobile Ads, sino también otros SDK de servicios de Google Play: Maps, Drive, Fit, y así sucesivamente. Seguramente no estás usando todas las API que los servicios de Play ofrece, es mejor importarlas individualmente. Si necesitas anuncios móviles y juegos de Play, por ejemplo, simplemente incluye play-services-ads y play-services-games.

play-services-ads-lite


El equipo de SDK desarrolló este nuevo artefacto de Gradle para cada caso y uso específico. Contiene una versión reducida del SDK de Mobile Ads diseñado para funcionar únicamente en dispositivos que tengan los servicios de Google Play instalados. Si es muy importante reducir el tamaño de la aplicación, esto puede ayudar a reducir el impacto del SDK de Mobile Ads, pero no podrá cargar y mostrar anuncios en dispositivos que no tengan los servicios de Play. Asegúrate de que estés familiarizado con la base de instalación de tu aplicación antes de considerar esta compensación, y lee la Pequeña guía de SDK para obtener más información.

iOS y CocoaPods

Firebase/AdMob (recomendado)


Este es el CocoaPod de Firebase para AdMob y el SDK de Mobile Ads. Aunque esté etiquetado como "AdMob," este pod te da el código del cliente iOS para DFP y AdX. Obtendrás todo lo que necesites para cargar y mostrar anuncios desde el árbol de recursos, más Firebase Analytics incorporado. CocoaPod también es muy fácil de coordinar con otros pods de Firebase que tu aplicación necesite, como Firebase/Crash y Firebase/Database. Para la mayoría de desarrolladores, este es el que necesitan.

La serie de Firecasts tiene un episodio que muestra cómo importar AdMob y Firebase en la aplicación usando Firebase/AdMob, así que echa un vistazo a la presentación en pantalla:


Google-Mobile-Ads-SDK


Para los desarrolladores que aún no usen Firebase, este pod contiene únicamente el SDK de Mobile Ads. Obtendrás todo lo necesario para mostrar anuncios desde AdMob, DFP y AdX, pero no los servicios de Firebase.

GoogleMobileAds


Este Cocoapod es más viejo y es una alternativa que no debería usarse para el SDK de Mobile Ads. Google-Mobile-Ads-SDK es la mejor opción si no estás usando Firebase.

Más información


Si tienes preguntas sobre Firebase y la mejor manera para comenzar, la página de soporte de Firebase tiene un conjunto de opciones que te pueden ayudar. Si tienes preguntas técnicas sobre el SDK de Mobile Ads, puedes ingresar al foro de soporte del SDK.

Publicado por Megan Boundey, Gerente de producto, API de Google Maps para móviles

En la versión más reciente de la API de Google Maps para Android, lanzada hoy, se incluyen más funciones solicitadas por desarrolladores. Ahora puedes realizar un seguimiento más preciso del movimiento de la cámara a través de nuestros nuevos receptores de cámaras, establecer los niveles de zoom mínimo y máximo para tu mapa, y restringir el desplazamiento de los usuarios a determinados límites de latitud y longitud del objetivo de la cámara. A su vez, agregamos una nueva propiedad Tag para que ahora puedas asociar tu propio objeto de datos con un marcador.
Publicado por Megan Boundey, Gerente de producto, API de Google Maps para móviles

En la versión más reciente de la API de Google Maps para Android, lanzada hoy, se incluyen más funciones solicitadas por desarrolladores. Ahora puedes realizar un seguimiento más preciso del movimiento de la cámara a través de nuestros nuevos receptores de cámaras, establecer los niveles de zoom mínimo y máximo para tu mapa, y restringir el desplazamiento de los usuarios a determinados límites de latitud y longitud del objetivo de la cámara. A su vez, agregamos una nueva propiedad Tag para que ahora puedas asociar tu propio objeto de datos con un marcador.

Realiza un seguimiento más preciso del movimiento de la cámara

En una de las principales solicitudes, los desarrolladores pidieron un mejor método para seguir el movimiento de la cámara y la capacidad de determinar el motivo por el cual esta se mueve; ya sea por gestos de los usuarios, animaciones de API integradas o movimientos controlados de desarrolladores [Problema 4636]. Nuestros nuevos receptores de cambios en la cámara te ayudarán a hacerlo. Tu aplicación ahora puede recibir notificaciones de eventos de inicio, ejecución en curso y finalización.

Consulta la sección de eventos de cambio de cámara en la guía del desarrollador y observa este ejemplo de código, que muestra la manera de detectar el momento en que el usuario arrastra el mapa y dibuja una línea para el seguimiento este movimiento, cuando se produce.

Controla la experiencia de zoom y desplazamiento

¿Alguna vez deseaste poder controlar el nivel de acercamiento, alejamiento y desplazamiento disponible para los usuarios en tu mapa, de modo que puedas tener un mayor manejo de la experiencia? ¿Solo dispones de superposiciones de mosaicos para niveles de zoom de 15 a 20 y deseas poder limitar a esos niveles la capacidad de zoom del mapa y de tus superposiciones de mosaicos?

Ahora puedes configurar los niveles mínimos y máximos en tu mapa usando GoogleMap.setMinZoomPreference() y GoogleMap.setMaxZoomPreference() [Problema 4663]. Estos niveles de zoom también pueden aplicarse a cualquier superposición de mosaicos que haya en tu mapa.

A su vez, también puedes restringir los límites centrales de latitud y longitud del punto focal del mapa (el objetivo de la cámara) para que los usuarios solo puedan desplazarse dentro de estos límites usando GoogleMap.setLatLngBoundsForCameraTarget(). Esto resulta fabuloso si deseas que tus usuarios permanezcan dentro del área del mapa de tus superposiciones de mosaicos o limitar el mapa de tu aplicación a un área local en particular.
Límites de desplazamiento y zoom en un mapa de Adelaida, una hermosa ciudad del sur de Australia.
Consulta la guía del desarrollador para obtener más información sobre la configuración de límites en el mapa y este ejemplo de código.

Etiquetas de marcadores

¿Tu aplicación contempla los diferentes tipos de marcadores y deseas tratarlos de manera diferente cuando un usuario los selecciona? ¿Deseas asignar prioridades a tus marcadores? La nueva propiedad Tag de marcadores te permite asociar el objeto de datos que desees a un marcador, y te proporciona respaldo para esta y otras posibilidades [Problema 4650].

Agradecemos enormemente a los desarrolladores de Android de todas partes por usar API de Google Maps para Android y enviar comentarios a través del seguimiento de problemas.

Nuestras notas de la versión contienen información detallada sobre errores corregidos y las funciones mencionadas en esta publicación. ¡Conoce nuestras nuevas funciones y comienza a usarlas hoy!

Publicado por Lily Sheringham, equipo de Google Play


Culture Alley desarrolló la aplicación  Hello English para ayudar a los indios a aprender inglés con un enfoque orientado hacia el entretenimiento y en más de 15 dialectos. Actualmente, más de 13 millones de personas usan Hello English en la India y el resto del mundo.
Publicado por Lily Sheringham, equipo de Google Play


Culture Alley desarrolló la aplicación Hello English para ayudar a los indios a aprender inglés con un enfoque orientado hacia el entretenimiento y en más de 15 dialectos. Actualmente, más de 13 millones de personas usan Hello English en la India y el resto del mundo.
Escucha a Nishant Patni, Fundador y CEO, y a Pranshu Bhandari, Cofundadora, explicar la manera en que optimizaron la aplicación para encarar los desafíos a los que se enfrentan los mercados emergentes. Entérate de cómo aplicaron distintas herramientas de Google Play para contemplar diferentes niveles de conectividad y capacidades de dispositivos, y para mejorar la retención de usuarios.

Conoce más prácticas recomendadas relacionadas con la compilación para miles de millones y mira el video “Diez consejos para crear una aplicación para miles de millones de usuarios” a fin de obtener más asesoramiento. También accede a la aplicación Playbook for Developers para mantenerte actualizado sobre más funciones y prácticas recomendadas que te permitirán alcanzar el éxito con tu negocio en Google Play




Un llamado a todos los desarrolladores: ¡prueben hoy nuestra versión preliminar para desarrolladores!

Como pueden ver arriba, los complementos de Android ofrecen una excelente oportunidad para crear integraciones innovadoras y llegar a usuarios de Documentos y Hojas de cálculo de todo el mundo. Básicamente, son aplicaciones de Android que se conectan con proyectos de ...
 
Sabemos que muchos de ustedes consideran los dispositivos móviles como sus herramientas principales para el consumo de información de negocios, pero... ¿qué tal si pudieran usarlos para completar más tareas desde cualquier lugar? Presentamos con entusiasmo los complementos de Android para Documentos u Hojas de cálculo una nueva manera de hacer tareas como la preparación de un contrato para firmarse electrónicamente desde tu teléfono o la obtención de datos de CRM en tu tablet para analizarlos rápidamente mientras esperas que esté listo tu café, por la mañana. Los complementos de Android pueden ayudarte a alcanzar más logros.

Podrán hacer más tareas con sus aplicaciones de terceros favoritas, sin importar dónde estén

Trabajamos con ocho socios de integración que crearon integraciones fluidas para Documentos u Hojas de cálculo. A continuación, se ofrece una vista previa de algunas de ellas:
  • DocuSign: podrán activar o completar un proceso de firma desde Documentos u Hojas de cálculo y guardar el documento ejecutado en Drive. Pueden obtener más información aquí.
DocuSign permite crear fácilmente envolventes de firmas desde Documentos de Google.
  • ProsperWorks: podrán importar sus datos de CRM para crear y actualizar paneles, informes y gráficos avanzados en Hojas de cálculo desde sus dispositivos. Pueden obtener más información aquí.
  • AppSheet: podrán crear, al instante, potentes aplicaciones móviles directamente a partir de sus datos en Hojas de cálculo. No se requiere codificación. Pueden obtener más información aquí.
  • Scanbot: podrán escanear sus documentos de negocios usando tecnología OCR integrada e insertar contenido en Documentos como texto editable. Pueden obtener más información aquí.


Pueden encontrar estos complementos y muchos más (por ejemplo, PandaDocZohoCRMTeacher AideEasyBib y Classroom) en nuestra colección de Google Play. También pueden acceder a ellos desde los menús de complementos de Documentos u Hojas de cálculo.


Pruébenlos hoy y vean todas las demás posibilidades que tienen.



Un llamado a todos los desarrolladores: ¡prueben hoy nuestra versión preliminar para desarrolladores!

Como pueden ver arriba, los complementos de Android ofrecen una excelente oportunidad para crear integraciones innovadoras y llegar a usuarios de Documentos y Hojas de cálculo de todo el mundo. Básicamente, son aplicaciones de Android que se conectan con proyectos de Google Apps Script en el servidor, lo que les permite acceder a datos de Documentos y Hojas de cálculo de Google, y manipularlos mediante técnicas estándares de Apps Script. Consulten nuestra documentación, en la que se incluyen pautas de IU y ejemplos de código para dar sus primeros pasos. También les hemos facilitado la publicación de sus aplicaciones con el editor de Apps Script.

Los complementos de Android se encuentran disponibles hoy a modo de versión preliminar. ¡Esperamos ver sus compilaciones!

La implementación en entornos de producción siempre resulta un poco estresante. ¿Qué sucede si la versión nueva del sitio tiene errores que no captaste? Las reversiones de un clic en ...
La implementación en entornos de producción siempre resulta un poco estresante. ¿Qué sucede si la versión nueva del sitio tiene errores que no captaste? Las reversiones de un clic en Firebase Hosting te permiten regresar de manera segura a la última versión que funciona. Pero, ¿cómo puedes asegurarte de evitar que el problema se produzca?

La respuesta es simple: prueba tu sitio en un entorno de producción reflejado. Afortunadamente, para nosotros, Firebase CLI simplifica la configuración e implementación en varios entornos.

Adición de un nuevo entorno


Para agregar y cambiar entornos con Firebase CLI se requiere un simple comando: firebase use.

Al inicializar por primera vez tu proyecto de Firebase Hosting con firebase init, tienes que especificar el proyecto en el que deseas implementar tu aplicación. Este es tu proyecto predeterminado. El comando use te permite agregar otro proyecto.
$ firebase use --add

Este comando solicita que elijas uno de tus proyectos existentes:
$ firebase use --add
$ ? Which project do you want to add? (Use arrow keys)
  my-production-project
> my-staging-project
  my-dev-project

Selecciona el proyecto que desees usar para un entorno diferente y luego asígnale un alias. Puedes usar el que desees, aunque las opciones comunes son “desarrollo”, “almacenamiento provisional” o “producción”.
$ firebase use --add
$ ? Which project do you want to add? (Use arrow keys)
  my-production-project
> my-staging-project
  my-dev-project
? What alias do you want to use for this project? (e.g. staging) staging
Created alias staging my-staging-project.
Now using alias staging (my-staging-project)

Una vez que crees el alias nuevo, se fijará como el entorno de implementación actual. La ejecución de una implementación de Firebase hará que se implemente tu aplicación en este entorno.

Cambio de entornos


Si deseas realizar un cambio a otro entorno, simplemente proporciona el alias en el comando use.
$ firebase use default # sets environment to the default alias
$ firebase use staging # sets environment to the staging alias
Para un solo comando, también puedes especificar el entorno usando el indicador -P:
$ firebase deploy -P staging # deploy to staging alias

¡Eso es todo!


Eso es todo lo que hay que saber sobre el cambio de entornos con Firebase Hosting. Si deseas realizar un recorrido guiado sobre la configuración, mira nuestra captura de video. ¡Comunícanos lo que piensas en los comentarios!

Publicado por Jeff Vander Stoep, Equipo de seguridad de Android 
Android depende mucho del kernel de Linux para la aplicación de su modelo de seguridad. Para proteger mejor el kernel, hemos habilitado varios mecanismos dentro de Android. A un nivel elevado, estas protecciones se agrupan en dos categorías: protecciones de la memoria y reducción de la superficie de ataque.
Publicado por Jeff Vander Stoep, Equipo de seguridad de Android 
Android depende mucho del kernel de Linux para la aplicación de su modelo de seguridad. Para proteger mejor el kernel, hemos habilitado varios mecanismos dentro de Android. A un nivel elevado, estas protecciones se agrupan en dos categorías: protecciones de la memoria y reducción de la superficie de ataque.

Protecciones de la memoria


Una de las funciones de seguridad más importantes que proporciona el kernel es la protección de la memoria para procesos de espacio del usuario bajo la forma de separación de espacios de direcciones. A diferencia de los procesos de espacio del usuario, las diferentes tareas del kernel tienen lugar dentro de un espacio de direcciones y una vulnerabilidad en cualquier punto del kernel puede afectar sectores no relacionados de la memoria del sistema. Las protecciones de memoria del kernel están diseñadas para preservar la integridad de este a pesar de las vulnerabilidades.

Marca la memoria como de solo lectura o de no ejecución


Esta función segmenta memoria del kernel en secciones lógicas y fija permisos de acceso a páginas con restricciones en cada sección. El código se marca como “de solo lectura” y “de ejecución”. Las secciones de datos se marcan como de no ejecución y se segmentan en secciones de solo lectura y de lectura y escritura. Esta función se habilita con la opción de configuración CONFIG_DEBUG_RODATA. Fue creada por Kees Cook y se basa en un subconjunto de la función KERNEXEC de Grsecurity, creado por Brad Spengler, y la función CONFIG_STRICT_MEMORY_RWX de Qualcomm, creada por Larry Bassel y Laura Abbott. CONFIG_DEBUG_RODATA se aplicó al kernel ascendente para arm/arm64 y se adaptó al kernel común 3.18+ arm/arm64 de Android.

Restringe el acceso del kernel al espacio del usuario


Esta función mejora la protección del kernel al evitar que acceda de manera directa a la memoria del espacio de usuarios. Esto puede dificultar varios ataques, ya que los atacantes tienen un control considerablemente inferior de la memoria ejecutable del kernel, en particular cuando CONFIG_DEBUG_RODATA está habilitado. Ya existían funciones similares; la más antigua fue UDEREF, de Grsecurity. Esta función se habilita con la opción de configuración CONFIG_CPU_SW_DOMAIN_PAN, y fue implementada por Russell King para ARMv7 y adaptada al kernel 4.1 de Android, creado por Kees Cook.

Mejora la protección contra desbordamientos del búfer de pila


De manera muy similar a stack-protector, opción que lo precedió, stack-protector-strong brinda protección contra desbordamientos del búfer de pila, aunque también ofrece cobertura para más tipos de arreglos; por ejemplo, los arreglos de caracteres que originalmente eran los únicos en recibir protección. Stack-protector-strong fue implementado por Han Shan y se agregó al compilador gcc 4.9.

Reducción de la superficie de ataque


El propósito de la reducción de la superficie de ataque es exponer menos puntos de entrada al kernel sin dañar la funcionalidad legítima. Reducir la superficie de ataque puede implicar eliminar código o el acceso a puntos de entrada, o exponer funciones de manera selectiva.

Elimina el acceso predeterminado a funciones de depuración


El sistema de rendimiento del kernel proporciona infraestructura para la medición del rendimiento y puede usarse para analizar el kernel y las aplicaciones del espacio del usuario. Es una valiosa herramienta para los desarrolladores, pero agrega una superficie de ataque innecesaria para la amplia mayoría de los usuarios de Android. En Android Nougat, el acceso al sistema de rendimiento estará bloqueado de forma predeterminada. Los desarrolladores podrán, de todos modos, acceder a él habilitando la configuración para desarrolladores y usando adb para configurar una propiedad: “adb shell setprop security.perf_harden 0”.

El patchset para bloquear el acceso al sistema de rendimiento puede dividirse en secciones de kernel y espacio del usuario. La revisión de kernel fue creada por Ben Hutchings y deriva de CONFIG_GRKERNSEC_PERF_HARDEN de Grsecurity, creada por Brad Spengler. Daniel Micay aportólos cambios en el espacio del usuario. Gracias Wish Wu y a los demás por actuar con responsabilidad y divulgar vulnerabilidades del sistema de rendimiento.

Restringe el acceso de las aplicaciones a comandos ioctl


Una gran parte del modelo de seguridad de Android se describe y se aplica a través de SELinux. La llamada de sistema ioctl() representó una brecha importante en la granularidad de aplicación a través de SELinux. La admisión de comandos Ioctl con SELinux se agregó como un medio para proporcionar control por comando a través de la llamada de sistema mediante SELinux.

La mayoría de las vulnerabilidades de kernel informadas en Android tienen lugar en controladores y se accede a ellas con la llamada de sistema ioctl; por ejemplo, CVE-2016-0820. Algunos comandos ioctl son necesarios para aplicaciones de terceros. Sin embargo, esto no sucede con la mayoría de ellos y el acceso puede restringirse sin afectar la funcionalidad legítima. En Android Nougat, solo se encuentra disponible una pequeña lista blanca de comandos ioctl de socket para las aplicaciones. Para un grupo selecto de dispositivos, se restringió se manera similar el acceso de las aplicaciones a ioctl de GPU.

Solicita seccomp-bpf


Seccomp proporciona un mecanismo adicional de espacios, el cual permite a un proceso restringir las llamadas de sistema y los argumentos de estas que estén disponibles a través de un filtro configurable. La restricción de la disponibilidad de llamadas de sistema puede reducir de manera dramática la superficie de ataque expuesta del kernel. Debido a que seccomp se presentó primero para dispositivos Nexus en Lollipop, su disponibilidad en el ecosistema de Android ha mejorado de forma sostenida. Con Android Nougat, la compatibilidad con seccomp es un requisito para todos los dispositivos. En Android Nougat, usaremos seccomp en los procesos mediaextractor y mediacodec como parte del esfuerzo de protección de medios.

Esfuerzos en curso


Hay en desarrollo otros proyectos destinados a proteger el kernel:
  • A través del proyecto de autoprotección de kernel, se desarrollan defensas de tiempo de ejecución y compilación para el kernel ascendente.
  • En el proyecto de código abierto de Android (AOSP), hay en curso tareas de ajuste de espacios y de reducción de la superficie de ataque con SELinux.
  • Minijail proporciona un mecanismo práctico para aplicar muchas funciones de contención y espacios seguros que ofrece el kernel, como los filtros seccomp y los espacios de nombres.
  • Los proyectos como kasan y kcov ayudan a los fuzzers a descubrir la causa principal de las fallas y a construir de manera inteligente casos de prueba que aumentan la cobertura del código, lo cual potencia finalmente la eficacia del proceso de búsqueda de errores.

Debido a estos y otros esfuerzos, esperamos que continúe el proceso de mejoramiento de la seguridad del kernel. Como siempre, apreciamos los comentarios sobre nuestro trabajo y recibimos con gusto sugerencias para mejorar Android. Escríbenos a security@android.com.

Gracias a los  vínculos dinámicos de Firebase, logramos que fuera más fácil para ti compartir vínculos profundos en tu aplicación con un único vínculo que funciona en iOS y Android. Puede, incluso, permanecer activo durante el proceso de instalación de la aplicación desde App Store y en Google Play. Estos vínculos dinámicos tienen varias aplicaciones en campañas de correo electrónico o redes sociales; no obstante, una que se destaca es la de permitir que tus usuarios compartan elementos de tu aplicación con sus amigos. En un juego, por ejemplo, se pueden aprovechar vínculos dinámicos de Firebase para compartir reproducciones de un nivel, de modo que los jugadores puedan desafiar a sus amigos a superar sus puntajes.
Gracias a los vínculos dinámicos de Firebase, logramos que fuera más fácil para ti compartir vínculos profundos en tu aplicación con un único vínculo que funciona en iOS y Android. Puede, incluso, permanecer activo durante el proceso de instalación de la aplicación desde App Store y en Google Play. Estos vínculos dinámicos tienen varias aplicaciones en campañas de correo electrónico o redes sociales; no obstante, una que se destaca es la de permitir que tus usuarios compartan elementos de tu aplicación con sus amigos. En un juego, por ejemplo, se pueden aprovechar vínculos dinámicos de Firebase para compartir reproducciones de un nivel, de modo que los jugadores puedan desafiar a sus amigos a superar sus puntajes.


Aunque esta clase de uso compartido entre usuarios puede ser bastante eficaz, la recomendación de boca en boca continúa siendo una de las más poderosas vías de difusión de aplicaciones. El proceso de generar un vínculo dinámico y hacer que el usuario pueda enviarlo de manera sencilla a sus amigos a través de un mensaje SMS o de correo electrónico implica un trabajo considerable. La mayoría de los desarrolladores preferirían invertir ese trabajo en otras tareas, como la creación de aplicaciones.

Esa es la idea de Firebase Invites: quisimos tomar ese proceso de compartir vínculos dinámicos por SMS o correo electrónico y optimizarlo para los desarrolladores. Y ahora que vimos varios casos de Firebase Invites en el mundo real, quisimos compartir contigo algunos consejos sobre la manera de aprovecharlas para hacerlas más atractivas. 

Comparte algo específico


Dado que Firebase Invites se basa en vínculos dinámicos, tus usuarios pueden compartir información específica sobre vínculos profundos con sus amigos. Esto significa que los destinatarios de invitaciones pueden iniciar de inmediato tu aplicación y vivir una experiencia relacionada con la invitación en la que hicieron clic, en lugar de una pantalla de inicio estándar.

Debes aprovechar esto para asegurarte de compartir información específica sobre tu aplicación, en lugar de limitarte a crear una función “Compartir esta aplicación con mis amigos” genérica. Si tienes una aplicación para hacer ejercicio físico, asegúrate de que tus usuarios puedan compartir su trabajo físico o ruta de trote más reciente con sus amigos. Si tienes una aplicación para compartir transporte con un código de recomendación, asegúrate de que tus usuarios puedan compartir este código con sus amigos.

En esta línea, debes asegurarte de que la interfaz que uses para iniciar el proceso de uso compartido tenga relación con el contenido que tus usuarios desearán compartir. Si simplemente dispones una opción de uso compartido genérica en tu menú de configuración, probablemente no veas aumentar de manera notable el uso ni las instalaciones. Por otra parte, si dispones un botón “Compartir” cerca de la ruta de trote o del código de recomendación que tus usuarios desean compartir, estos se vuelven mucho más atractivos.

Personaliza tus animaciones


Cuando envías una invitación por correo electrónico desde Firebase Invites, la biblioteca puede completar de manera automática el mensaje con imágenes y texto tomados directamente del directorio de Play Store o App Store de tu aplicación. Esto es ciertamente positivo desde el punto de vista práctico; con solo unas líneas de código, puedes crear un mensaje de correo electrónico con un formato atractivo y cargado de contenido.

Si usas Firebase Invites para una función genérica de uso compartido de una aplicación, esto podría funcionar. No obstante, si usas Firebase Invites para compartir contenido específico tal como recomendamos, puedes personalizar este mensaje de correo electrónico saliente aprovechando el método setEmailHtmlContent de Android. Esto brinda a tu cliente la capacidad de proporcionar cualquier contenido html que desees como contenido de tu mensaje de correo electrónico saliente, para que puedas mostrar un mensaje de correo electrónico más relacionado con el contenido que tus usuarios deseen compartir.

Por ejemplo, Yummly recurrió a Firebase Invites para potenciar una función con la cual los usuarios pudieran compartir recetas específicas con sus amigos. Personalizando el mensaje de correo electrónico saliente en el cliente, Yummly proporcionó descripciones detalladas e imágenes de cada receta para cada destinatario. Presentar información más relacionada de antemano forma parte de una experiencia más interesante para los destinatarios y puede generar mayor captación que el contenido de correo electrónico estándar de Firebase Invites.

¿Por qué no usar, de paso, la configuración remota de Firebase combinada con App Invites para aplicar iteraciones en diferentes versiones de tu contenido de correo electrónico? Si preparas tu aplicación para que tome su texto de correo electrónico saliente de la configuración remota en lugar de codificarlo en ella, puedes probar nuevos mensajes de correo electrónico sin necesidad de actualizarla. Con un poco de experimentación, puedes configurar las clases de contenido de correo electrónico más persuasivas.

Brinda compatibilidad adecuada a usuarios de iOS


Una limitación importante que debe comprenderse respecto de Firebase Invites: si bien tus usuarios de Android pueden enviar y recibir invitaciones en todo momento y tus usuarios de iOS pueden recibir invitaciones libremente, para que puedas enviar una invitación en iOS, tu usuario debe iniciar sesión en Google.

Para muchos desarrolladores, esto no es un problema; incentivan a los usuarios a iniciar sesión y Google es uno de sus proveedores preferidos. Sin embargo, es posible que otras aplicaciones ni siquiera cuenten con inicio de sesión o no admitan Google Sign-In, con lo cual Firebase Invites pierde un poco de atractivo para iOS. Muchos desarrolladores en este punto se inclinan a pensar “No hay problema. Solo ofreceré compatibilidad con Firebase Invites en mi aplicación de Android”.

El problema de este enfoque es que si un desarrollador admite el envío de invitaciones desde un dispositivo Android, sus usuarios enviarán invitaciones a todos sus amigos, así sean usuarios de iOS o Android. Y si la biblioteca de Firebase Invites no se encuentra disponible en iOS para leer esta invitación, los datos de vínculos profundos correspondientes se pierden (junto con toda la magia de Firebase Invites).

Por lo tanto, aunque decidas no brindar compatibilidad con el envío de invitaciones en iOS, te recomendamos al menos admitir la capacidad de recibirlas en este sistema operativo. De esa manera, tus usuarios de iOS pueden asegurarse de recuperar toda la información correspondiente sobre vínculos profundos cuando acepten una invitación, para acceder a toda la experiencia de uso compartido.

Compartir es cuidar


Al parecer, casi todas las aplicaciones tienen cierta clase de contenido (así sea una reproducción genial en un juego, una imagen graciosa o un código de recomendación) que, al compartirse, puede generar provecho. Supongo que en algún punto de la lista de aspectos pendientes de tu aplicación hay un elemento “Permitir que los usuarios compartan (contenido designado) con amigos”, que aún planeas implementar no bien dispongas de algunos ciclos para descubrirlo.

Con Firebase Invites, podemos eliminar muchísimo trabajo del proceso y transferir estas funciones de la categoría “determinarlo un día” a la categoría “posibilidades más factibles”. Si no, al menos, posibilidades que pueden alcanzarse con ayuda. (Las metáforas basadas en productos nunca fueron mi fuerte). Haz el intento; examina nuestra documentación y verifica alguna de nuestras prácticas recomendadas para beneficiarte más con las invitaciones.

Publicado por Rich HyndmanDeveloper Advocate de Android
Con la expansión de la Internet de las cosas, la conexión entre aplicaciones de Android y dispositivos compatibles con Wi-Fi es cada vez más común. Si creas una aplicación para un visor remoto, para configurar una lámpara remota conectada o para controlar un cuadricóptero, si se basa en tecnología Wi-Fi, necesitarás conectarte a una zona en la que probablemente no se ofrezca conectividad a Internet.
Publicado por Rich HyndmanDeveloper Advocate de Android
Con la expansión de la Internet de las cosas, la conexión entre aplicaciones de Android y dispositivos compatibles con Wi-Fi es cada vez más común. Si creas una aplicación para un visor remoto, para configurar una lámpara remota conectada o para controlar un cuadricóptero, si se basa en tecnología Wi-Fi, necesitarás conectarte a una zona en la que probablemente no se ofrezca conectividad a Internet.

A partir de Lollipop, el SO comenzó a ser un poco más inteligente, lo que permitió varias conexiones de red y evitó el enrutamiento de datos hacia redes sin conectividad a Internet. Esto resulta muy útil para los usuarios, ya que no pierden la conectividad cuando se encuentran cerca de redes Wi-Fi con portales cautivos. Se agregaron API de enrutamiento de datos para desarrolladores, a fin de que puedas asegurarte de que solo el tráfico de aplicaciones correspondiente se dirija a través de la conexión Wi-Fi hacia el dispositivo externo.

Para facilitar la comprensión de las API, es útil saber que existen 3 conjuntos de redes disponibles para los desarrolladores:
  • WiFiManager#startScan devuelve una lista de redes Wi-Fi disponibles. Se identifican principalmente a través de SSID.
  • WiFiManager#getConfiguredNetworks devuelve una lista de las redes Wi-Fi configuradas en el dispositivo, también indexadas por SSID, aunque no necesariamente se encuentran disponibles por el momento.
  • ConnectivityManager#getAllNetworks devuelve una lista de redes con las cuales interactúa el teléfono. Esto es necesario debido a que, a partir de Lollipop, un dispositivo puede conectarse a varias redes al mismo tiempo (Wi-Fi, LTE, Bluetooth, etc.) Es posible acceder al estado actual de cada una de estas llamando a ConnectivityManager#getNetworkInfo e identificarlo mediante un ID de red.

En todas las versiones de Android, puedes comenzar explorando redes Wi-Fi disponibles con WiFiManager#startScan y aplicar iteraciones en ScanResults buscando el SSID de tu dispositivo Wi-Fi externo. Una vez que encuentres una, puedes verificar si ya está configurada medianteWifiManager#getConfiguredNetworks y aplicar iteraciones a través de los objetos WifiConfiguration devueltos estableciendo coincidencias con el SSID. Cabe observar que los SSID de las redes configuradas se encuentran entre comillas dobles, mientras que los SSID devueltos en ScanResults no.

Si tu red está configurada, puedes obtener el ID de red del objeto WifiConfiguration. De lo contrario, puedes configurarla usando WifiManager#addNetwork y realizar un seguimiento del ID de red devuelto.

Para conectarte a la red Wi-Fi, registra un BroadcastReceiver que reciba WifiManager.NETWORK_STATE_CHANGED_ACTION, luego llama a WifiManager.enableNetwork (int netId, booleano disableOthers) y pasa tu ID de red. La llamada enableNetwork deshabilita todos los demás puntos de acceso Wi-Fi para la búsqueda siguiente, localiza el que hayas solicitado y establece una conexión con él. Cuando recibas las difusiones de red, a través de WifiManager#getConnectionInfo podrás verificar que la conexión con la red correspondiente se haya establecido con éxito. Sin embargo, en Lollipop y versiones posteriores, si dicha red no ofrece conectividad con Internet, las solicitudes no se dirigirán hacia ella.

Enrutamiento de solicitudes de red

Para dirigir solicitudes de red de tu aplicación a un dispositivo Wi-Fi externo, en dispositivos con Lollipop llama a ConnectivityManager#setProcessDefaultNetwork y en dispositivos con Marshmallow llama a ConnectivityManager#bindProcessToNetwork, que supone un reemplazo directo de API. Ten en cuenta que para estas llamadas se requiere android.permission.INTERNET; de lo contrario, el resultado devuelto solo será “false”.

Como alternativa, si deseas dirigir parte del tráfico de tu aplicación al dispositivo Wi-Fi y parte a Internet a través de la red móvil:

Ahora puedes mantener conectados a tus usuarios mientras aprovechan los beneficios de tus productos innovadores compatibles con Wi-Fi.

Publicado por Anthony Morris, SWE Google Play 
Con la instalación de más de 65 mil millones de aplicaciones por parte de los usuarios de Android desde la Google Play Store durante el último año, Google Play continúa creciendo rápidamente. También observamos que los desarrolladores comienzan a actualizar sus aplicaciones con mayor frecuencia para incorporar fabulosos nuevos contenidos, aplicar revisiones de vulnerabilidades de seguridad y hacerse eco de los comentarios de los usuarios.
Publicado por Anthony Morris, SWE Google Play 
Con la instalación de más de 65 mil millones de aplicaciones por parte de los usuarios de Android desde la Google Play Store durante el último año, Google Play continúa creciendo rápidamente. También observamos que los desarrolladores comienzan a actualizar sus aplicaciones con mayor frecuencia para incorporar fabulosos nuevos contenidos, aplicar revisiones de vulnerabilidades de seguridad y hacerse eco de los comentarios de los usuarios.

Sin embargo, muchos usuarios muestran sensibilidad ante el volumen de datos que usan, en especial cuando no usan redes Wi-Fi. Google Play investiga la aplicación de mejoras para reducir el volumen de datos transferido en instalaciones y actualizaciones de aplicaciones y, al mismo tiempo, ofrecer más transparencia a los usuarios respecto del costo de los datos.

Continúa leyendo para comprender las actualizaciones y hallar algunos consejos relacionados con maneras de optimizar el tamaño de tu APK.

Nuevo algoritmo delta para reducir el tamaño de las actualizaciones de aplicaciones


En aproximadamente el 98% de las actualizaciones de la Play Store, solo los cambios (deltas) para los archivos APK se descargan y se combinan con los archivos existentes. Esto reduce el tamaño de las actualizaciones. Recientemente implementamos un algoritmo delta (bsdiff), que reduce las revisiones hasta en un 50% o más en comparación con el algoritmo anterior. Bsdiff está pensado específicamente para producir algoritmos delta más eficaces con bibliotecas nativas aprovechando las maneras específicas en que se modifica el código nativo entre una versión y otra. Para ser más eficaces, las bibliotecas nativas deben almacenarse descomprimidas (la compresión obstaculiza los algoritmos delta).

Un ejemplo de Chrome:

Descripción de la revisiónTamaño de la revisión anteriorTamaño de Bsdiff
Actualización importante de M46 a M4722,8 MB12,9 MB
Actualización menor de M4715,3 MB3,6 MB

En el caso de las aplicaciones cuyas bibliotecas no están comprimidas, se observa una reducción promedio del 5% en el tamaño en comparación con el algoritmo delta anterior.

Aplicación del algoritmo delta a archivos de expansión de APK para reducir más el tamaño de actualización


Los archivos de expansión de APK te permiten incluir archivos adicionales grandes de hasta 2 GB de tamaño (p. ej., archivos de gráficos o multimedia de alta resolución) en tu aplicación, una alternativa de particular popularidad en los juegos. Recientemente, expandimos nuestros algoritmos delta y de compresión para aplicarlos a estos archivos de expansión de APK además de los APK. Esto redujo el tamaño de descarga de las instalaciones iniciales en un 12% y el de las actualizaciones en un 65% en promedio.

Información más clara acerca del tamaño en la Play Store


Además de las mejoras para reducir el tamaño de descarga, también hicimos que fuera más clara la información sobre los datos usados y los tamaños de descarga en la Play Store. En esta, ahora podrás ver los tamaños de descarga reales en lugar del tamaño de los archivos APK. Si ya dispones de una aplicación, solo verás el tamaño de actualización. La implementación de estos cambios se encuentra en curso.




Ejemplo 1: Visualización del nuevo “Tamaño de descarga” de APK.




Ejemplo 2: Visualización del nuevo “Tamaño de actualización” de APK.


Consejos para reducir los tamaños de descarga


1. Aplica optimizaciones para obtener mediciones de tamaño correctas: a los usuarios les importan el tamaño de descarga (la cantidad de bytes que se transfieren al instalar o actualizar una aplicación) y el espacio en disco (la cantidad de espacio que la aplicación ocupa en este). Es importante observar que estos no equivalen al tamaño original del archivo APK y que tampoco guardan correlación necesariamente.

Ejemplo de Chrome:
Biblioteca nativa comprimidaBiblioteca nativa no comprimida
Tamaño del APK39 MB52 MB (+25%)
Tamaño de descarga (instalación)29 MB29 MB (sin cambios)
Tamaño de descarga (actualización)29 MB21 MB (-29%)
Espacio en disco71 MB52 MB (-26%)


En Chrome, descubrieron que el tamaño de descarga inicial se conserva al no comprimir la biblioteca nativa de su APK, mientras que el tamaño del APK aumenta porque Google Play aplica compresión para las descargas. También descubrieron que el tamaño de actualización se reduce, ya que los algoritmos delta son más eficaces con archivos no comprimidos, y que el espacio en disco se reduce porque ya no necesitas una copia de la biblioteca nativa:

2. Reduce el tamaño de tu APK: elimina datos innecesarios del APK, como recursos y código que no se usen.

3. Optimiza partes de tu APK para hacerlas más pequeñas: puedes hacerlo empleando formatos de archivo más eficaces; por ejemplo, WebP en lugar de JPEG. También puedes aplicar Proguard para eliminar código que no se use.
Obtén más información sobre la reducción de tamaños de APK y mira la sesión “Putting Your App on a Diet” (haz que tu aplicación pierda peso) de I/O 2016, para aprender a reducir el tamaño de tu APK de la mano de Wojtek Kaliciński.

Publicado por Megan Boundey, Gerente de producto, API de Google Maps para móviles ...
Publicado por Megan Boundey, Gerente de producto, API de Google Maps para móviles

Hoy agregamos agrupación de marcadores a la biblioteca de utilidades del Google Maps SDK for iOS. La muy solicitada función ahora se encuentra disponible para iOS, además de Android y JavaScript.

¿Alguna vez te dio la impresión de que en tu mapa hay demasiados marcadores, y de que por ello parece sobrecargado y difícil de comprender? ¿Deseas mostrar las ubicaciones de los restaurantes populares de tu ciudad, pero que tu mapa se vea despejado?

La agrupación de marcadores te ayudará a hacerlo. A medida que los niveles de zoom del mapa cambian, puedes agregar marcadores para indicar con claridad a tus usuarios la ubicación exacta de esos restaurantes. Cuando el usuario acerque la imagen, los marcadores se separarán hasta que todos se muestren de manera individualizada.



La nueva función de agrupación de marcadores de la biblioteca de utilidades del Google Maps SDK for iOS puede aplicarse a través de un proceso sencillo de 4 pasos:

  • agregar “Google-Maps-iOS-Utils” a tu Podfile;
  • crear una instancia de GMUClusterManager;
  • implementar el protocolo GMUClusterItem para tus objetos de marcador;
  • agregar los objetos de marcador al administrador de clústeres.

Proporcionamos el algoritmo predeterminado, el representador y el generador de íconos para ayudarte a hacer esto. A su vez, puedes personalizar por completo cada uno de estos elementos extendiendo las implementaciones predeterminadas o proporcionando tu propia implementación de estos protocolos: GMUClusterAlgorithm, GMUClusterRenderer, GMUClusterIconGenerator.

Observa la documentación y los ejemplos de demostración, y comienza a usar la agrupación de marcadores en la biblioteca de utilidades del Google Maps SDK for iOS hoy.

Publicado por Laurence Moroney, Developer Advocate de Google


En Google I/O, tuve la oportunidad de presentar la sesión “Building geo services that scale” (cómo crear servicios geográficos que se adapten). Me complace compartirla de manera más extensiva con aquellos de ustedes que no pudieron estar presentes ...
Publicado por Laurence Moroney, Developer Advocate de Google


En Google I/O, tuve la oportunidad de presentar la sesión “Building geo services that scale” (cómo crear servicios geográficos que se adapten). Me complace compartirla de manera más extensiva con aquellos de ustedes que no pudieron estar presentes:


Cómo crear servicios geográficos que se adapten
No todas las aplicaciones geográficas y de mapas funcionan por completo en sus dispositivos móviles. Tal vez deseen proteger sus claves u otros datos de acceso de API contra ingeniería inversa subiéndolos a la nube, o tal vez cuenten con lógica de negocios personalizada que ejecuten en sus servidores y no quieran distribuir a través de plataformas móviles. Para proteger sus claves y datos de acceso de API, deberán poner en funcionamiento alguna clase de servicio. En esta sesión, aprenderán a crear un servicio como este en la plataforma de Google Cloud y a implementarlo en una aplicación en la que se usen las Google Maps API.
DSC_3206 (1).jpg

Esta publicación fue publicada originalmente en Medium por Malte Ubl, líder tecnológico del proyecto AMP.


Esta es la historia sobre cómo AMP construyó u ...
Esta publicación fue publicada originalmente en Medium por Malte Ubl, líder tecnológico del proyecto AMP.


Esta es la historia sobre cómo AMP construyó un primer ecosistema basado en la experiencia del usuario para la publicidad en la web.
Una gran parte de mi trabajo en el proyecto AMP ha consistido en abordar discusiones en Twitter y en nuestro GitHub sobre lo que es AMP, qué debería hacer y si está haciendo las cosas de manera correcta. A menudo, estas discusiones eventualmente llegan al punto donde alguien dice:

“Genial, hace que el contenido sea más veloz pero, ¿qué pasa con los anuncios? Acaso ¿no son estos los que más afectan el tiempo de carga de una página?”


El principal objetivo de AMP era mejorar la experiencia del usuario en el mayor contenido de la Web como fuera posible. Esto significaba que no podíamos construir un sistema idealista. Los métodos de monetización existentes necesitarían ser compatibles para obtener la gran aceptación que mejoraría la experiencia del usuario. En la Web de hoy esto significa: AMP debería ser compatible con la publicidad.
Aprendí mucho sobre la publicidad en Internet en los primeros meses trabajando en AMP, y una de estas cosas era que la industria de publicidad en la Web no cambia muy rápido. De hecho, mirando muchos de los JavaScript relacionados con anuncios en la Web, no se pueden evitar frecuentes recuerdos de la década de los 90.
Esto llevó al compromiso de diseño en AMP: Ser compatible con la publicidad web de herencia, pero hacerlo de una manera que mitigara el impacto en las páginas donde estuviera incorporado. Para lograr este objetivo, AMP utiliza las siguientes técnicas:
  • Primero el contenido. AMP carga los anuncios después del resto del contenido, de tal forma que los anuncios no reducen el tiempo de carga.
  • Contención. AMP administra de manera estricta el área de la página que los anuncios pueden acceder y controlar a un rectángulo muy bien definido. Entre otras cosas esto evita que las páginas “salten de un lado a otro” a medida que aparecen los anuncios.
  • Mitigación. AMP mitiga varias malas prácticas de JavaScript que comúnmente se encuentran en la tecnología de anuncios como `document.write`, limitando su efecto en el anuncio mismo vs. la página completa.
  • Intervención. AMP reduce el tiempo que usan las animaciones para los anuncios que no son visibles actualmente, de tal modo que los anuncios usan una menor cantidad de batería y CPU cuando no se ven. Firefox, Safari, Opera y Chrome han empezado a hacer esto de manera predeterminada y estamos dispuestos a eliminar el código cuando se dé a conocer a más usuarios. Dado que en AMP todos los anuncios heredados se ejecutan dentro de iframes (muchos anuncios fuera de AMP tienen acceso a la página host), estas nuevas intervenciones del navegador funcionan particularmente bien en AMP.


Estas medidas, junto con las optimizaciones agresivas de AMP para el contenido general de la web, mejoran significativamente el tiempo de carga de la página y mitigan los efectos de los anuncios en la experiencia del usuario. En particular, el hecho de que el contenido siempre se carga de primera, garantiza que los anuncios nunca interrumpirán a los usuarios en lo que buscan en la página.
Sin embargo, existen límites en la fidelidad que se puede obtener con la aproximación que hemos tomado hasta ahora. Esto comienza con lo obvio: Retrasar la carga de un anuncio después del contenido puede ser un buen compromiso, pero está lejos de ser la mejor estrategia que se pueda emplear para controlar de la mejor manera el ciclo de vida de un anuncio. Pero el mayor problema, que AMP no ha solucionado por el momento, es lo que llamamos el problema de coordinación.



El problema de coordinación

Fuente: Daniel Stockman, Licencia: CC BY-SA 2.0

Una de las mayores fortalezas de la Web es que tiene un modelo de composición súper flexible. Esto permite un ensamble a la medida y fácil de cosas como los videos de YouTube, posteos en Instagram, tuits y anuncios en una sola página. Pero mientras que la composición es simple, todos estos componentes comparten un solo hilo para la computación de JavaScript y la mayoría de las operaciones IU. Es aquí donde el problema de coordinación entra en el juego: Mientras que cada componente por separado puede trabajar muy bien, las cosas se pueden deteriorar a una mala experiencia del usuario cuando se ensamblan juntos.


Esto es un problema frecuente de los anuncios. Por ejemplo, es muy fácil concebir tres anuncios que usen 6 ms de CPU por cuadro cada uno para sus animaciones. Esto es genial. Es muy fácil mantenerse dentro del presupuesto de cuadros para conseguir los 60 cuadros por segundo (o 16 ms tiempo total de cuadros). Pero cuando estos anuncios aparecen juntos en la misma página, de repente necesitan 18 ms por cuadro y el navegador no puede ofrecer la misma experiencia fluida de 60 cuadros por segundo.
Este es el problema de coordinación: Incluso los anuncios que están perfectamente diseñados, cuando se juntan, impactan de manera negativa la experiencia del usuario.
Finalmente, incluso cuando se ignora lo que hemos dicho arriba, hay muchas cosas que se pueden hacer para mejorar la calidad general de los anuncios creativos desde el punto de vista de su impacto en la experiencia del usuario. AMP se creó como un camino simple para crear documentos en la Web con un buen rendimiento, y sería genial hacer el mismo salto hacia adelante para la publicidad en la Web.

AMP para anuncios


Al inicio de este año, un equipo de Google se hizo esta pregunta:

“AMP funcionó muy bien para el contenido general. ¿Podríamos usarlo para los anuncios?”
... y eso fue lo que hicieron. Estos anuncios basados en AMP son documentos de AMP válidos y normales, que también son anuncios creativos. Esto me emociona porque ofrece un camino para resolver todos los desafíos técnicos mencionados anteriormente, llevándonos a un ecosistema más saludable en términos técnicos en Internet.
AMP es aún muy joven para los anuncios, o A4A, pero después de anunciar hace unas semanas el esfuerzo en GitHub, el equipo ha unido sus solicitudes en AMP y está en el proceso de establecer un experimento en vivo. AMP continuará siendo compatible con anuncios creativos que no sean AMP para permitir una transición gradual del ecosistema más amplio.

Separar las solicitudes de anuncios de la reproducción de anuncios


La primera innovación en A4A parece muy obvia en retrospectiva, pero tiene una gran impacto: Como se menciona anteriormente, AMP carga de manera predeterminado los anuncios después del contenido y lo hace generalmente lentamente. Esto ocurre porque reproducir los anuncios puede ser muy costoso en términos de CPU y RAM. Sin embargo, la solicitud misma de los anuncios puede ser lenta, porque se tiene que hacer mucho trabajo (piensa: la subasta) en el servidor. No es conveniente hacerlo tarde para obtener tiempos de carga rápidos. Desde la perspectiva del cliente, hacer la solicitud es muy barato, pero su efecto secundario (la reproducción del anuncio) es costoso. Separando los dos, A4A consigue una reproducción de anuncios más rápida sin un costo adicional de CPU y memoria.

A4A_Good3G_v02 (1)
Este es un video de ejemplo de las mejoras en el rendimiento que ofrece A4A en anuncios simples.

Profundizando: Subconjunto restringido de AMP

Uno de los elementos principales de AMP es que se envía con un validador que verifica el cumplimiento de los documentos de AMP con ciertas reglas. La ideas es: Si se cumplen las reglas, el documento se cargará más rápido. El conjunto de reglas que diseñamos para AMP tiene un conjunto más amplio de tipos de documentos y utiliza casos en ese sentido. Por otro lado, los anuncios creativos son un caso de uso mucho más enfocado y por lo tanto no requieren la misma amplitud de funcionalidad que tiene AMP. Por esta razón, AMP para anuncios recoge cuidadosamente los aspectos de AMP que se requieren para crear anuncios creativos. Un ejemplo es que AMP basado en anuncios no podrá cargar iframes con un JavaScript arbitrario.
Comparando esto con el estado actual de la tecnología de anuncios: los anuncios creativos normalmente tienen el control total sobre el navegador y pueden cargar dinámicamente más código durante el tiempo de ejecución, por lo tanto es imposible saber lo que realmente harán. Por otro lado, AMP basado en creatividad tendrá un comportamiento definido y estadísticamente analizable manteniendo el acceso a la gran mayoría de la funcionabilidad de la plataforma web.
En el momento AMP está siendo optimizado para documentos y aún necesita muchos tipos de componentes para acoplar los anuncios. El equipo está trabajando arduamente para cerrar los vacíos de la aplicación. Un ejemplo es que AMP para anuncios se enviará con un componente para animaciones basadas en líneas de tiempo interactivas y fluidas.

Reutilizar AMP

Frecuentemente los anuncios vienen con su propio conjunto de herramientas de medición para recolectar información importante como por ejemplo si el anuncio ha sido visto por el usuario. Esto aumenta sustancialmente el tamaño de la carga del anuncio, la compilación inicial y el tiempo de ejecución, uso de la batería y otros aspectos del rendimiento del tiempo de ejecución.
A través de su mecanismo de `amp-analytics` establecido, AMP ya viene con todo el código para realzar todas estas medidas. Es neutral con los vendedores y es compatible con una gran variedad de métricas. Esto significa que los anuncios pueden aprovechar la misma característica “Instrumentar una vez, reportar muchas veces” que beneficia las páginas de AMP de hoy, eliminando completamente el costo del ancho de banda y el tiempo de ejecución mencionado anteriormente.

La solución de coordinación


coordinada
Fuente: Daniel Stockman, Licencia: CC BY-SA 2.0

Los anuncios basados en AMP participarán en el diseño de la página como todos los otros recursos de AMP. Esto significa que aprovecharán automáticamente las características de AMP para minimizar el impacto del recurso en el rendimiento del tiempo de ejecución.
En particular, AMP solo anima las cosas que son visibles en la pantalla. Punto. Mientras que los navegadores están trabajando para conseguir esto a nivel de la plataforma, necesitan ser conservadores para no romper los casos de usos existentes. AMP para los anuncios nuevos y para la tecnología para propósitos especiales, puede determinar la posición cuando las animaciones se necesitan y por lo tanto puede reducir aún más el uso de CPU y el consumo de batería.
AMP actuará como un supervisor para los anuncios y asegurará que no afecten de manera negativa el contenido principal de la página. Las animaciones basadas en A4A serán aminoradas para reducir pero mantener uniforme la tasa de cuadros cuando AMP detecte que 60 cuadros por segundo no se pueden lograr en el dispositivo actual. Del mismo modo, si AMP no puede estabilizar la tasa de cuadros, desactivará las animaciones. Esto asegura que todos los dispositivos obtengan la misma experiencia que puedan ofrecer y asegura de que los anuncios no puedan tener un impacto negativo en aspectos importantes de la experiencia del usuario como desplazarse por la página.

Cruce de plataformas

Como parte del proyecto AMP, AMP para anuncios es una iniciativa neutral hacia el vendedor. Mientras que todavía estamos en la fase temprana de experimentación e implementación, la tecnología está diseñada para ser compatible con todas las redes de anuncios. Si trabajas en una tecnología de anuncios, saluda a GitHub. Creemos que A4A es una gran paso hacia la experiencia del usuario y nos gustaría ver una gran aceptación en toda la industria de la publicidad en Internet.

Esto es lo que estamos haciendo con los anuncios:

Aún es muy temprano y apenas estamos comenzando a explorar el uso de AMP para anuncios.
En el futuro
  • los anuncios serán estadísticamente analizables para ser seguros y para que se comporten de manera correcta
  • podrán usar un conjunto común de funcionalidades para reducir significativamente el consumo del ancho de banda,
  • El uso de CPU será limitado para los anuncios en la pantalla, mejorando la vida de la batería,
  • y los anuncios serán coordinados con la página asegurándose de que el contenido y la funcionalidad primaria pueda fluir a 60 cuadros por segundo.
Estamos intentando construir un primer ecosistema basado en la experiencia del usuario para la publicidad en la Web y teniendo en cuenta el éxito de AMP en publicidad, también puede funcionar.



Publicado por Hoi Lam, Developer Advocate de Android Wear
En Google I/O 2016, lanzamos la Developer Preview de Android Wear 2.0, que permite a los desarrolladores acceder antes a la próxima versión importante de Android Wear. Desde que Google I/O existe, los comentarios de la comunidad de desarrolladores nos han ayudado a identificar errores y marcar el rumbo de nuestros productos. ¡Gracias ...
Publicado por Hoi Lam, Developer Advocate de Android Wear
En Google I/O 2016, lanzamos la Developer Preview de Android Wear 2.0, que permite a los desarrolladores acceder antes a la próxima versión importante de Android Wear. Desde que Google I/O existe, los comentarios de la comunidad de desarrolladores nos han ayudado a identificar errores y marcar el rumbo de nuestros productos. ¡Gracias!

Hoy lanzaremos la segunda versión preliminar para desarrolladores con nuevas funcionalidades y correcciones de errores. Antes de la versión para consumidores planeamos lanzar actualizaciones adicionales, así que envíanos tus comentarios con anticipación y frecuencia. Ten en cuenta que esta versión preliminar está en desarrollo y aún no está pensada para uso diario.

Novedades

  • API de plataforma 24: aumentamos el número de versión de la API de plataforma de Android hasta 24 para que coincidiera con la de Nougat. Ahora puedes actualizar compileSdkVersion de tus proyectos de la Preview de Android Wear 2.0 a la API 24. También te recomendamos actualizar targetSdkVersion a la API 24.
  • Mejoras en los paneles laterales de wearables: lanzamos los paneles laterales como parte de la Preview 1 de Android Wear 2.0, y también pautas de experiencia de usuario (XU) relacionadas con la mejor manera de integrar el panel lateral de navegación y el panel de acción en tu aplicación de Android Wear. En la Preview 2, agregamos soporte adicional para inspección de paneles laterales de wearables, a fin de facilitar el acceso a estos paneles por parte de los usuarios durante el desplazamiento. Entre otras mejoras en materia de IU, se incluyen la vista de inspección y el cierre de paneles laterales automáticos, y también la visualización de la primera acción en la vista de inspección de WearableActionDrawer. Para los desarrolladores que deseen hacer paneles laterales de wearables personalizados, agregamos atributos peek_view ydrawer_content a WearableDrawerView. Por último, el contenido de los paneles laterales de navegación ahora puede actualizarse llamando a notifyDataSetChanged.
  • Gestos de muñeca: desde el año pasado, los usuarios han podido explorar el flujo de notificaciones con gestos de muñeca. Ahora hemos abierto este sistema a los desarrolladores para el uso dentro de sus aplicaciones. Esto ayuda a mejorar el manejo con una mano, y sirve en situaciones en las cuales los usuarios deban usar la otra para sujetar bolsas de compras o la mano de sus niños. Para dar los primeros pasos con tu aplicación, consulta el siguiente ejemplo de código:
 public class MainActivity extends Activity {  
   ...    
   @Override /* KeyEvent.Callback */  
   public boolean onKeyDown(int keyCode, KeyEvent event) {  
     switch (keyCode) {  
       case KeyEvent.KEYCODE_NAVIGATE_NEXT:  
         Log.d(TAG, "Next");  
         break;  
       case KeyEvent.KEYCODE_NAVIGATE_PREVIOUS:  
         Log.d(TAG, "Previous");  
         break;  
     }  
     // If you did not handle, then let it be handled by the next possible element as deemed by  
     // Activity.  
     return super.onKeyDown(keyCode, event);  
   }  
 }  



¡Pon manos a la obra y envíanos tus comentarios!



En la Developer Preview de Android Wear 2.0, se incluye un SDK actualizado con herramientas e imágenes de sistema para realizar pruebas en el emulador oficial de Android, el LG Watch Urbane 2nd Edition LTE y el Huawei Watch.

Para comenzar, sigue estos pasos:

Haz un recorrido en video de la Developer Preview de Android Wear 2.0.
Realiza una actualización a Android Studio v2.1.1 o una versión posterior.
Visita el sitio de la Developer Preview de Android Wear 2.0 para acceder a descargar y documentación.
Obtén las imágenes de sistema del emulador mediante SDK Manager o descarga las imágenes de sistema de dispositivos de la página de descargas de versiones preliminares para desarrolladores.
Prueba tu aplicación con tu emulador o dispositivo compatible.
Envíanos tus comentarios.


Actualizaremos esta versión preliminar para desarrolladores durante los próximos meses conforme a tus comentarios. Cuanto antes tengamos noticias tuyas, más contenido podremos integrar a la versión final. ¡No dudes en comunicarte!

Publicado por Laurence Moroney, Developer Advocate



Google Cloud Messaging es una solución multiplataforma que te permite enviar y recibir, de forma gratuita y segura, mensajes y notificaciones a través de Android e iOS. Por ejemplo, puedes especificar la disponibilidad de nuevos datos para sincronización y de ofertas especiales para volver a captar usuarios. Se pueden enviar mensajes a dispositivos individuales o grupos de estos, o incluso a asuntos a los cuales estos están suscritos.
Publicado por Laurence Moroney, Developer Advocate



Google Cloud Messaging es una solución multiplataforma que te permite enviar y recibir, de forma gratuita y segura, mensajes y notificaciones a través de Android e iOS. Por ejemplo, puedes especificar la disponibilidad de nuevos datos para sincronización y de ofertas especiales para volver a captar usuarios. Se pueden enviar mensajes a dispositivos individuales o grupos de estos, o incluso a asuntos a los cuales estos están suscritos.

Los mensajes pueden tener una carga de hasta 4 k y también se pueden enviar en sentido ascendente desde los dispositivos hasta un servidor central u otros dispositivos.

Firebase Cloud Messaging es el sucesor de Google Cloud Messaging.Aquí podrás obtener información detallada sobre tus opciones si usas Google Cloud Messaging.

Hemos proporcionado algunos ejemplos excelentes en caso de que desees comenzar a crear aplicaciones en las que se use Firebase Cloud Messaging. También puedes seguir los recorridos para Android, iOS o laWeb.


Publicado por Laurence Moroney, Representante de desarrolladores

Junto con el anuncio de la expansión de Firebase, recientemente en Google I/O, también presentamos Firebase Cloud Messaging (FCM) y Firebase Notifications (FN). Existen muchísimas actualizaciones que, como desarrollador, podrías aprovechar.

Publicado por Laurence Moroney, Representante de desarrolladores

Junto con el anuncio de la expansión de Firebase, recientemente en Google I/O, también presentamos Firebase Cloud Messaging (FCM) y Firebase Notifications (FN). Existen muchísimas actualizaciones que, como desarrollador, podrías aprovechar.
A pesar del cambio a FCM, continuaremos ofreciendo compatibilidad con Google Cloud Messaging en Android, iOS y la Web porque sabemos que tienes aplicaciones en las que se usan SDK anteriores para el manejo de notificaciones. Sin embargo, todas las funciones nuevas del lado del cliente se agregarán a los SDK de FCM en adelante. En virtud de esto, te recomendamos mucho realizar una actualización a estos SDK. Puedes obtener más información sobre ellos aquí.

FCM admite todo lo que conoces a través de Google Cloud Messaging, como la orientación hacia dispositivos individuales o grupos de estos, o hacia asuntos.

El SDK de FCM simplifica el desarrollo de clientes. Por ejemplo, ya no tienes que escribir tu propia lógica de reintento de registro o suscripción. En el caso de tu servidor (si aún deseas usar uno), las actualizaciones de los puntos finales y del protocolo no producirán cambios drásticos a fin de mantener la compatibilidad con versiones anteriores. Los detalles actualizados se encuentran disponibles en la documentación del servidor de FCM.

Estamos haciendo un gran esfuerzo para que Firebase se convierta en nuestra plataforma móvil unificada. También continuaremos expandiendo nuestra plataforma de mensajería más allá de Android para incluir iOS y la Web. Firebase es reconocida por sus capacidades multiplataforma. Por ello, FCM es un complemento natural para las versiones sucesivas de Firebase. Si deseas aprender a migrar tu aplicación actual de Google Cloud Messaging a FCM, aquí ofrecemos guías para Android e iOS.

Pensamos que Google Cloud Messaging será aún más útil para ti cuando se integre a Firebase, al incluirse la consola de Firebase Notifications. Gracias a esto podrás enviar mensajes a aplicaciones directamente desde la consola, sin necesidad de crear un servidor de mensajería.

Si deseas realizar la actualización de Google Cloud Messaging a FCM u obtener más información, consulta nuestras guías para aplicaciones de Android e iOS.

Roy Glasberg, Director mundial, Launchpad y Launchpad Accelerator 
La segunda cohorte de  Launchpad Accelerator, el programa mundial de alta tecnología de Google para startups en etapas avanzadas, llegó el mes pasado y permitió superar los desafíos de la empresa con la ayuda de asesores de la sede central de Google.
Roy Glasberg, Director mundial, Launchpad y Launchpad Accelerator 
La segunda cohorte de Launchpad Accelerator, el programa mundial de alta tecnología de Google para startups en etapas avanzadas, llegó el mes pasado y permitió superar los desafíos de la empresa con la ayuda de asesores de la sede central de Google.

¿Qué conocimientos desearía compartir la empresa con los desarrolladores de todo el mundo? Mira el siguiente video para encontrar soluciones de 3 startups diferentes y una revisión en profundidad del desafío web móvil y de la solución de MagicPin.


Startup: 

MagicPin, de la India, es una aplicación para redes sociales que evalúa una base de usuarios locales en diferentes ubicaciones y permite que los comerciantes se conecten con estos públicos específicos.

Desafío web móvil:

En la India, para descargar una aplicación se necesita un alto nivel de compromiso. En promedio, un usuario tiene entre 5 y 6 aplicaciones en su teléfono. Según Anshoo Sharma, Cofundador y Director ejecutivo de MagicPin, “Si deseas que tu aplicación sea la próxima que este público descargue, la exigencia es alta”.

Jordan Adler, Developer Advocate de Google: “Los dispositivos de los mercados como la India tienen un espacio limitado (128 MB de memoria en promedio) y cuando se agregan funciones de sistema solo quedan 40 bytes de espacio para los usuarios. Y si los APK convencionales ocupan megabytes, tras la instalación de unas pocas aplicaciones será necesario suspender las descargas”.

Solución: 

Jordania Adler: “Uno de los aspectos fabulosos de las aplicaciones web progresivas es que no se debe solicitar el compromiso (de descargar una aplicación) de antemano. Puedes comenzar a entablar una relación con el usuario a través de la interfaz web, y con el tiempo la aplicación web puede convertirse en algo más similar a una aplicación nativa, alojarse en un dispositivo, almacenar contenido en memoria caché y funcionar sin conexión”.

Anshoo Sharma: “En nuestra última semana y media aquí, ya hemos lanzado una microversión de nuestra plataforma en aplicaciones web progresivas. ¡La experiencia ha sido excelente! Sin usar la aplicación (móvil), puede acceder a una experiencia igualmente positiva”.

Acerca de Launchpad Accelerator

Launchpad Accelerator es una herramienta aceleradora de seis meses de duración que permite la expansión exitosa de startups de aplicaciones en etapas avanzadas en mercados emergentes. A continuación, se ofrece un video de dos minutos sobre el acelerador.

Las experiencias publicitarias en plataformas móviles evolucionan rápidamente y ofrecen a los desarrolladores una amplia variedad de formatos de anuncios, a fin de ayudarlos a ganar dinero con sus aplicaciones. Ahora, así se encuentren con un dispositivo móvil en la parada del autobús, disfrutando un rato libre en casa o en innumerables situaciones diferentes, los consumidores tendrán la misma posibilidad de disfrutar de un anuncio de video y de hacer clic en un anuncio intersticial para ver un producto que atraiga su interés.
Publicado por Pasha Nahass, Gerente de producto, anuncios para aplicaciones móviles

Las experiencias publicitarias en plataformas móviles evolucionan rápidamente y ofrecen a los desarrolladores una amplia variedad de formatos de anuncios, a fin de ayudarlos a ganar dinero con sus aplicaciones. Ahora, así se encuentren con un dispositivo móvil en la parada del autobús, disfrutando un rato libre en casa o en innumerables situaciones diferentes, los consumidores tendrán la misma posibilidad de disfrutar de un anuncio de video y de hacer clic en un anuncio intersticial para ver un producto que atraiga su interés.

Sin embargo, las pantallas móviles son pequeñas. Cualquier contenido cuyo diseño sea deficiente o aparezca en la aplicación cuando un usuario menos lo espere puede hacer que este se desilusione. Lo mismo se aplica a los anuncios. La publicidad nativa surgió como una alternativa para crear una experiencia más fluida en dispositivos móviles, en la cual los anuncios coincidan con el aspecto del diseño de una aplicación. La idea no es nueva, pero no había estado al alcance de todos los desarrolladores. Muchas de las soluciones de anuncios actuales requieren recursos significativos y pueden convertirse en una carga continua difícil de escalar. ¿A quién le agrada escribir códigos extensos para anuncios en lugar de dedicarse a compilar la próxima función exitosa de su aplicación?

Deseamos hacer que los anuncios sean mejores para los desarrolladores. Por ello, hoy nos complace anunciar el lanzamiento completo de AdMob Native Ads Express, un método más sencillo para implementar anuncios nativos en aplicaciones. A continuación se muestran las razones por las cuales Native Ads Express es especial:
  • Dar los primeros pasos es muy sencillo. Elige una entre muchas plantillas predefinidas diferentes que hay disponibles en la interfaz de Native Ads Express, personalízala y obtén un anuncio nativo de excelente aspecto en menos de 5 minutos. Esto explica la presencia de la palabra “Express” en el nombre. El código que implementes en tu aplicación conservará una extensión mínima, la misma que usarías para solicitar un anuncio de banner.
  • Los anuncios se publican al instante. Puedes publicar anuncios nativos el mismo día que comiences a crearlos (no bien se apruebe tu aplicación en las tiendas de aplicaciones). Nuestra tecnología inteligente valida tu personalización del anuncio para garantizar que cumpla con nuestras pautas y brinde una buena experiencia a tus usuarios.
  • Se pueden aplicar optimizaciones a gusto. Aplica personalización, ajustes y modificaciones de diseño en Native Ads Express a través de la interfaz de AdMob. Luego obtén una vista previa de los cambios y libera tu Ad Unit nativa sin reescribir el código de una aplicación. La optimización ya no es una tarea que exija mucho tiempo. Por lo tanto, podrás encontrar fácilmente el anuncio nativo de mejor rendimiento para tu aplicación. Algunos editores que usan la versión beta de Native Ads Express observaron una tasa de clics (CTR) 4 veces superior a la de otros formatos de anuncios en la misma aplicación.

Cómo usar la interfaz de Native Ads Express para seleccionar el tamaño de un anuncio y personalizar sus colores



Los desarrolladores con millones de usuarios, como Linghit Limited y Cheetah Mobile, ya han tenido éxito con los anuncios nativos de AdMob. Linghit Limited necesitaba un método para monetizar su aplicación del calendario chino, Shunli, y al mismo tiempo seguir brindando la excelente experiencia de usuario por la que esta es reconocida. La empresa implementó AdMob Native Ads Express y logró un aumento del 100% en sus ingresos diarios, y del 114% en las impresiones de anuncios.

“Los anuncios nativos son más intuitivos. Por ello, los mostramos en posiciones más destacadas dentro de las aplicaciones. Pudimos ver los efectos de las tasas de clics de los usuarios en tiempo real según la información del backend de anuncios. También pudimos realizar ajustes rápidos en los anuncios nativos para maximizar el efecto de estos”.
Jinnee Lee, Vicepresidenta, Linghit Limited

Cheetah Mobile implementó AdMob Native Ads Express en su popular aplicaciónBattery Doctor y cuadruplicó sus ingresos.



AdMob Native Ads Express en la aplicación Battery Doctor de Cheetah Mobile
Mira estos estudios de caso en video para obtener más información sobre la manera en que Linghit Limited y Cheetah Mobile monetizaron sus aplicaciones con anuncios nativos. Si aún no planeas mostrar anuncios nativos, aquí podrás ver la manera de comenzar a usar Native Ads Express.

También nos entusiasma comunicar que AdMob se usa actualmente en más de 1 millón de aplicaciones. Es motivo de enorme satisfacción para nosotros saber que los desarrolladores de iOS y Android confían en AdMob para crear y monetizar aplicaciones que a los usuarios les encantarán. En el caso de los anunciantes de Google, nuestra amplia red de aplicaciones permitirá llegar a más clientes potenciales cuando estos dediquen tiempo a sus dispositivos móviles.