En Google, creemos en la velocidad como principio fundamental para el diseño de productos. El formato Accelerated Mobile Pages (AMP) permite garantizar que el contenido se cargue de manera rápida y confiable, pero se pueden obtener resultados aún mejores.

Publicado por Huibao Lin y Eyal Peled, ingenieros de software, Google


En Google, creemos en la velocidad como principio fundamental para el diseño de productos. El formato Accelerated Mobile Pages (AMP) permite garantizar que el contenido se cargue de manera rápida y confiable, pero se pueden obtener resultados aún mejores.

El almacenamiento inteligente en caché es uno de los ingredientes claves en las experiencias de AMP casi instantáneas a las que acceden los usuarios en productos como Búsqueda de Google y Google Noticias y clima. Gracias al almacenamiento en caché, podemos acercar, en general, el contenido a los usuarios que lo solicitan, de modo que la trayectoria de los bytes para llegar a ellos sea más corta. A su vez, el uso de una infraestructura común como la memoria caché proporciona una mayor uniformidad en los tiempos de procesamiento de páginas a pesar de que el contenido se origina en muchos hosts, que podrían ofrecer una latencia muy diferente (y mucho mayor) al procesar el contenido en comparación con la caché.

Las páginas procesadas en la experiencia de AMP de Búsqueda de Google provienen de Google AMP Cache principalmente porque la entrega es más rápida y uniforme. La infraestructura unificada de procesamiento de contenido de Cache brinda la atractiva posibilidad de crear optimizaciones que se ajusten para mejorar la experiencia en el procesamiento de cientos de millones de documentos. Hacer esto de modo que cualquier documento pueda aprovechar estos beneficios es una de las razones principales por las cuales Google AMP Cache se encuentra disponible de manera gratuita para cualquier usuario.

En esta entrada, destacaremos dos mejoras que introdujimos recientemente: (1) la entrega optimizada de imágenes y (2) la posibilidad de que el contenido se procese mejor en condiciones de restricción de ancho de banda a través de un proyecto llamado “AMP Lite”.

Optimizaciones de imágenes a través de Google AMP Cache


En promedio, las imágenes en la Web representan el 64% de los bytes de una página. Esto convierte a las imágenes en un objetivo muy promisorio para la aplicación de optimizaciones significativas.

La aplicación de optimizaciones vinculadas a imágenes es una opción eficaz para reducir el tráfico de bytes. Google AMP Cache usa la pila de optimización de imágenes que se emplea en los módulos de PageSpeed y la compresión de datos de Chrome. (Observen que, para realizar las transformaciones mencionadas, Google AMP Cache no tiene en cuenta el encabezado “Cache-Control: no-transform”). Los sitios pueden obtener las mismas optimizaciones en sus orígenes si se instala PageSpeed en sus servidores.

A continuación, se ofrece un resumen con las optimizaciones que aplicamos:

1) Eliminación de datos que son invisibles o resultan difíciles de visualizar
Quitamos los datos de imágenes invisibles para los usuarios, como los metadatos de miniaturas y ubicación geográfica. En el caso de las imágenes JPEG, también reducimos la calidad y las muestras de color si sus valores superan lo necesario. Para ser exactos, reducimos la calidad del formato JPEG a 85 y el valor de las muestras de color a 4:2:0; es decir, una muestra de color cada cuatro píxeles. La compresión de una imagen JPEG hasta una calidad o un valor de muestras de color más altos que estos implica un mayor volumen de bytes, pero resulta difícil notar la diferencia en términos visuales.

Los datos de imagen reducidos posteriormente se someten a una compresión exhaustiva. Descubrimos que estas optimizaciones reducen el volumen de bytes en más de un 40% y, al mismo tiempo, no suponen cambios perceptibles para el ojo del usuario.

2) Conversión de imágenes al formato WebP
Algunos formatos de imagen son más aptos para dispositivos móviles. Convertimos los archivos JPEG a WebP para los navegadores admitidos. Esta transformación reduce en más de un 25% el volumen de bytes sin pérdida de calidad.

3) Adición de srcset
Agregamos “srcset” si no se incluye. Esto se aplica a etiquetas “amp-img” que tienen el atributo “src” y carecen del atributo “srcset”. La operación incluye la expansión de la etiqueta “amp-img” y el redimensionamiento de la imagen a varios tamaños. Esto reduce más el conteo de bytes en dispositivos con pantallas pequeñas.

4) Uso de imágenes de calidad inferior en determinadas circunstancias
Reducimos la calidad de las imágenes JPEG cuando existen indicios de que el usuario lo prefiere o la velocidad de la red en cuestión es muy reducida (como parte de lo que se afirma sobre AMP Lite, a continuación). Por ejemplo, reducimos la calidad de las imágenes JPEG hasta 50 para usuarios de Chrome que activan la extensión Reducir datos. Esta transformación proporciona una reducción adicional de más del 40% en el volumen de bytes de estas imágenes.

En el ejemplo siguiente, se muestran las imágenes antes (izquierda) y después (derecha) de las optimizaciones. La imagen tiene un tamaño original de 241 260 bytes. Después de las optimizaciones 1, 2 y 4, este es de 25 760 bytes. Después de las optimizaciones, el aspecto de la imagen es básicamente el mismo y se logra una reducción del 89% en el volumen de bytes.



AMP Lite para redes de baja velocidad


Muchas personas en todo el mundo acceden a Internet con bajas velocidades de conexión a través de dispositivos con capacidades de memoria RAM reducidas. Además, hemos descubierto que algunas páginas AMP no están optimizadas para estos usuarios que experimentan severas restricciones de ancho de banda. Por ello, Google también lanzó AMP Lite con el propósito de restar un volumen de bytes aún mayor a las páginas AMP para estos usuarios.

Con AMP Lite, se aplican a las imágenes todas las optimizaciones mencionadas. En particular, siempre empleamos niveles de calidad inferiores (consulten el inciso 4, arriba).

A su vez, optimizamos las fuentes externas usando la etiqueta amp-font y fijamos el tiempo de espera de carga de fuentes en 0 segundos, de modo que sea posible mostrar las páginas de inmediato independientemente de que la fuente externa en cuestión se almacene en caché previamente o no.

AMP Lite se implementará para usuarios con restricciones de ancho de banda en varios países, como Vietnam y Malasia, y para quienes tengan dispositivos con capacidad de memoria RAM reducida la implementación se hará en todo el mundo. Tengan en cuenta que estas optimizaciones pueden modificar los detalles sutiles de algunas imágenes, pero no afectarán otras secciones de la página en las que se incluyan anuncios.

* * *

En suma, una vez aplicadas todas las optimizaciones mencionadas observamos una reducción combinada del 45% en el volumen de bytes.
Esperamos lograr aún más avances en el intento por aportar más eficacia al empleo de los datos de los usuarios, a fin de proporcionar experiencias de AMP incluso más rápidas.


En AdMob, sabemos la importancia que tiene la experiencia del usuario cuando se trata de crear una app excelente. Los anuncios no invasivos propician la satisfacción de los usuarios y generan mayores tasas de captación, y creemos que los videos con premio son el siguiente paso en el cumplimiento de las expectativas de los usuarios, lo que garantiza experiencias excelentes. A continuación, se describen tres aspectos de AdMob que pueden ayudarte a mejorar la experiencia del usuario mediante anuncios de video con premio.

En AdMob, sabemos la importancia que tiene la experiencia del usuario cuando se trata de crear una app excelente. Los anuncios no invasivos propician la satisfacción de los usuarios y generan mayores tasas de captación, y creemos que los videos con premio son el siguiente paso en el cumplimiento de las expectativas de los usuarios, lo que garantiza experiencias excelentes. A continuación, se describen tres aspectos de AdMob que pueden ayudarte a mejorar la experiencia del usuario mediante anuncios de video con premio.

1. Uniformidad

Aplicando patrones de experiencia de usuario confiables, establecerás en tus apps puntos de interrupción claros en los cuales los usuarios esperarán ver anuncios atractivos. En lo que respecta a los videos con premio, los anuncios que aparecen en el momento indicado proporcionarán beneficios mutuos para el usuario y el editor. En una app de juego, por ejemplo, probablemente te convenga premiar a tu usuario con vidas adicionales a cambio de que mire un video en un momento en que el juego, de lo contrario, terminaría. Los usuarios te lo agradecerán.

2. Nada de trucos

Los anuncios de video con premio no dejan de ser anuncios. Por ello, es importante hacer que el intercambio de valor entre el usuario y el editor sea transparente. Se presenta a los usuarios una descripción clara de la acción que deben realizar y de lo que obtendrán a cambio, antes de que opten por acceder a la visualización de un video con premio. Y si bien los anunciantes pagan por una instalación, la opción de instalar una app tras mirar un video con recompensa no tiene incentivo: se premia al usuario por ver el mensaje y la acción de instalación es opcional.

3. Captación óptima

Usamos Firebase Analytics para ayudarte a comprender mejor al público. Con Firebase, realizar pruebas A/B es simple y puede garantizar que aproveches al máximo tu intercambio con el usuario. Optimizar el valor de los premios, la frecuencia de los anuncios y la disposición de anuncios en la app contribuye al éxito de una estrategia de premios y a la consecuente satisfacción de los usuarios.



AdMob by Google es una de las principales plataformas de anuncios para dispositivos móviles, en la que confían más de 650.000 aplicaciones en todo el mundo. Si deseas conocer más acerca de AdMob, visita este enlace


¿Ya empezaste a usar los anuncios de video con premio de AdMob, pero crees que podrías aprovecharlos mejor?

Sabemos que puede ser difícil lograr que todo salga bien en el primer intento, por lo que te recomendamos realizar pruebas A/B cuando implementes los anuncios de video con premio en tu app. ¿Por qué? Porque los anuncios de video con premio te ofrecen mucha más flexibilidad, e incluso los cambios más pequeños pueden hacer una gran diferencia en los ingresos de tu aplicación, o darte la tranquilidad de que estás mejorando la experiencia del usuario. Teniendo esto en cuenta, presentamos cuatro pasos que te ayudarán a ejecutar una prueba A/B efectiva.

¿Ya empezaste a usar los anuncios de video con premio de AdMob, pero crees que podrías aprovecharlos mejor?

Sabemos que puede ser difícil lograr que todo salga bien en el primer intento, por lo que te recomendamos realizar pruebas A/B cuando implementes los anuncios de video con premio en tu app. ¿Por qué? Porque los anuncios de video con premio te ofrecen mucha más flexibilidad, e incluso los cambios más pequeños pueden hacer una gran diferencia en los ingresos de tu aplicación, o darte la tranquilidad de que estás mejorando la experiencia del usuario. Teniendo esto en cuenta, presentamos cuatro pasos que te ayudarán a ejecutar una prueba A/B efectiva.

1. Comienza con una hipótesis y un objetivo definidos: Piensa en una sola hipótesis que tenga el mayor potencial para mejorar tu empresa y empieza desde ahí. ¿Dónde debes empezar a realizar pruebas?  Una buena opción son los elementos de diseño de tu plantilla de anuncios y el efecto que pueden tener en la ampliación de la captación de usuarios mediante anuncios. Por ejemplo, si crees que el tamaño de la fuente tiene efecto para la claridad y la captación de usuarios, puedes crear dos variaciones con diferentes tamaños de fuente (10 y 13 pm) para probar métricas claves. Mientras tanto, las métricas claves que deben buscarse son la tasa de clics, los ingresos por anuncios y la tasa de salidas de la app.





Estos son algunos ejemplos de variables que puedes probar:
  • Tamaño de la fuente
  • Tamaño del anuncio
  • Configuración de los premios
  • Ubicación del anuncio dentro de la app

2. Recuerda probar solo una variación a la vez para que la prueba sea verdaderamente A/B: En la etapa de prueba se necesitarán dos variaciones de la pantalla de tu app: la versión actual y tu versión nueva y rediseñada. Cuando crees estas variaciones, el uso de la plataforma de pruebas A/B facilitará el diseño, la ejecución y el control de tus pruebas.

3. Realiza el experimento: Es el momento de probar tus resultados. Configura tu app para que muestre de manera aleatoria la configuración original a la mitad de tus usuarios (es decir, el “grupo de control”) y la segunda variación al otro 50% (el “grupo de experimentación”). Al usar el grupo de control, recolectas datos de referencia para realizar una comparación con los resultados. Sin este, no puedes saber la diferencia entre la respuesta a tus nuevos diseños u otras variables, como las oportunidades de temporada.

4. Toma una decisión: Una vez que el experimento se complete, deberás procesar los datos. Lo primero que debes hacer es revisar tu objetivo e hipótesis iniciales y tomar las decisiones finales muy importantes respecto de si vale la pena modificar la nueva variación. No te apresures en adoptar un nuevo aspecto. Si los cambios son importantes, convendrá realizar el experimento en varios períodos de tiempo para asegurarte de que los resultados no se vean afectados por la estacionalidad u otras variables.

A medida que sigas realizando pruebas, recuerda que incluso con herramientas útiles, las pruebas toman tiempo y recursos. No pierdas tiempo probando elementos que no tendrán un impacto significativo en tu objetivo. Usa los datos de análisis de apps como ayuda para descubrir puntos de tu app que ofrezcan una oportunidad y un potencial muy grandes (imagina, por ejemplo, pantallas con alto tráfico, alta captación o gran abandono de usuarios). Una buena idea puede ser solicitar a un miembro del equipo que dedique el 25% de su tiempo a controlar análisis e identificar ideas para optimizar anuncios y probarlas.





AdMob by Google es una de las principales plataformas de anuncios para dispositivos móviles, en la que confían más de 650.000 aplicaciones en todo el mundo. Si deseas conocer más acerca de AdMob, visita este enlace



Los desarrolladores que usan ...


Los desarrolladores que usan Google Apps Script ahora pueden acceder al conjunto de funciones más completo de la Google Sheets API actualizada, gracias al lanzamiento reciente del servicio de hojas de cálculo avanzadas. Un beneficio clave del uso de un servicio avanzado en comparación con los objetos de Apps Script nativos es que los desarrolladores pueden acceder a funciones de API actuales (sin necesidad de esperar la llegada de la compatibilidad nativa). Por ejemplo, el servicio avanzado permite a los desarrolladores acceder a filtros de Hojas de cálculo que dan mayor atractivo a los complementos.

Funcionalidad de los filtros 

Con la Sheets API, los desarrolladores pueden obtener filas filtradas o configurar nuevos filtros en datos de Hojas de cálculo. Gracias al servicio de hojas de cálculo avanzadas, los desarrolladores ahora pueden hacer que sus complementos respeten esos filtros y apliquen filtros nuevos para modificar los datos visibles en la IU de Hojas de cálculo. A su vez, con cualquiera de los servicios avanzados de Apps Script, puedes acceder fácilmente a la Sheets API y otras API de Google sin usar el servicio UrlFetch ni administrar el flujo de autorización que, de otra forma, tendrías que realizar si usaras la API de REST de manera directa. El fragmento siguiente muestra índices de las filas filtradas en una hoja de cálculo determinada. Ten en cuenta que también es posible obtener la lista de filas ocultadas manualmente usando el menú “Ocultar fila” en Hojas de cálculo de Google, como se indica en la documentación de la API. En este ejemplo de código, solo expondremos filas ocultadas por filtro.

 function getIndexesOfFilteredRows(ssId, sheetId) {
  var hiddenRows = [];
  
  // limit what's returned from the API
  var fields = "sheets(data(rowMetadata(hiddenByFilter)),properties/sheetId)";
  var sheets = Sheets.Spreadsheets.get(ssId, {fields: fields}).sheets;  
  
  for (var i = 0; i < sheets.length; i++) {
    if (sheets[i].properties.sheetId == sheetId) {
      var data = sheets[i].data;
      var rows = data[0].rowMetadata;
      for (var j = 0; j < rows.length; j++) {
        if (rows[j].hiddenByFilter) hiddenRows.push(j);
      }
    }
  }
  return hiddenRows;
} 
El parámetro fields del fragmento de código limita lo que se muestra en la respuesta de la Sheets API y solicita solo aquellos valores que son importantes para tu app. Para obtener más información, visita esta página en la documentación de la Sheets API o mira este video reciente sobre máscaras de campo.

Observa la forma en que algunos complementos aplican filtrado 

Existen varios complementos que usan filtrado avanzado en Hojas de cálculo. A continuación, presentamos algunos buenos ejemplos:
  • Yet Another Mail Merge: este complemento ayuda a los usuarios a enviar campañas de correo electrónico a partir de una hoja de cálculo y está diseñado para filtrar únicamente las filas filtradas de una hoja de cálculo. Digamos que dispones de una lista de personas que se registraron para un evento, pero solo aceptaste a algunas de ellas y debes enviar una confirmación por correo electrónico. Con Yet Another Mail Merge y la API actualizada, puedes apartar mediante filtrado a quienes no desees que asistan y los complementos saltean a estas personas al no enviarles confirmaciones.
  • SankeySnip y ChordSnip: estos complementos ayudan a los usuarios a crear tipos de gráficos que no se encuentren disponibles en la IU de Hojas de cálculo de Google. Cuando el acatamiento de filtros se habilite con estos complementos, los gráficos representarán de manera dinámica los datos filtrados. Observa el ejemplo del complemento ChordSnip, a continuación.
La API, por supuesto, también ofrece la capacidad de agregar, actualizar o borrar filtros en una hoja de cálculo. Esto resulta útil si deseas mostrar rápidamente a tus usuarios filas con un estado específico. Un ejemplo podría ser la compilación de un complemento de aprobación de flujo de trabajo. Puedes mostrar al usuario filas cuya aprobación esté pendiente. El fragmento siguiente aplica el filtro solicitado en una hoja de cálculo determinada; en la documentación de la API se describe un objeto de filtro básico:

function setSheetBasicFilter(ssId, BasicFilterSettings) {
  //requests is an array of batchrequests, here we only use setBasicFilter
  var requests = [
    {
      "setBasicFilter": {
        "filter": BasicFilterSettings
      }
    }
  ];
  Sheets.Spreadsheets.batchUpdate({'requests': requests}, ssId);
}

Yet Another Mail Merge, al igual que muchas herramientas de correo masivo, realiza un seguimiento de todos los correos electrónicos enviados, abiertos y seleccionados. Se encuentra disponible un informe de seguimiento en la barra lateral. A su vez, si se hace clic en el número de correos electrónicos abiertos se aplica de manera automática un filtro para mostrar solo las filas coincidentes, todas las filas con el estado “abierta”.

Ahora puedes determinar los filtros aplicados en una hoja de cálculo directamente a través de la Sheets API o de apps y complementos de Apps Script usando el servicio de hojas de cálculo avanzadas, y continuar creando la mejor experiencia para tus usuarios.

Acerca de los autores 

Romain Vialard es un experto de Google Developers. Se desempeñó durante algunos años como consultor de G Suite y actualmente se dedica a productos para usuarios de G Suite y Google Apps, además de complementos como Yet Another Mail Merge y Form Publisher.

Bruce Mcpherson es experto de Google Developers y trabaja como consultor independiente y bloguero. También es el autor de Going GAS, Google Apps Script for Beginners (Google Apps Script para principiantes) y Google Apps Script for Developers (Google Apps Script para desarrolladores).



Publicado por Giles Hogben, ingeniero de privacidad

En Android O, se presentan algunas mejoras para que el usuario pueda controlar el uso de identificadores. Entre estas mejoras se incluye lo siguiente:

  • Limitación del uso de identificadores con ámbito en dispositivos no restablecibles.
  • Actualización de la pila Wi-Fi de Android O y cambios en el firmware de chipset de Wi-Fi de los teléfonos Pixel, Pixel XL y Nexus 5x para aleatorizar direcciones MAC en solicitudes de sondeo.
  • Actualización de la forma en que las aplicaciones solicitan información sobre cuentas y provisión de un control más orientado al cliente.

Cambios de identificadores de dispositivos


A continuación, se muestran algunos de los cambios de los identificadores de dispositivos para Android O:

Android ID


En Android O, el ID de Android (Settings.Secure.ANDROID_ID o SSAID) tiene un valor diferente para cada app y cada usuario en el dispositivo. Los desarrolladores que necesitan un identificador con ámbito en dispositivos deben usar como alternativa un identificador restablecible, como el ID de publicidad, lo que proporciona más control a los usuarios. El ID de publicidad también proporciona una configuración para el usuario a fin de limitar el seguimiento de anuncios..

Además, en Android O:

  • El valor ANDROID_ID no cambiará durante la desinstalación y la reinstalación de paquetes mientras el nombre y la clave de firma del paquete sean los mismos. Las apps pueden basarse en este valor para mantener el estado al realizar reinstalaciones.
  • Si una app se instala en un dispositivo con una versión anterior de Android, el ID de Android se conserva cuando el dispositivo recibe una actualización a Android O, a menos que la app se desinstale y reinstale.
  • El valor de ID de Android solo cambia si se restablece la configuración de fábrica del dispositivo o si la clave de firma se rota entre eventos de desinstalación y reinstalación.
  • Este cambio solo es necesario para fabricantes de dispositivos que incorporan Google Play Services e ID de publicidad. Otros fabricantes de dispositivos pueden proporcionar un ID restablecible alternativo o continuar proporcionando el ID de Android.

Build.SERIAL


A fin de mantener la uniformidad con los permisos de tiempo de ejecución requeridos para acceder a IMEI, android.os.Build.SERIAL dejó de estar disponible para apps orientadas a Android O o versiones posteriores. Como alternativa, se puede usar una nueva Android O API, Build.getSerial(), que muestra el número de serie real mientras el emisor conserve el permiso PHONE. En una versión futura de Android, para las apps orientadas a Android O Build.SERIAL aparecerá como “DESCONOCIDO”. Para evitar afectar la funcionalidad de las apps heredadas, las apps orientadas a versiones anteriores de Android continuarán detectando el número de serie del dispositivo, como antes.

Net.Hostname


Net.Hostname proporciona el nombre de host del dispositivo. En versiones anteriores de Android, el valor predeterminado del nombre de host de red y el valor de la opción de nombre de host de DHCP contenido en Settings.Secure.ANDROID_ID. En Android O, net.hostname no tiene contenido y el cliente DHCP deja de enviar un nombre de host, después de IETF RFC 7844 (perfil de anonimidad).

Widevine ID


Para los dispositivos con Android O, el ID de cliente de Widevine muestra un valor diferente para cada nombre de paquete y origen web (para apps de navegadores web).

Propiedades de sistema y configuración exclusivas


Además de Build.SERIAL, hay otras configuraciones y propiedades de sistema que no se encuentran disponibles en Android O. Entre ellas se incluyen:

  • ro.runtime.firstboot: marca de tiempo con precisión de milisegundos del primer inicio después del último borrado o del inicio más reciente.
  • htc.camera.sensor.front_SN: número de serie de la cámara (disponible en algunos dispositivos HTC).
  • persist.service.bdroid.bdaddr: propiedad de dirección MAC de Bluetooth
  • Settings.Secure.bluetooth_address: dirección MAC de Bluetooth del dispositivo. En Android O, solo se encuentra disponible para apps que conserven el permiso LOCAL_MAC_ADDRESS.

Aleatorización de direcciones MAC en solicitudes de sondeo de Wi-Fi.


Colaboramos con investigadores del área de la seguridad1 con el propósito de diseñar un sistema sólido de aleatorización de direcciones MAC para tráfico de análisis de Wi-Fi producido por el firmware de chipset de dispositivos Google Pixel y Nexus 5X. El equipo de Android Connectivity luego trabajó junto a los fabricantes para actualizar el firmware de chipset de Wi-Fi empleado en estos dispositivos.

Android O integra estos cambios de firmware a la pila de Wi-Fi de Android, para que los dispositivos que usan estos chipsets con firmware actualizado y cuentan con Android O, o versiones posteriores, puedan aprovecharlos.

A continuación, se muestran algunos de los cambios que hemos realizado en el firmware de Pixel, Pixel XL y Nexus 5x con Android O o versiones posteriores:

  • Para cada análisis de Wi-Fi durante la desconexión de un punto de acceso, el teléfono usa una dirección MAC aleatoria nueva (independientemente de que se encuentre o no en espera).
  • El número de secuencia de paquete inicial para cada análisis también se aleatoriza.
  • Se eliminaron elementos de información de solicitudes de sondeo innecesarios: Los elementos de información se limitan a los conjuntos de parámetros de SSID y DS.

Cambios en la getAccounts API


En Android O y versiones posteriores, ya no basta con el permiso GET_ACCOUNTS para obtener acceso a la lista de cuentas registradas en el dispositivo. La aplicaciones deben usar una API provista por la app que administra el tipo de cuenta específico o el usuario debe otorgar permiso para acceder a la cuenta a través de una actividad de selector de cuenta. Por ejemplo, Gmail puede acceder a cuentas de Google registradas en el dispositivo porque Google posee la aplicación Gmail, pero el usuario debe otorgar acceso en Gmail a información sobre otras cuentas registradas en el dispositivo.

Para obtener acceso a una cuenta, las apps orientadas a Android O, o versiones posteriores, deben usar AccountManager#newChooseAccountIntent() o un método específico de autenticador. Las aplicaciones con un SDK de destino inferior pueden, de todos modos, usar el flujo actual.

En Android O, las apps también pueden usar los métodos AccountManager.setAccountVisibility() y getVisibility() para administrar políticas de visibilidad de sus cuentas.

A su vez, la transmisión LOGIN_ACCOUNTS_CHANGED_ACTION dejó de estar disponible, pero sigue funcionando en Android O. Las aplicaciones deben usar addOnAccountsUpdatedListener() a fin de obtener actualizaciones sobre cuentas en tiempo de ejecución para una lista de tipos de cuentas que especifiquen.

Para obtener más información, consulta Prácticas recomendadas para identificadores únicos.


Notas


  1. Glenn Wilkinson y el equipo de Sensepost, RU, con Célestin Matte y Mathieu Cunche: Universidad de Lyon, INSA-Lyon, CITI Lab, Inria Privatics, Mathy Vanhoef, KU Leuven 


¿Qué diferencia a las apps creadas a partir de buenas ideas de las apps que son realmente fabulosas? ¡El análisis! Los desarrolladores de apps exitosos recurren al análisis para determinar la verdadera forma en que los usuarios interactúan con sus apps. El análisis ocupa un lugar central en Firebase, ya que te ayudar a tomar decisiones aplicables para crear productos que agraden mucho a las personas.

¿Qué diferencia a las apps creadas a partir de buenas ideas de las apps que son realmente fabulosas? ¡El análisis! Los desarrolladores de apps exitosos recurren al análisis para determinar la verdadera forma en que los usuarios interactúan con sus apps. El análisis ocupa un lugar central en Firebase, ya que te ayudar a tomar decisiones aplicables para crear productos que agraden mucho a las personas.

Nos asociamos con Udacity para ofrecer un curso interactivo gratuito de 2 días con el que podrás aprender a usar Firebase Analytics para hacer crecer tu base de usuarios en iOS y Android. En particular, verás la manera de fijar objetivos y registrar interacciones de los usuarios con una app. Incluso, analizarás datos reales de una app que se encuentre disponible en Google Play Store y la tienda de aplicaciones. A su vez, incorporarás conocimientos a través de personas totalmente que se dedican mucho a Firebase: Steve Ganem y Todd Kerpelman de Google. Se agregan también desarrolladores de Android e iOS, de Google y Udacity.





En el nuevo curso se incluirá una combinación de videos cortos, cuestionarios y fragmentos de código, además del aporte de una sólida comunidad en línea que te asistirá en el aprendizaje. Consulta el curso sobre Android o iOS sin costo y conoce todos nuestros cursos en udacity.com/google.



Uno de los mayores desafíos para los desarrolladores de juegos es predecir con precisión la cantidad de jugadores que intentarán conectarse a la Web al lanzarse un juego: sobreestimarlo y arriesgarse a generar gastos excesivos en hardware o compromisos relacionados con alquileres, o subestimarlo y hacer que los jugadores lo abandonen frustrados, para nunca más volver. Google Cloud puede ayudarte a reducir este riesgo y, al mismo tiempo, brindarte acceso a las últimas tecnologías de la nube. La facturación por minuto y los descuentos por uso continuo de aplicación automática pueden eliminar el esfuerzo que representan los gastos de capital por adelantado o el intento de alcanzar a la competencia mientras la base de jugadores se reduce.


Uno de los mayores desafíos para los desarrolladores de juegos es predecir con precisión la cantidad de jugadores que intentarán conectarse a la Web al lanzarse un juego: sobreestimarlo y arriesgarse a generar gastos excesivos en hardware o compromisos relacionados con alquileres, o subestimarlo y hacer que los jugadores lo abandonen frustrados, para nunca más volver. Google Cloud puede ayudarte a reducir este riesgo y, al mismo tiempo, brindarte acceso a las últimas tecnologías de la nube. La facturación por minuto y los descuentos por uso continuo de aplicación automática pueden eliminar el esfuerzo que representan los gastos de capital por adelantado o el intento de alcanzar a la competencia mientras la base de jugadores se reduce.

Pueden verse claramente las ventajas en el manejo de la demanda en un día de lanzamiento caracterizado por picos de actividad, pero la extensa red de regiones de Google Cloud Platform también acerca los servidores a clientes de alta latencia. Los estudios de juegos ya no necesitan implementar centros de datos costosos para ofrecer una experiencia de juego que sea la mejor de su clase  : basta con solicitar a Google Compute Engine recursos donde y cuando se necesiten. La disponibilidad de nuevas regiones en línea cada año te permite agregar servidores de juegos cerca de tus jugadores con algunos clics.

Recientemente, publicamos nuestra “Guía de migración de servidores de juegos dedicados”, en la que se describen las numerosas ventanas y cualidades distintivas de Google Cloud Platform (GCP) en términos de cargas de trabajo, y se ofrecen prácticas recomendadas para ejecutar estos procesos que hemos aprendido al trabajar con estudios y editores líderes del sector. Se abarca todo el proceso, desde la creación de proyectos y la publicación de compilaciones en la nube hasta la distribución de estos en tus VM, su ejecución y la eliminación de entornos en la modalidad mayorista cuando ya no se necesitan. Ejecutar servidores de juegos en Google Cloud es más fácil que nunca.



Google presentó la versión paga de la Translate API en 2011, que incluyó compatibilidad con más de 50 idiomas. Desde entonces, hemos dedicado recursos de forma continua a la API; mejoramos la escalabilidad del servicio y lo expandimos para que abarque más de 100 idiomas. Como resultado, miles de clientes de los negocios, las finanzas y los juegos adoptaron e implementaron ampliamente la ...


Google presentó la versión paga de la Translate API en 2011, que incluyó compatibilidad con más de 50 idiomas. Desde entonces, hemos dedicado recursos de forma continua a la API; mejoramos la escalabilidad del servicio y lo expandimos para que abarque más de 100 idiomas. Como resultado, miles de clientes de los negocios, las finanzas y los juegos adoptaron e implementaron ampliamente la Cloud Translation API en entornos de producción a escala.

Como parte del esfuerzo continuo que Google dedica a la traducción automática, recientemente anunciamos la versión beta de nuestro sistema Google Neural Machine Translation (GNMT), que aplica técnicas de capacitación de última generación y se ejecuta en TPU para lograr algunas de las mejoras de mayor magnitud que se hayan aplicado a la traducción automática en la última década. Solicitamos a 1000 clientes que se registraran para probar la API y brindarnos comentarios valiosos. Por ejemplo, Grani VR Studio usa la alta precisión y baja latencia que ofrece esta traducción para crear experiencias de RV/RA en diferentes idiomas.


Hoy nos complace anunciar que el sistema se encuentra disponible en su Standard Edition para todos nuestros clientes. La versión beta de la Premium Edition por el momento no se encuentra disponible para registros nuevos y estos volverán a admitirse en los próximos meses, a medida que implementemos nuevas funciones.

Con Google Neural Machine Translation se encuentra disponible lo siguiente:
  • Acceso al modelo de traducción de más alta calidad, que ofrece una reducción del 55 al 85% de los errores en varios pares de idiomas generalmente disponibles.
  • Compatibilidad con siete idiomas nuevos: del inglés al ruso, hindi, vietnamita, polaco, árabe, hebreo y tailandés, y de estos al inglés. Esto se agrega a ocho idiomas existentes (inglés al chino, francés, alemán, japonés, coreano, portugués, español y turco, y de estos al inglés).
  • Se agregarán más idiomas en las próximas semanas. Visita esta página para realizar un seguimiento de la compatibilidad con nuevos idiomas.
Los clientes de la Standard Edition que paguen el precio de lista disponible en línea pueden acceder al sistema Google Neural Machine Translation sin costo adicional. Como parte del anuncio, también ofreceremos precios con descuentos sin conexión para el uso de más de mil millones de caracteres por mes. Visita nuestra página de precios para obtener más información.

Esperamos trabajar contigo mientras continuamos destinando recursos con el propósito de brindar la mejor tecnología de Google para satisfacer tus necesidades de traducción.

Publicado por: Rachel Been, directora de creatividad, Material Design

Las pautas de Material Design son un elemento de documentación patente que ofrece orientación de diseño visual, interactivo y de movimiento en plataformas y dispositivos.
 Publicado por: Rachel Been, directora de creatividad, Material Design

Las pautas de Material Design son un elemento de documentación patente que ofrece orientación de diseño visual, interactivo y de movimiento en plataformas y dispositivos.

Además de brindar orientación, Material Design también comprende un sistema que admite y fortalece la comunicación y la productividad con herramientas nuevas e inspiración. Con la actualización de hoy, Material Design presenta una nueva forma de conocer el color. La nueva herramienta de color te ayuda a crear, compartir y aplicar paletas de colores a un ejemplo de IU y en componentes de CodePen. Esta también admite la accesibilidad al evaluar la legibilidad del texto para cualquier combinación de color. Entre las funciones específicas se incluyen las siguiente:





Creación de esquemas de colores

Puedes crear esquemas de colores que incluyan variaciones más oscuras y claras de tus colores primarios y secundarios.











Accesibilidad para texto

Puedes verificar si es posible acceder a texto en fondos de diferentes colores, conforme a mediciones realizadas mediante estándares de legibilidad de las pautas de accesibilidad a contenido web.










Vista previa de tu IU a color

Puedes obtener una vista previa de tu esquema de colores en diferentes componentes de Material Design, con HTML, CSS o JavaScript editables en CodePen.




Gracias a estas nuevas herramientas que te permitirán manejar parcialmente los esquemas de color, podrás ofrecer a tus usuarios una experiencia más completa. Esperamos ansiosos ver tus creaciones. Para acceder a las últimas noticias e interactuar directamente con nosotros, síguenos en nuestra nueva cuenta de Twitter (@materialdesign) y visita https://material.io/.



Google Cloud Storage siempre ha sido un espacio rentable y de alto rendimiento para almacenar objetos de datos. Ahora también es fácil compilar flujos de trabajo en torno a los objetos que se activan mediante su creación, su borrado o la modificación de sus metadatos.


Google Cloud Storage siempre ha sido un espacio rentable y de alto rendimiento para almacenar objetos de datos. Ahora también es fácil compilar flujos de trabajo en torno a los objetos que se activan mediante su creación, su borrado o la modificación de sus metadatos.

Supón que deseas realizar alguna acción cada vez que se produce un cambio en uno de tus depósitos de Cloud Storage. Probablemente te convenga actualizar de manera automática las proyecciones de ventas a diario cuando se carguen los totales diarios nuevos de ventas. También es posible que debas quitar un recurso de un índice de búsqueda cuando se borre un objeto. O tal vez desees actualizar la miniatura cuando alguien realice un cambio en una imagen. La capacidad de responder a los cambios en un depósito de Cloud Storage te proporciona mayor receptividad, control y flexibilidad.

Compatibilidad con Cloud Pub/Sub


Nos complace anunciar que Cloud Storage ahora puede registrar cambios enviando notificaciones de cambios a un tema de Google Cloud Pub/Sub. Cloud Pub/Sub es una poderosa plataforma de mensajería que te permite crear soluciones de mensajería rápidas, confiables y más seguras. La compatibilidad con Cloud Pub/Sub presenta muchas capacidades nuevas para las notificaciones de Cloud Storage, como las de retirar suscripciones en lugar de solicitar a los usuarios que configuren webhooks, multiplexar copias de cada mensaje para muchos suscriptores y filtrar mensajes por prefijo o tipo de evento.
Lee nuestra guía de introducción para comenzar a enviar notificaciones de Cloud Storage a Cloud Pub/Sub. Una vez que habilites la Cloud Pub/Sub API y descargues la última versión del gcloud SDK, podrás configurar desencadenadores de notificaciones de tu depósito de Cloud Storage en tu tema de Cloud Pub/Sub con el siguiente comando:

$> gsutil notification create -f json -t your-topic gs://your-bucket

A partir de ese punto, cualquier cambio en el contenido de tu depósito de Cloud Storage activará un mensaje para tu tema de Cloud Pub/Sub. Luego podrás crear suscripciones de Cloud Pub/Sub en ese tema y extraer mensajes de estas en tus programas, como en este ejemplo de app de Python.

Google Cloud Functions

Cloud Pub/Sub es un método poderoso y flexible para responder a cambios en un depósito. Sin embargo, en el caso de algunas tareas probablemente prefieras la simplicidad de implementar una función pequeña y sin servidor que solo describa la acción que desees realizar en respuesta a un cambio. Para ello, Google Cloud Functions admite desencadenadores de Cloud Storage.

Google Cloud Functions es un método rápido para implementar secuencias de comandos basadas en la nube en respuesta a una amplia variedad de eventos; por ejemplo, una solicitud HTTP a una URL determinada o un objeto nuevo en un depósito de Cloud Storage.

Una vez que des los primeros pasos con Google Cloud Functions, podrás obtener información sobre la configuración de un desencadenador de Cloud Storage Trigger para tu función. Tan simple como agregar un parámetro “--trigger-bucket” a tu función de implementación:

$> gcloud beta functions deploy helloWorld --stage-bucket cloud-functions --trigger-bucket your-bucket

Genera entusiasmo pensar en las posibilidades que ofrecen los objetos de Cloud Storage cuando no son solo entidades estáticas y pueden activar una amplia variedad de tareas. Esperamos que tengas el mismo entusiasmo que nosotros.








PWA_AMP1

Si has dedicado recursos en AMP y también te estás preparando para actualizar tu sitio web móvil y convertirlo en una app web progresiva de última generación, tengo buenas noticias para ti: AMP y las apps web progresivas pueden combinarse y usarse juntas para crear una experiencia de usuario fantástica. A su vez, contamos con un nuevo conjunto de documentos sobre AMPproject.org para ayudarte con eso.

AMP constituye un punto de entrada ideal en tu sitio debido a la carga previamente representada y casi instantánea, y el componente <amp-install-serviceworker> te permite preparar y cargar previamente una app web progresiva mientras tus usuarios leen una página AMP. Los usuarios que seleccionen vínculos hacia tu origen ahora podrán realizar una actualización instantánea a la app web progresiva con todas las funciones. Esto significa que podrás comenzar rápido con AMP y mantener la velocidad con tu experiencia de apps web progresivas.

A su vez, ahora podrás reutilizar por completo la biblioteca de contenido con la que ya cuentas bajo la forma de páginas AMP y usarlas como elemento central de tu app web progresiva, lo cual te ahorrará recursos y evitará complejidades.

Para obtener más información sobre cómo combinar AMP y las apps web progresivas, visita uno de los siguientes recursos:
  1. Nuestros nuevos documentos en los que se tratan AMP y las apps web progresivas, y se analizan en profundidad la manera de habilitar funciones de apps web progresivas para tus páginas AMP, de cargar previamente tu app web progresiva desde tus páginas AMP, y de integrar y usar AMP como fuente de datos.
  2. Los aspectos básicos que se ofrecen en Smashing Magazine.
  3. La charla de Alex Russell en la Conferencia de AMP de 2017.

Contáctanos a través de nuestros canales de asistencia para desarrolladores si tienes preguntas o comentarios. Estamos ansiosos por ver las aplicaciones que crees.

Publicado por Paul Bakaus, representante de desarrolladores, Proyecto AMP

De AMP a las apps web progresivas