Publicado por Jen Person, representante de programadores
Siempre me sorprendo cuando pienso en el hecho de que miles de millones de mensajes se envían por día a través de ...


Publicado por Jen Person, representante de programadores
Siempre me sorprendo cuando pienso en el hecho de que miles de millones de mensajes se envían por día a través de Firebase Cloud Messaging. Programadores de iOS, Android y la Web emplean FCM para enviar notificaciones y mensajes de datos a sus clientes. Recientemente actualizamos FCM para incorporar una mejor seguridad y nuevas características, y ahora puedes acceder a la nueva FCM a través del SDK de Firebase Admin para Node.js, Python, Java y Go.

En la última versión de FCM, llamada FCM v1, se incluye la posibilidad de enviar una única solicitud con anulaciones específicas de plataforma. Por ejemplo, puedes establecer un tiempo de duración para una notificación de Android y una prioridad de APN para una notificación de iOS en el mismo cuerpo. Para obtener más información sobre las anulaciones de plataforma, consulta la documentación o esta entrada de blog.

Ahora puedes integrar tus aplicaciones del servidor con la FCM v1 API de manera práctica con el SDK de Firebase Admin. Aquí te mostramos la manera de enviar un simple mensaje de datos en Node.js:
var registrationToken = 'YOUR_REGISTRATION_TOKEN';

var message = {
  data: {
    score: '850',
    time: '2:45'
  },
  token: registrationToken
};

admin.messaging().send(message)
  .then((response) => {
    console.log('Successfully sent message:', response);
  })
  .catch((error) => {
    console.log('Error sending message:', error);
  });

Para ver este código en Java, Python y Go, consulta la documentación. Para ver todas las opciones de carga útil, consulta la documentación de FCM v1. Además de enviar mensajes a dispositivos y temas, el SDK de Admin para FCM también te permite manejar suscripciones de temas desde tu servidor.

A continuación, te mostramos un ejemplo de suscripción a un tema en Node.js:
var registrationTokens = [
  'YOUR_REGISTRATION_TOKEN_1',
  // ...
  'YOUR_REGISTRATION_TOKEN_n'
];
admin.messaging().subscribeToTopic(registrationTokens, topic)
  .then(function(response) {
    console.log('Successfully subscribed to topic:', response);
  })
  .catch(function(error) {
    console.log('Error subscribing to topic:', error);
  });

Para ver este código en Java, Python y Go, consulta la documentación. ¡Gracias al SDK de Admin, enviar mensajes es más fácil que nunca! Consulta la documentación completa aquí. Si obtienes un buen resultado con FCM, ¡asegúrate de contarnos! ¡Envíanos un tuit a @Firebase y @ThatJenPerson, y transmítenos tu experiencia!


Publicación realizada en varios medios del blog Dentro de AdWords.
Hoy, lanzamos un nuevo programa de educación interactiva para las campañas universales de apps (UAC). El sistema de las UAC facilita el acercamiento a tus usuarios y el crecimiento de tu negocio de apps a escala. Usa la tecnología de aprendizaje automático de Google para ayudarte a encontrar los clientes que más te importan, según tus propósitos empresariales, en Google Play, Google.com, YouTube, y los millones de sitios y apps de la red de Display.

Publicación realizada en varios medios del blog Dentro de AdWords.
Hoy, lanzamos un nuevo programa de educación interactiva para las campañas universales de apps (UAC). El sistema de las UAC facilita el acercamiento a tus usuarios y el crecimiento de tu negocio de apps a escala. Usa la tecnología de aprendizaje automático de Google para ayudarte a encontrar los clientes que más te importan, según tus propósitos empresariales, en Google Play, Google.com, YouTube, y los millones de sitios y apps de la red de Display.

UAC representa un cambio en la manera de comercializar tus apps para dispositivos móviles. Por ello, diseñamos el primer curso del programa para que aprendas a obtener los mejores resultados del sistema. Algunas razones por las que te incentivamos a hacer el curso:
  • Aprenderás junto a expertos del sector. El diseño del curso estuvo a cargo de profesionales del marketing que atravesaron tu situación, y el equipo que creó la campaña universal de apps lo verificó.
  • Obtendrás más información sobre tu cronograma. Accederás a videos concisos que podrás ver a tu propio ritmo. El curso consta de videos de tres minutos que te permitirán dominar el contenido más rápido.



  • Pondrás en práctica lo aprendido. Podrás completar actividades interactivas basadas en situaciones reales, como el uso de UAC para lanzar una app nueva o una actualización para ella.

 


Haz el curso hoy y transmítenos tu opinión. También podrás obtener más información sobre las prácticas recomendadas para UAC aquí y aquí.

¡Esperamos verte en clase!

Publicado por Sissie Hsiao, vicepresidente de producto, publicidad orientada a apps para dispositivos móviles en Google


Anuj Gosalia, director de Ingeniería, realidad aumentada












Anuj Gosalia, director de Ingeniería, realidad aumentada
Con ARCore y Google Lens, estamos trabajando para lograr que las cámaras de los smartphones sean más inteligentes. ARCore permite a los programadores compilar apps que puedan comprender sus entornos y ubicar objetos e información en ellos. Google Lens usa tu cámara para ayudarte a interpretar lo que ves, ya sea creando automáticamente información de contacto a partir de una tarjeta de presentación por si se pierde o permitiendo identificar la raza de un perro bonito que viste en el parque. En el congreso Mobile World Congress, lanzaremos ARCore 1.0 con compatibilidad nueva para programadores y también presentaremos actualizaciones para Lens y la implementaremos para más personas.

ARCore, el SDK de realidad aumentada de Google para Android, ya dejó atrás la etapa de la versión preliminar y se lanzará en su versión oficial 1.0. Ahora los programadores pueden publicar apps de realidad aumentada (AR) en Play Store y es un gran momento para comenzar a trabajar en compilaciones. ARCore funciona en 100 millones de smartphones de Android, y se encuentran disponibles capacidades avanzadas de AR para todos estos. Ahora funciona en 13 modelos diferentes (Pixel, Pixel XL, Pixel 2 y Pixel 2 XL de Google, Galaxy S8, S8+, Note8, S7 y S7 edge de Samsung, V30 y V30+ de LGE (solo Android O), Zenfone AR de ASUS y OnePlus de OnePlus 5). A fin de ampliar la lista de los que se encuentran disponibles hoy, nos asociaremos con muchos fabricantes para habilitar sus próximos dispositivos este año. Se incluyen Samsung, Huawei, LGE, Motorola, ASUS, Xiaomi, HMD/Nokia, ZTE, Sony Mobile y Vivo.

Lograr que ARCore funcione en más dispositivos es solo una parte de la ecuación. Brindaremos más mejoras y asistencia a los programadores para facilitar y agilizar sus procesos de desarrollo de AR. ARCore 1.0 incorpora una mayor interpretación de entornos, lo que permite a los usuarios situar recursos virtuales en superficies texturizadas, como pósteres, muebles, cajas de juguetes, libros y latas, entre otras. Android Studio Beta ahora admite ARCore en el emulador, con lo cual podrás probar rápido tu app en un entorno virtual directamente desde tu escritorio.

Todo el mundo debería poder experimentar la realidad aumentada, así que estamos trabajando para hacérsela llegar a gente de todos lados, incluso China. Brindaremos asistencia de ARCore para dispositivos de nuestros socios que se vendan en China (comenzaremos con Huawei, Xiaomi y Samsung), para permitirles distribuir apps de AR a través de sus tiendas de aplicaciones.


Nos hemos asociado con algunos programadores muy reconocidos para mostrar la forma en que planean usar AR en sus apps. Snapchat ha creado una experiencia inmersiva que invita a ingresar a un “portal”; en este caso, el legendario estadio Camp Nou del FC Barcelona. Con International Realty, de Sotheby, podrás visualizar diferentes interiores de habitaciones dentro de tu casa. También podrás ver el vehículo Mission E Concept de Porsche en tu entrada y explorar su funcionamiento. Con OTTO AR, podrás elegir muebles de una selección exclusiva y ubicarlos, a escala verdadera, en una habitación. Próximamente, se anunciará Ghostbusters World, basada en la franquicia cinematográfica. En China, podrás ubicar muebles y más de 100 000 otros elementos con Easyhome Homestyler, consultar elementos y situarlos en tu casa al realizar compras en JD.com o disfrutar de juegos desde NetEase, Wargaming y Game Insight.



Con Google Lens, la cámara de tu teléfono te puede ayudar a comprender el mundo a tu alrededor y expandiremos la disponibilidad de la vista previa de Google Lens. Con Lens en Google Fotos, cuando tomes una foto podrás obtener más información sobre lo que hay en ella. En las próximas semanas, Lens estará disponible para todos los usuarios de Google Fotos de habla inglesa que tengan la última versión de la app en Android e iOS. También, durante en las próximas semanas, los usuarios de habla inglesa de dispositivos insignia compatibles accederán a la experiencia de Lens basada en cámaras dentro del Asistente de Google. Con el tiempo, sumaremos asistencia para más dispositivos.

Mientras permanece activa la versión preliminar de Google Lens, hemos continuamos aplicando mejoras. Desde el lanzamiento, hemos agregado características de selección de texto, la capacidad de crear contactos y eventos a partir de una foto con un toque y, en las próximas semanas, incorporaremos una mejor asistencia para el reconocimiento de animales y plantas comunes; por ejemplo, diferentes razas de perros y flores.





Las cámaras más inteligentes permitirán que nuestros smartphones hagan más cosas. Con ARCore 1.0, los programadores pueden comenzar ya mismo a crear experiencias útiles y destacadas de AR. Lens, con tecnología de IA y visión artificial, facilita la búsqueda y la interacción con lo que ves. Mientras continúa el proceso de expansión de estas tecnologías, veremos más maneras en las que pueden ayudar a la gente a divertirse y ampliar las posibilidades de sus teléfonos.


Publicado originalmente en Medium de Flutter por Seth Ladd
Hoy, como parte del congreso Mobile World Congress 2018, nos complace anunciar el primer lanzamiento beta de Flutter. Flutter es el nuevo marco de trabajo de IU de plataformas móviles de Google que ayuda a los programadores a crear interfaces nativas de alta calidad para iOS y Android.

Publicado originalmente en Medium de Flutter por Seth Ladd
Hoy, como parte del congreso Mobile World Congress 2018, nos complace anunciar el primer lanzamiento beta de Flutter. Flutter es el nuevo marco de trabajo de IU de plataformas móviles de Google que ayuda a los programadores a crear interfaces nativas de alta calidad para iOS y Android. Visita hoy flutter.io para comenzar a crear hermosas apps nativas en tiempo récord.

Flutter encuentra el punto óptimo del desarrollo de experiencias móviles: integraciones de rendimiento y plataformas para elementos móviles nativos, con desarrollo de alta velocidad y alcance multiplataforma de kits de herramientas de IU portátiles.

Flutter está diseñado para programadores de dispositivos móviles nuevos y experimentados, y puede ayudarte a crear apps bonitas y exitosas en tiempo récord con beneficios como los siguientes:
  • Desarrollo de alta velocidad con funciones como recarga activa con estado, un nuevo marco de trabajo reactivo, un conjunto completo de widgets y herramientas integradas.
  • Diseños expresivos y flexibles con conjuntos compatibles de widget, bibliotecas de animaciones completas, y una arquitectura segmentada y extensible.
  • Experiencias de alta calidad en diferentes dispositivos y plataformas gracias a nuestro representador portátil con aceleración por GPU, tiempo de ejecución de código ARM nativo de alto rendimiento e interoperabilidad entre plataformas.

Desde el lanzamiento de nuestra versión Alfa, el año pasado, gracias la ayuda de nuestra comunidad ofrecimos funciones como la compatibilidad con lectores de pantalla y otras funciones de accesibilidad, texto de derecha a izquierda, localización e internalización, compatibilidad con iPhone X e iOS 11, videos en línea, compatibilidad adicional con formatos de imagen y ejecución del código de Flutter en segundo plano, entre muchas otras opciones.

Nuestras herramientas también mejoraron considerablemente; incorporaron asistencia para Android Studio y Visual Studio Code, nuevas refactorizaciones para ayudarte a manejar tu código de widgets, interoperabilidad de plataformas para dejar expuesto el poder de las plataformas móviles en código de Flutter, mejoras en las recargas activas con estado y un inspector de widgets nuevo que te permite explorar el árbol del widgets.

Gracias a las funciones nuevas en diferentes marcos de trabajo y herramientas, los equipos de Google (como AdWords) y de todo el mundo han tenido éxito con Flutter. Flutter se ha usado en la producción de apps instaladas millones de veces, y las apps creadas con Flutter se han destacado en la tienda de aplicaciones y en Play Store (por ejemplo, la del musical Hamilton). También varias startups y agencias han tenido éxito con Flutter.

La agencia de desarrollo finlandesa Codemate, por ejemplo, atribuye la posibilidad de haber creado rápidamente una app bonita para Hookle al ciclo de desarrollo de alta velocidad y al kit de herramientas personalizable de la IU de Flutter. “Ahora recomendamos Flutter con confianza para ayudar a nuestros clientes a mejorar su rendimiento y ofrecer más valor a sus usuarios en diferentes dispositivos móviles”, afirmó Toni Piirainnen, director ejecutivo de Codemate.

Las apps creadas con Flutter ofrecen calidad, rendimiento y diseños personalizados en diferentes plataformas.

La versión beta de Flutter también funciona con una versión previa al lanzamiento de Dart 2, lo cual mejora la asistencia para declarar una IU en el código gracias a la minimización de formalidades de lenguaje. Por ejemplo, Dart 2 infiere new y const para eliminar código estándar cuando se compilan elementos de IU. A continuación, te mostramos un ejemplo:
// Before Dart 2
Widget build(BuildContext context) {
  return new Container(
    height: 56.0,
    padding: const EdgeInsets.symmetric(horizontal: 8.0),
    decoration: new BoxDecoration(color: Colors.blue[500]),
    child: new Row(
      ...
    ),
  );
}

// After Dart 2
Widget build(BuildContext context) =>
  Container(
    height: 56.0,
    padding: EdgeInsets.symmetric(horizontal: 8.0),
    decoration: BoxDecoration(color: Colors.blue[500]),
    child: Row(
      ...
    ),
  );
widget.dart en GitHub

Estamos muy entusiasmados el progreso del ecosistema de Flutter. Ahora, más de 1000 paquetes funcionan con Flutter (por ejemplo: SQLite, Firebase, Facebook Connect, preferencias compartidas y GraphQL, entre muchos otros), hay más de 1700 personas de nuestro chat y nos complace ver en nuestra comunidad al lanzamiento de sitios nuevos, como Flutter Institute, Start Flutter y Flutter Rocks. Además, ahora puedes suscribirte al nuevo boletín informativo Flutter Weekly, editado y publicado por nuestra comunidad.

Mientras esperamos ansiosos nuestra versión 1.0, nos centramos en la estabilización y en la terminación del escenario. En nuestra hoja de ruta, en gran parte determinada por nuestra comunidad, actualmente se realiza un seguimiento de características como la simplificación de la incorporación de Flutter a apps existentes, la WebView integrada, el mejoramiento de API de direccionamiento y navegación, la asistencia adicional para Firebase, los mapas en línea y un núcleo de motor más pequeño, entre otras. Esperamos lanzar las nuevas versiones de Beta aproximadamente cada cuatro semanas y te recomendamos aportar tu voto (👍) en temas que sean importantes para ti y para tu app a través de nuestro seguimiento de problemas.

Es el momento indicado para probar Flutter. Con nuestra guía de introducción, podrás crear desde el comienzo y ejecutar rápidamente tu primera app de Flutter. Si ya tienes Flutter instalado, puedes realizar un cambio al canal beta con estas instrucciones.

Deseamos agradecerte sinceramente por tu apoyo, tus comentarios y tus diferentes aportes. Esperamos continuar este viaje junto a toda la comunidad y no podemos esperar a ver sus creaciones.
¡Hola, programadores en China! Esta publicación también se encuentra disponible en chino.


Publicado por Mike Sorvillo, gerente de productos, Hangouts Chat, y Wesley Chun (@wescpy), representante de programadores, G Suite
Tal vez ya sepas que anunciamos características nuevas en G Suite para ayudar a los equipos a transformar la manera en que trabajan; entre otras, se encuentra ...

Publicado por Mike Sorvillo, gerente de productos, Hangouts Chat, y Wesley Chun (@wescpy), representante de programadores, G Suite
Tal vez ya sepas que anunciamos características nuevas en G Suite para ayudar a los equipos a transformar la manera en que trabajan; entre otras, se encuentra Hangouts Chat, una plataforma nueva de mensajería para la colaboración a nivel empresarial en la Web y en dispositivos móviles. Tal vez lo más interesante es que si comienzas hoy podrás generar tus propias integraciones con bots a través de la plataforma y la API de Hangouts para programadores.

Ahora, puedes crear bots para optimizar el trabajo, automatizar tareas manuales u ofrecer a tus usuarios nuevas formas de conectarse con tu aplicación, todo ello con comandos realizados desde foros de discusión o mensajes directos (DM). A continuación, se ofrecen algunas ideas que te pueden interesar:
  • Crea un bot que pueda completar tareas simples o realizar consultas para obtener información.
  • Crea un bot que pueda publicar notificaciones de manera asíncrona en cualquier foro o DM.
  • Usa tarjetas de IU interactivas para dar forma a tus respuestas de mensajes.
  • Usa Google Apps Script para crear bots personalizados destinados a tus colegas o tu organización.

Por ejemplo, un bot puede tomar la ubicación de un usuario, buscarla con la Google Maps API y mostrar el mapa resultante dentro del mismo hilo de mensajes en Hangouts Chat. El resultado obtenido mediante un bot que ves en la siguiente imagen se genera a partir de la integración de bots de Apps Script. Se muestra la carga útil de JSON justo debajo de la misma imagen que aparece en esta página en la documentación.

Cuando se envían mensajes a un bot de Apps Script, se llama a la función onMessage() y se pasa un objeto de evento. Con el siguiente código se extraen el nombre del bot y la ubicación solicitada por el usuario. Luego se pasa la ubicación a Google Maps para crear el mapa estático junto con una URL openLink que conduce al usuario directamente a Google Maps si se hace clic en el mapa o el vínculo “Abrir en Google Maps”.
function onMessage(e) {
  var bot = e.message.annotations[0].userMention.user.displayName;
  var loc = encodeURI(e.message.text.substring(bot.length+2));
  var mapClick = {
    "openLink": {
      "url": "https://google.com/maps/search/?api=1&query=" + loc
    }
  };

  return {
    // see JSON payload in the documentation link above
  };
}

Por último, esta función muestra todo lo que Hangouts Chat necesita para representar una tarjeta de IU suponiendo que los vínculos y los datos correspondientes y la clave de Google Maps API se agregaron a la carga útil de respuesta de JSON. Puede resultar sorprendente, pero el bot completo es este y aplica esta fórmula común: recibir la solicitud del usuario, reunir los resultados y enviar respuestas al usuario.

Cuando los resultados se muestran de inmediato de esta manera, estamos ante un bot síncrono. No es necesario usar la API porque solo se responde a la solicitud de HTTP. Si tu bot exige un tiempo de procesamiento adicional o debe ejecutar un flujo de trabajo fuera de banda, regresa de inmediato y publica una respuesta asíncrona cuando los trabajos en segundo plano se hayan completado con datos para mostrar. Aquí encontrarás más información sobre la implementación de bots, su flujo de trabajo, y las respuestas síncronas o asíncronas.

Aunque Apps Script probablemente sea una de las alternativas más sencillas para crear e implementar bots, no es la única que los programadores pueden implementar. En términos generales, puedes escribir y alojar bots en diferentes plataformas:

Ya no hay foros de discusión solo para conversaciones. Mediante bots inteligentes que cuenten con muchas características, los usuarios pueden automatizar tareas, obtener información crítica o hacer trabajos complejos con un mensaje simple. Nos entusiasman las posibilidades que la nueva plataforma Hangouts Chat y API ofrece tanto a programadores como a usuarios de G Suite.



Los grandes juegos tienen un poder mágico. Permiten que los jugadores exploren otros mundos, se conviertan en superhéroes y potencien sus capacidades para resolver problemas. Hoy, más que nunca, los programadores como tú pueden pasar a ser leyendas como empresarios exitosos en el ámbito de los juegos. A fin de que puedas lograrlo, compartiremos varias innovaciones diseñadas para que amplíes tu base de seguidores y generes más ingresos con tus apps.

Atrae la atención con nuevos anuncios de video en Google Play

En un espacio atestado de apps para dispositivos móviles, es fundamental llegar a los jugadores indicados en el momento y el lugar indicados. Las campañas universales de apps (UAC) aplican la tecnología de aprendizaje automático de Google para encontrar adeptos leales en Google.com, Google Play, YouTube y más de 3 millones de sitios y apps de la Red de Display de Google. Hasta el presente, Google ha registrado más de 10 mil millones de instalaciones de apps para programadores a través de anuncios.1 Y este es solo el comienzo.

Durante los próximos meses, implementaremos una versión beta para anuncios de video. Se trata de una nueva forma de llegar a los jugadores, mediante imágenes, sonido y movimiento, en Google Play. Estas implementaciones te permitirán mostrarles tu juego cuando realicen gestos de toque, deslizamiento y desplazamiento en busca de su próxima app favorita.
                                                                       Nuevos anuncios de video en Google Play.

Encuentra tu próximo jugador en públicos similares

Al ser tan amplia la cantidad de juegos disponibles para dispositivos móviles, puede resultar difícil saber a quién podría gustarle mucho tu juego. Google contribuye a este propósito analizando millones de combinaciones de señales en tiempo real para ayudarte a llegar a los jugadores que te interesen; por ejemplo, aquellos que puedan superar el primer nivel o realizar una compra directa desde la aplicación. De hecho, ya estamos ayudando de esta manera a generar para nuestros socios 7 mil millones de eventos dentro de apps cada trimestre.2

Sin embargo, tenemos más para ofrecer. Hoy, incorporaremos públicos similares para las UAC con el propósito de ayudarte a encontrar personas cuyos intereses sean similares a los de tus mejores clientes, en el mismo momento en que se interesen en juegos y apps como los tuyos.

Imagina que desarrollaste un juego popular para dispositivos móviles y que lanzarás un título nuevo. Gracias a la alternativa de públicos similares, puedes compartir tus datos de negocios con Google para encontrar más jugadores como los que usan tu juego.  Al conectarte con más clientes adecuados, la alternativa de públicos similares puede ayudarte a descubrir nuevas oportunidades para hacer crecer tu negocio. Esta opción estará disponible en versión beta a partir de mayo para seleccionar anunciantes.


Logra experiencias de anuncios más valiosas con AdMob 

Los anuncios de video son más que un espacio en el que puedes exhibir tus juegos. Pueden convertir tus apps en máquinas de generar ingresos. Según nuestros registros, solo durante el año pasado las impresiones de anuncios de video en apps crecieron 1,8 veces en nuestras redes.3

Sin embargo, las personas dejan de usar incluso las mejores apps cuando la experiencia de anuncios no se adecua al flujo del juego o un anuncio no respeta las preferencias del usuario. Los anuncios con premio generan valor para los jugadores al ofrecerles incentivos, como vidas adicionales o recargas de poder especiales que podrán usar en el juego cuando más lo necesiten. Debido a que los jugadores pueden elegir el momento en el que verán estos anuncios, la experiencia de juego no se interrumpirá. Por ello, más del 45% de los 1000 socios de juegos principales (en función de los ingresos) de AdMob recurren a anuncios con premio para monetizar sus apps.4

El año pasado, logramos que fuera más fácil para ti ofrecer anuncios de video con premio de 6 a 60 segundos en los modos vertical o de paisaje.

Hoy compartiremos dos experiencias de anuncios con premio nuevas que estarán disponibles para programadores de AdMob durante los próximos meses: los anuncios jugables y los anuncios de video con varias opciones. Con estos formatos nuevos, puedes monetizar tus juegos y al mismo tiempo garantizar que tus jugadores puedan interactuar con los anuncios sin interrumpir sus experiencias de juego.
Anuncios con premio con videos de varias opciones
description here
          Anuncios con premio con elementos jugables
Obtén más información de tus socios de anuncios con Open Bidding en AdMob 

Sabemos que la mediación es una estrategia importante para aumentar los ingresos con diferentes redes de anuncios. Sin embargo, también recibimos comentarios vinculados la dificultad de administrar la mediación. Lleva tiempo conciliar informes y buscar ingresos a través de diferentes socios. La implementación de varios SDK de anuncios prolonga el tiempo de desarrollo y hace más lenta tu app. A su vez, la mediación se basa, ante todo, en CPM históricos. Por lo tanto, es posible que estés perdiendo oportunidades de ganar dinero.

Open Bidding, nuestro nuevo producto en versión beta, lleva la monetización al siguiente nivel. Ahora, las redes pueden presentar ofertas para introducir anuncios en tu app de manera simultánea en una única audiencia unificada. Como resultado, se genera una mayor competencia que puede aumentar los ingresos. También se reduce la cantidad de SDK implementados, se simplifican los pagos y se obtienen estadísticas significativas a partir de informes integrados en un único panel de rendimiento.

Open Bidding ya se encuentra activo y recibe ofertas de Smaato, Index Exchange y OpenX. Esperamos agregar aún más redes durante los próximos meses. Entre otras, AdColony y Vungle. De esta manera, podrás aumentar las ganancias con tus apps y recuperar tiempo para mejorarlas aún más.

Para obtener más información sobre estas innovaciones, súmate a nosotros en la conferencia de programadores de juegos la semana que viene. Mi equipo y yo esperamos compartir más detalles sobre el trabajo que estamos haciendo para que puedas convertirte en el mejor exponente de la historia en el ámbito de los juegos para dispositivos móviles.




1. Datos de Google Ads, iOS y Android, Global, marzo de 2018.
2. Datos de Google Ads, iOS y Android, Global, marzo de 2018.
3. Datos de Google Ads, iOS y Android, Global, enero de 2016 a diciembre de 2017.
4. Datos de Google Ads, iOS y Android, Global, enero de 2018.



Publicado por Dave Smith, representante de programadores para IoT
Hoy lanzaremos la versión preliminar 7 (DP7) de Android Things, la plataforma de Google que permite a los programadores de Android crear dispositivos de Internet de las cosas (IoT). La plataforma también admite implementaciones poderosas, como el procesamiento de video y audio, y el aprendizaje automático integrado con TensorFlow.

Del Blog de Android para programadores 

Publicado por Dave Smith, representante de programadores para IoT
Hoy lanzaremos la versión preliminar 7 (DP7) de Android Things, la plataforma de Google que permite a los programadores de Android crear dispositivos de Internet de las cosas (IoT). La plataforma también admite implementaciones poderosas, como el procesamiento de video y audio, y el aprendizaje automático integrado con TensorFlow.

Esta última versión preliminar se basa en Android 8.1 e incluye actualizaciones para admitir la versión 11.8.0 de Google Play Services. Para ver toda la información sobre lo que se incluye en la DP7, consulten las notas de la versión. A continuación, se muestran algunos aspectos destacados:

Mejoras de las consolas y actualizaciones de dispositivos


También se encuentran disponibles características nuevas en la Android Things Console para mejorar la administración de producto de un prototipo a la producción:
  • Modelos de productos: podrán crear diferentes variaciones de software del mismo producto de hardware y manejar las compilaciones y actualizaciones para cada uno de forma independiente.
  • Uso compartido de productos: podrán otorgar acceso adicional a cuentas de usuarios para la visualización y gestión de los modelos, las compilaciones y las actualizaciones de un producto determinado.
  • Analytics: podrán visualizar métricas sobre activaciones de dispositivos y actualizar las estadísticas para sus productos.
  • Canales de actualización: podrán implementar compilaciones de software en grupos de dispositivos para desarrollos o pruebas beta, sin generar afectar los dispositivos de producción en el campo.

Los dispositivos se pueden suscribir a diferentes canales de actualización utilizando las nuevas API agregadas a UpdateManager. Para obtener más información sobre la configuración de las suscripciones de canales de actualización, consulten la guía de la Device Updates API actualizada y la documentación de la consola.

Respuestas a los comentarios de los programadores


Hemos recibido muchísimos comentarios fabulosos de los programadores y nos concentramos mayormente en abordar muchos de los problemas más citados para esta versión:
  • Mayor compatibilidad con resoluciones de cámaras: ahora las apps pueden capturar datos de imagen con la máxima resolución nativa del hardware de la cámara.
  • Compatibilidad con el formato MIDI: podrán usar la MidiManager API para compilar un dispositivo virtual MIDI en sus apps o interactuar con controladores MIDI externos.
  • Mejor capacidad de prueba de apps de Android Things: la Peripheral I/O API ahora expone interfaces en lugar de clases abstractas, lo cual permite que en las pruebas de unidades locales se reemplacen estos objetos por emulaciones y códigos auxiliares de manera más sencilla.
  • Denominación de API consistente: en esta versión se cambian los nombres de muchas de las clases existentes de Android Things API para proporcionar una experiencia más uniforme al programador al nivel de toda la superficie. Consulten la referencia de API actualizada para ver los cambios de nombres de paquetes y clases.

Nuevas API de Bluetooth


Los dispositivos móviles con Android presentan controles para que los usuarios realicen sincronizaciones y establezcan conexiones con dispositivos Bluetooth a través de la app Ajustes. Los dispositivos de IoT que se ejecutan en Android Things deben realizar estas mismas operaciones mediante programación. La nueva BluetoothConnectionManager API permite que las apps tomen el control del proceso de sincronización y conexión. Para obtener más información, lean la nueva guía de Bluetooth API.

Actualizaciones de ejemplos


En Google I/O, el año pasado, hicimos una demostración de la compilación de una app con Kotlin en Android Things. Para los programadores que usan Kotlin, hemos comenzado a publicar versiones de Kotlin de los ejemplos de Android Things. Ya pueden descargar el ejemplo de botón y LED en Kotlin y Java. Pronto se ofrecerán más ejemplos.

También hemos migrado el ejemplo de app de clasificación de imágenes de TensorFlow para usar la biblioteca de TensorFlow Lite, lo cual reduce el tamaño del modelo previamente preparado de TensorFlow en más de un 90% y el tiempo que se requiere para clasificar las imágenes en aproximadamente un 50%.

Comentarios


Continúen enviándonos comentarios a través de informes de errores y solicitudes de características. También pueden realizar preguntas en Stack Overflow. Otra alternativa es unirse a la Comunidad de programadores IoT de Google en Google+, un excelente recurso para obtener actualizaciones y debatir ideas. ¡Esperamos ver sus compilaciones con Android Things!

Del Blog de Android para programadores
Publicado por Marc Stogaitis y Tajinder Gadh, ingenieros de software


Conducir es una parte esencial de nuestras actividades diarias. Por ello, en Google pasamos mucho tiempo pensando en cómo podemos mejorar los dispositivos Android y hacerlos más seguros para nuestros usuarios. En este artículo, analizamos la manera de evitar distracciones al conducir y de construir juntos un ecosistema abierto para permitir experiencias con smartphones en las que se priorice la seguridad.
Recientemente, lanzamos Driving Do-Not-Disturb como parte de la generación de dispositivos Pixel 2 recientemente anunciada. Una vez habilitada, Driving Do-Not-Disturb activa automáticamente el modo “no molestar” en tu dispositivo mientras conduces. Mientras el modo está activo, los mensajes y las notificaciones entrantes se silencian y puedes recibir llamadas entrantes, indicaciones de navegación e interacciones de voz a través de un medio bluetooth conectado al auto. El producto está diseñado para limitar las distracciones al conducir y, al mismo tiempo, para no generar bloqueos. De esta manera, los usuarios pueden continuar usando apps de navegación o de clase similar con una fricción mínima.
En su estructura interna, dispone de reconocimiento de actividades en dispositivos mediante tecnología de IA, con lo cual reconoce situaciones en que una persona conduce un vehículo usando señales de baja potencia de varios sensores o sistemas bluetooth y WiFi. El reconocimiento de actividades usa Android Sensor Hub para garantizar una latencia baja, baja potencia y detección precisa de situaciones de conducción.
Este es un paso hacia adelante en nuestro viaje, pero aún nos falta mucho. A principios del próximo año, presentaremos la Activity Recognition Transition API, la misma API usadaa en Driving Do Not Disturb para generar experiencias de conducción sin distracciones.
Apreciamos tus comentarios y seguiremos teniéndolos en cuenta a medida que el producto evolucione.
Si tienes preguntas acerca de la configuración de Driving Do-Not-Disturb, consulta nuestro Centro de ayuda.


Del Blog de desarrolladores de G Suite

Quizá hayas oído hablar del marco de trabajo de código abierto de Accelerated Mobile Pages (AMP). Es un marco de trabajo para programadores que les permite crear contenido móvil de carga más rápida en la Web. Además de simplemente cargar páginas más rápido, AMP ahora admite la compilación de una amplia variedad de páginas enriquecidas para la Web. Hoy anunciamos AMP para correo electrónico, con lo cual los correos electrónicos podrán tener el formato y enviarse como documentos de AMP. Como parte de esto, también lanzaremos la versión preliminar para programadores de Gmail de AMP para correo electrónico; por lo tanto, cuando termines de compilar tus correos electrónicos, podrás probarlos en Gmail.

Del Blog de desarrolladores de G Suite

Quizá hayas oído hablar del marco de trabajo de código abierto de Accelerated Mobile Pages (AMP). Es un marco de trabajo para programadores que les permite crear contenido móvil de carga más rápida en la Web. Además de simplemente cargar páginas más rápido, AMP ahora admite la compilación de una amplia variedad de páginas enriquecidas para la Web. Hoy anunciamos AMP para correo electrónico, con lo cual los correos electrónicos podrán tener el formato y enviarse como documentos de AMP. Como parte de esto, también lanzaremos la versión preliminar para programadores de Gmail de AMP para correo electrónico; por lo tanto, cuando termines de compilar tus correos electrónicos, podrás probarlos en Gmail.

AMP para correo electrónico abre varias posibilidades nuevas:
  • Diseñar componentes interactivos para correo electrónico usando una extensa biblioteca de componentes de AMP compatibles, como amp-carousel, amp-form, amp-bind, amp-list, entre otros
  • Mantener tu contenido actualizado e interactivo para los usuarios
  • Crear una mayor cantidad de experiencias de correo electrónico más atractivas y accionables
Explora y guarda tus elementos favoritos en Pinterest.
Un ejemplo:


<!doctype html>
<html ⚡4email>
<head>
 <meta charset="utf-8">
 <script async src="https://cdn.ampproject.org/v0.js">&lt'/script>
 <!-- The AMP4email boilerplate. -->
 <style amp4email-boilerplate>body{visibility:hidden}</style>
 <script async custom-element="amp-carousel"    src="https://cdn.ampproject.org/v0/amp-carousel-0.1.js"></script>
 <script async custom-element="amp-selector" src="https://cdn.ampproject.org/v0/amp-selector-0.1.js"></script>
 <script async custom-element="amp-bind" src="https://cdn.ampproject.org/v0/amp-bind-0.1.js"></script>
 <script async custom-element="amp-form" src="https://cdn.ampproject.org/v0/amp-form-0.1.js"></script>
 <script async custom-template="amp-mustache" src="https://cdn.ampproject.org/v0/amp-mustache-0.1.js"></script>
 <style amp-custom> html{font-family: 'Roboto';}
 ...
 </style>
</head>
<body>
 <h2>Hello dear user,</h2>
 <div class="photo-gallery">
   <div class="text">Photos from your latest trips:
     <span [text]="+selectedSlide + 1">1</span>/4</div>
   <amp-selector layout="container" name="carousel-selector"...>
     <amp-carousel controls width="430" height="80">
       <amp-img ...></amp-img>
   ...
     </amp-carousel>
   </amp-selector>
   <amp-carousel ...>
     <amp-img ...></amp-img>
    ...
   </amp-carousel>
   <div class="trip-location">Please rate your trip location:</div>
   <form id="rating" class="p2" method="post" ...>
   <fieldset class="rating">
     <input name="rating" type="radio" id="rating1" value="1" .../>
     <label for="rating1" title="1 stars">★</label>
     ...
   </fieldset>
   <div submit-success>
     <template type="amp-mustache">
       <div class="text">Thanks for rating {{rating}} star(s)!</div>
     </template>
   </div>
   </form>
 </div>
</body>
</html>
[Full example in AmpByExample’s Playground]

La especificación de AMP para correo electrónico está disponible hoy y será compatible con Gmail más adelante durante el año. Para obtener acceso a la versión preliminar e informarte sobre cómo Gmail admitirá AMP para correo electrónico, regístrate aquí. Debido a que se trata de una especificación abierta, esperamos que otros clientes de correo electrónico también la adopten.


Publicado por Dave Burke, Vicepresidente de ingeniería, publicado en Blog de Android para programadores.
La semana pasada, en el congreso Mobile World Congress, vimos que el ecosistema de Android, formado por desarrolladores, fabricantes de dispositivos y proveedores de silicio, continúa proporcionando experiencias fantásticas a usuarios de todo el mundo.

Publicado por Dave Burke, Vicepresidente de ingeniería, publicado en Blog de Android para programadores.
La semana pasada, en el congreso Mobile World Congress, vimos que el ecosistema de Android, formado por desarrolladores, fabricantes de dispositivos y proveedores de silicio, continúa proporcionando experiencias fantásticas a usuarios de todo el mundo.

Nos anticipamos y compartimos la primera versión preliminar para desarrolladores de Android P, la nueva versión de Android. Se trata de una compilación básica preliminar pensada solo para desarrolladores; ustedes son los revisores y evaluadores más confiables ;-). Los comentarios tempranos de nuestra comunidad de desarrolladores son fundamentales para ayudarnos a mejorar la plataforma y satisfacer sus necesidades. Nos gustaría que comiencen a probar las nuevas funciones y API de P, y como siempre, confiamos en sus ideas y comentarios adelantados; por eso, ¡no dejen de darnos su opinión!

La primera versión preliminar de Android P para desarrolladores es solo el comienzo; tendremos mucho más para compartir en Google I/O en mayo ¡Estén atentos!

Nuevas funciones para probar en tus apps


Aquí les mostramos algunas de las funciones geniales de esta primera versión preliminar de Android P que queremos que prueben y evalúen con su opinión.

Posicionamiento en interiores con RTT de WiFi


El posicionamiento preciso en interiores ha sido, por mucho tiempo, un desafío que abre nuevas oportunidades para servicios basados en la ubicación. Android P suma una plataforma compatible con el protocolo de WiFi IEEE 802.11mc, también conocido como tiempo de ida y vuelta (RTT) de WiFi, para que puedan aprovechar el posicionamiento en interiores en sus apps.

En los dispositivos Android P con hardware correspondiente, permiso de ubicación y ubicación habilitada, sus apps podrán usar RTT API para medir la distancia a los puntos de acceso (PA) WiFi cercanos. No es necesario que el dispositivo se conecte a los PA para usar RTT, y mantener la privacidad; solo el teléfono puede determinar la distancia, los PA no pueden hacerlo.

Al conocer la distancia a 3 o más PA, pueden calcular la posición del dispositivo con una precisión de 1 a 2 metros. Con esa precisión, pueden crear nuevas experiencias, como la navegación en instalaciones, servicios específicos basados en la ubicación, como el control de voz inequívoco (p.ej., “Encender esta luz”) e información basada en la ubicación (p. ej., “¿Hay ofertas especiales para este producto?”).

Compatibilidad con recorte de pantalla


Ahora, las apps pueden aprovechar al máximo las pantallas de los dispositivos más nuevos con contenido en pantalla completa. Agregamos el recorte de pantalla en la plataforma, junto con API que pueden usar para gestionar la visualización de su contenido.

La compatibilidad con recorte funciona sin inconvenientes para las apps y el sistema administra la altura de la barra de estado para separar su contenido del recorte. Si tienen contenido inmersivo crítico, también pueden usar las nuevas API para comprobar la forma del recorte y solicitar que se aplique un diseño de pantalla completa a su alrededor. Pueden verificar si el dispositivo actual tiene un recorte llamando a getDisplayCutout(), y luego determinar la ubicación y la forma del área de recorte usando DisplayCutout. Un nuevo atributo de diseño de ventanas, layoutInDisplayCutoutMode, les permite indicar al sistema cómo y cuándo mostrar su contenido en relación con el área de recorte. Pueden encontrar más información aquí.

Para que les resulte más fácil compilar y probar la compatibilidad con el recorte en su app, agregamos una opción para desarrolladores que simula un recorte en cualquier dispositivo. Les recomendamos probar sus apps existentes con el recorte de pantalla habilitado para garantizar que su contenido se muestre correctamente.

Las apps con contenido inmersivo pueden mostrar contenido en pantalla completa en dispositivos con recorte de pantalla.

Notificaciones de mensajería mejoradas


En Android P, priorizamos la mejora de la visibilidad y la función de las notificaciones. Prueben el nuevo estilo de notificación MessagingStyle, que destaca quién envía mensajes y cómo se puede responder. Pueden mostrar conversaciones, adjuntar fotos y calcos, e incluso sugerir respuestas inteligentes. Encontrarán información detallada aquí.
En las notificaciones MessagingStyle ahora pueden mostrar conversaciones y respuestas inteligentes [izquierda], e incluso adjuntar imágenes y calcos [derecha].

Multi-camera API


Ahora pueden acceder a transmisiones simultáneamente desde dos o más cámaras físicas en dispositivos con Android P. En dispositivos con dos cámaras frontales o posteriores, pueden crear funciones innovadoras que no serían posibles con una sola cámara, como el zoom uniforme, el bokeh y la visión estéreo. La API también les permite llamar a una transmisión de cámara lógica o fusionada que automáticamente alterna entre dos o más cámaras. Esperamos ver sus creaciones nuevas y fabulosas no bien los dispositivos Android P compatibles con varias cámaras lleguen al mercado durante este año.

Entre otras mejoras en la cámara, se incluyen nuevos parámetros de sesión, que ayudan a reducir demoras durante la captura inicial, y el uso compartido en Surface, que permite a los clientes de la cámara manejar varios casos de uso sin tener que detener e iniciar la transmisión de la cámara. También agregamos API para brindar compatibilidad con flash basada en la pantalla y acceso a marcas de tiempo OIS para lograr estabilidad en la imagen y efectos especiales en el nivel de la app.

ImageDecoder para mapas de bits y elementos de diseño


Android P ofrece una alternativa más sencilla para decodificar imágenes en mapas de bits o elementos de diseño; se trata de ImageDecoder, que reemplaza a BitmapFactory. ImageDecoder les permite crear un mapa de bits o elemento de diseño a partir de un búfer de bytes, un archivo o un URI. Ofrece varias ventajas en comparación con BitmapFactory, incluida la compatibilidad con ajuste de escala exacto, decodificación en un solo paso en memoria de hardware, compatibilidad con posprocesamiento en la decodificación y decodificación de imágenes animadas.

Pueden decodificar y aplicar un ajuste a escala a un tamaño exacto realizando solo una llamada a setResize() con las dimensiones exactas. También pueden llamar a getSampledSize() para obtener las dimensiones de la imagen en una frecuencia de muestreo específica, y luego ajustar a escala esas dimensiones. Si desean aplicar posprocesamiento a una imagen (por ejemplo, aplicar esquinas redondeadas a máscaras circulares o efectos más complicados), pueden pasar a ImageDecoder cualquier android.graphics.PostProcessor. También pueden crear elementos de diseño directamente con ImageDecoder.decodeDrawable(). Si la imagen codificada es un GIF o WebP animado, el elemento de diseño será una instancia del nuevo AnimatedImageDrawable.

Video HDR VP9, compresión de imagen HEIF y API de medios


Android P incorpora compatibilidad integrada para HDR VP9 Perfil 2 para que ahora puedan ofrecer películas en HDR a sus usuarios en YouTube, Play Movies y otros recursos en dispositivos que admitan HDR.

Nos entusiasma agregar codificación de imágenes HEIF (heic) a la plataforma. HEIF es un formato popular para fotos que mejora la compresión para el guardado en un medio de almacenamiento y datos de red. Con dispositivos Android P compatibles con la plataforma, es fácil enviar y utilizar imágenes HEIF desde sus servidores backend. Asegúrense de que sus apps sean compatibles con este formato de datos para compartir y mostrar contenido, y luego prueben HEIF como formato de almacenamiento de imágenes en sus apps. Pueden realizar una conversión de jpeg a heic usando ImageDecoder o BitmapFactory para obtener un mapa de bits a partir de jpeg, y usar HeifWriter en la nueva biblioteca de compatibilidad alfa para escribir imágenes HEIF estáticas desde el búfer de bytes YUV, Surface o un mapa de bits.

También nos encontramos en el proceso de mejorar y refactorizar las API de medios para que resulten más fáciles de desarrollar e integrar; les proporcionaremos más información posteriormente durante el año.

Sensibilidad al costo de datos en JobScheduler


JobScheduler es el servicio central de Android pensado para ayudarlos a administrar tareas programadas o trabajos en Descanso, App Standby y cambios de los Límites de segundo plano. En Android P, JobScheduler controla mejor las tareas relacionadas con la red para el usuario aplicando coordinación con señales de estado de red que los proveedores proporcionan por separado.

Ahora las tareas pueden declarar su tamaño de datos estimado, realizar búsquedas anticipadas de señal y especificar requisitos de red detallados; los proveedores pueden notificar congestión o falta de medición en las redes. JobScheduler luego administra el trabajo de acuerdo con el estado de la red. Por ejemplo, cuando una red está congestionada, JobScheduler podría diferir las solicitudes de red de magnitud grande. Cuando la red es no medida, puede ejecutar tareas de búsqueda anticipada para mejorar la experiencia del usuario, como la búsqueda anticipada de encabezados.

Cuando agreguen trabajos, prueben setEstimatedNetworkBytes(), setIsPrefetch() y setRequiredNetwork() para permitir que JobScheduler controle las tareas correctamente. Cuando se ejecute su trabajo, asegúrense de usar el objeto de red que muestre JobParameters.getNetwork(); de lo contrario, implícitamente usarán la red predeterminada del dispositivo que podría no cumplir con sus requisitos y generar uso de datos no intencionado.

Neural Networks API 1.1


En Android 8.1 presentamos Neural Networks API para acelerar el aprendizaje automático en dispositivos con Android. En Android P, ampliamos y mejoramos esta API agregando compatibilidad con nueve operaciones nuevas: Pad, BatchToSpaceND, SpaceToBatchND, Transpose, Strided Slice, Mean, Div, Sub y Squeeze. Si tienen un dispositivo Pixel 2, la versión DP1 ahora incluye un controlador Qualcomm Hexagon HVX con aceleración para modelos cuantificados.

Mejoras en Autofill


En Android P, continuamos mejorando Autofill Framework en respuesta a los comentarios de usuarios y desarrolladores. Además de correcciones de errores claves, en esta versión se incluyen nuevas API que permiten a los administradores de contraseñas mejorar la experiencia del usuario con Autofill; por ejemplo, se mejoran la filtración del conjunto de datos, la limpieza de los datos ingresados y el modo de compatibilidad. El modo de compatibilidad en particular tiene un alto impacto en los usuarios finales, ya que permite a los administradores de contraseñas adoptar un enfoque basado en la accesibilidad en apps que aún no son totalmente compatibles con Autofill, sin afectar el rendimiento ni la seguridad. Podrán consultar toda la información sobre las novedades aquí.

Abrir Mobile API para pagos NFC y transacciones seguras


Android P suma la implementación de GlobalPlatform Open Mobile API en Android. En los dispositivos compatibles, las apps pueden usar la OMAPI API para acceder a elementos seguros (SE) y habilitar pagos con tarjeta inteligente y otros servicios seguros. Una capa de abstracción de hardware (HAL) proporciona la API subyacente para enumerar diferentes elementos seguros (eSE, UICC, etc.) disponibles.

Fortalecimiento de las bases de Android


En Android P continuamos nuestra inversión a largo plazo con el objetivo de hacer que Android se la mejor plataforma para los desarrolladores.

Seguridad para las apps


En Android P avanzamos a una IU más uniforme para la autenticación mediante huellas dactilares en apps y dispositivos. Android ahora proporciona un diálogo de sistema estándar para solicitar al usuario que toque el sensor de huellas digitales, y administra el texto y la ubicación según corresponda para el dispositivo. Las apps pueden activar el diálogo de huellas digitales del sistema usando una nueva FingerprintDialog API. Les recomendamos realizar un cambio al nuevo diálogo de sistema cuanto antes.

Como parte de un esfuerzo mayor para trasladar todo el tráfico de red de cleartext (HTTP sin encriptar) a TLS, también estamos cambiando los ajustes predeterminados de la Configuración de seguridad de la red para bloquear todo el tráfico de cleartext. Si están usando una configuración de seguridad de red, deberán establecer conexiones a través de TLS, a menos que indiquen explícitamente que desean usar cleartext para dominios específicos.

Privacidad para los usuarios


Para optimizar la privacidad, Android P restringe el acceso al micrófono, la cámara y todos los sensores de SensorManager de apps inactivas. Mientras la UID de tu app está inactiva, el micrófono notifica audio vacío y los sensores dejan de notificar eventos. Las cámaras que usan sus apps se desconectan y se produce un error si la app intenta usarlas. En la mayoría de los casos, estas restricciones no deberían generar problemas nuevos para las apps existentes, pero les recomendamos eliminar esas solicitudes de sus apps.

También habilitaremos la encriptación de las copias de seguridad de Android con un secreto del cliente. Esta función aún está en desarrollo y se presentará en una versión preliminar futura de Android P.

En el largo plazo, trabajaremos para proporcionar compatibilidad con la aleatorización por red de direcciones MAC asociadas con la plataforma. En los dispositivos compatibles que tengan Android P, pueden habilitar esto de forma experimental para probarlo como una nueva opción para desarrolladores.

Android P también permite al usuario controlar el acceso al identificador build.serial de la plataforma disponiéndolo detrás del permiso READ_PHONE_STATE. El acceso directo a este identificador es obsoleto desde Android 8.0. Para acceder al identificador build.serial, deben usar el método Build.getSerial().

Rendimiento de ART


Estamos trabajando para proporcionar mejoras de rendimiento y eficiencia para todas las apps a través del tiempo de ejecución ART. Ampliamos el uso de perfiles de ejecución por parte de ART para optimizar las apps y reducir el consumo de memoria del código de app compilado. ART ahora usa información de perfil para reescribir archivos DEX en el dispositivo, con reducciones de hasta el 11% en diferentes apps populares. Esperamos que esas reducciones se correlacionen estrechamente con reducciones en el consumo de memoria del sistema por parte de los archivos DEX y en los tiempos de inicio para sus apps.

Optimización de Kotlin


Kotlin es un lenguaje de primera clase en Android. ¡Si aún no lo probaron, deberían hacerlo! Nos hemos comprometido firmemente a mantener Kotlin en Android a largo plazo y continuar ampliando la compatibilidad, que incluye optimizar el rendimiento del código Kotlin. En P verán los primeros resultados de este trabajo; mejoramos varias optimizaciones del compilador, especialmente las que apuntan a bucles, para lograr un mejor rendimiento. También seguimos trabajando junto con JetBrains para optimizar el código que genera Kotlin. Pueden obtener todas estas novedosas mejoras de rendimiento de Kotlin con solo mantener actualizado el complemento Kotlin de Android Studio.

Más eficacia


En Android P continuamos refinando Doze, App Standby y Background Limits para optimizar aún más la duración de la batería. Asegúrense de probar sus apps con estas funciones y enviarnos sus comentarios.

Apuntando a un Android moderno


Android P tomó forma en base a nuestras iniciativas de largo plazo orientadas a modernizar las bases de Android y las apps que se ejecutan en la plataforma. Como anunciamos recientemente, Google Play requerirá que todas las actualizaciones de apps apunten a Android Oreo (targetSdkVersion 26 o posterior) antes de noviembre de 2018 y que sean compatibles con hardware de 64 bits más cerca de 2019.

En línea con estos cambios, Android P advertirá a los usuarios con un diálogo cuando instalen una app que apunte a una plataforma anterior a Android 4.2 (targetSdkVersion inferior a 17), y las versiones futuras de la plataforma continuarán aumentando ese requisito mínimo. Recomendamos a todos los desarrolladores de Android que empiecen a planificar la migración para apuntar ahora a la API 26, y que comiencen las tareas de migración lo más pronto posible. Esta es una lista de verificación de recursos para obtener ayuda y asistencia. Esperamos ver que sus apps aprovechen al máximo este Android moderno.

Mejora de la compatibilidad de las apps a través de API públicas


Un tema clave para usuarios y desarrolladores es la compatibilidad de las apps; asegúrense de que las apps estén listas para las nuevas versiones de la plataforma a medida que se lancen, sin correr el riesgo de que ocurran bloqueos para los usuarios e implementaciones de emergencia para los desarrolladores. Hay buenas probabilidades de que las apps que usan Android API públicas del SDK o NDK sean compatibles. Sin embargo, las apps que usan interfaces y bibliotecas privadas para Android no lo son.

Por lo tanto, con Android P estamos iniciando un proceso gradual para restringir el acceso a interfaces seleccionadas que no pertenecen al SDK y les pedimos a los desarrolladores, incluidos los equipos de apps dentro de Google, que usen los equivalentes públicos como alternativa. Cuando no haya un equivalente público para tu caso de uso, avísanos. Queremos asegurarnos de que este proceso sea lo más sencillo posible para los desarrolladores, por lo que aplicaremos sus comentarios a fin de garantizar que la implementación inicial solo afecte a las API que los desarrolladores puedan migrar fácilmente a alternativas públicas. Podrán obtener más información sobre las restricciones aquí.

Los primeros pasos son simples


Primero, hagan que sus app sean compatibles para permitir que sus usuarios realicen una transición sin inconvenientes a Android P. Simplemente, descarguen una imagen de sistema para dispositivos o una imagen de sistema del emulador, instalen sus apps actuales y pruébenlas. La app deberá ejecutarse y verse muy bien, y además de controlar correctamente los cambios de comportamiento. Una vez que apliquen las actualizaciones necesarias, les recomendamos realizar la publicación en Google Play de inmediato sin cambiar la plataforma a la que apunta la app.

Recuerden que no necesitan un dispositivo compatible con Pixel para realizar pruebas o desarrollar en Android P. Para la mayoría de los usos, recomendamos configurar un dispositivo Android Virtual Device en Android Emulator como entorno de prueba. Si no han probado el emulador últimamente, les resultará increíblemente rápido; se inicia en menos de 6 segundos, es fácil de usar e incluso pueden modelar pantallas de última generación; entre otras, se encuentran las largas y las de recorte de cámara.

Luego, cambien la plataforma a la que apunten sus apps por “P” y ejecútenla con la experiencia de Android P completa. En sus apps, fijen targetSdkVersion en “P” y compileSdkVersion en “android-P”, realicen la compilación y luego una prueba. Asegúrense de leer los cambios de comportamiento para apps que apunten a P a fin de identificar las áreas que querrán probar y podrían necesitar ajustes.

Cuando estén listos, exploren Android P e infórmense sobre las diversas funciones y API nuevas que pueden aprovechar en sus apps. Para que explorar las nuevas API sea todavía más fácil, lean el informe de diferencias de las API y la Referencia de API para Android P. Visiten el sitio de la versión preliminar para desarrolladores de P para obtener información detallada sobre el cronograma de versiones preliminares y recursos de ayuda. Miren también este video, en el que se destacan las novedades de Android P para desarrolladores.

Para comenzar a realizar compilaciones con Android P, descarguen el SDK de la versión preliminar de P para desarrolladores y las herramientas en Android Studio 3.1 o usen la última versión Canary de Android Studio 3.2. También lanzaremos una versión alfa de la biblioteca de compatibilidad 28.0.0 para que la prueben.

Lo que viene


La versión preliminar de Android P para desarrolladores incluye un SDK actualizado con imágenes del sistema para probar en el emulador Android Emulator oficial y en dispositivos Pixel, Pixel XL Pixel 2 y Pixel 2 XL.

Planeamos actualizar las imágenes del sistema y el SDK de la versión preliminar con frecuencia mientras esté vigente la versión preliminar. Este lanzamiento inicial es solo para desarrolladores y no está previsto para uso diario o por parte del consumidor. Por lo tanto, se encuentra disponible únicamente para descarga e instalación manual. Puedes acceder a descargas e instrucciones aquí.

A medida que nos aproximemos al producto final, invitaremos también a los consumidores a probarlo y en ese momento abriremos las inscripciones mediante Android Beta. No se pierdan la información detallada y por ahora recuerden que Android Beta actualmente no está disponible para Android P.

Como siempre, sus comentarios son muy importantes; por eso, transmítannos sus opiniones. Cuanto antes las recibamos, mayor será la cantidad que podremos aplicar. Cuando encuentren problemas, notifíquenlos aquí. Tenemos listas de prioridades independientes para presentar problemas de la plataforma, problemas de compatibilidad de las apps y problemas con SDK externos.

Optimizar la experiencia de anuncios en tu app para un público diverso puede ser difícil. Mostrar a los usuarios los anuncios adecuados puede mejorar su experiencia general con los anuncios y maximizar los ingresos de tu app.
Optimizar la experiencia de anuncios en tu app para un público diverso puede ser difícil. Mostrar a los usuarios los anuncios adecuados puede mejorar su experiencia general con los anuncios y maximizar los ingresos de tu app.

AdMob lanzó una nueva función que te permite especificar la clasificación de contenido para los anuncios de Google que se muestren en tu app. Con la nueva señal max_ad_content_rating, ahora puedes seleccionar la clasificación del contenido de demanda de Google que desees entregar en base a solicitudes.

Cuatro opciones de clasificación de contenido te ofrecen la especificidad que necesitas para brindar a los usuarios de cada nivel una mejor experiencia.

Las cuatro nuevas opciones de clasificación de contenido son las siguientes:

  • G: contenido adecuado para el público en general. 
  • PG: contenido adecuado para la mayor parte del público con supervisión de los padres. 
  • -T: contenido adecuado para público adolescente y de edad superior. 
  • MA: contenido adecuado solo para público adulto. 


Puedes comenzar a enviar la nueva señal max_ad_content_rating en el Google Mobile Ads SDK siguiendo estas guías de Android e iOS.

 Para obtener más información sobre la nueva señal y las opciones de clasificación de contenido, visita el centro de ayuda de AdMob o comunícate con tu equipo de cuentas de Google.

Publicado por Alexa Haushalter, gerenta de Producto, AdMob.



Doug Stevenson
Doug Stevenson
Representante de programadores

Al remontarme a lo que sucedió unos 10 años atrás, cuando redactaba código para una base de código monolítica escrita en C++, uno de los peores recuerdos que tengo de esa época es el de haber tenido que esperar que se completara una compilación solo para ejecutar algunas líneas de código nuevo. El padecimiento era tan común entre los ingenieros, que de él surgió una de las historietas más populares de todos los tiempos ...


Doug Stevenson
Doug Stevenson
Representante de programadores

Al remontarme a lo que sucedió unos 10 años atrás, cuando redactaba código para una base de código monolítica escrita en C++, uno de los peores recuerdos que tengo de esa época es el de haber tenido que esperar que se completara una compilación solo para ejecutar algunas líneas de código nuevo. El padecimiento era tan común entre los ingenieros, que de él surgió una de las historietas más populares de todos los tiempos, XKCD:

Es una idea excelente, si se aplica de forma segura.

Por entonces, en mi oficina no había espadas para jugar, por lo que esperar a que finalizara una compilación era muy aburrido.

El padecimiento sería similar si tuviera que implementar mi código de Cloud Functions cada vez que desee probar una función. Por suerte, Firebase CLI ahora tiene un emulador local que funciona con HTTPS y otros tipos de funciones. Esto me permite ejecutar las funciones en mi máquina de desarrollo emulando los eventos activadores. Puedes hallar más información en la documentación.

Una de las funciones prácticas del emulador es que vuelve a cargar los archivos JavaScript que cambian con el tiempo. Por lo tanto, si modificas el código de una función, puedes probarla de inmediato en el emulador sin tener que reiniciarla:
  1. Cambiar al editor de código y escribir JavaScript.
  2. Pasar al emulador y ejecutar el código.
  3. GOTO 1

Es rápido y fácil, y te mantiene “dentro de la zona”.

Sin embargo, el proceso se vuelve un poco menos sencillo al realizar el cambio de JavaScript a TypeScript. La ejecución de TypeScript en Cloud Functions requiere una fase de compilación para convertir TypeScript a JavaScript de modo que el emulador pueda ejecutarlo. Se suman algunas complejidades:
  1. Pasar al editor de código y escribir TypeScript.
  2. Pasar al símbolo del sistema y ejecutar npm run build para generar JavaScript.
  3. Pasar al emulador y ejecutar el código.
  4. GOTO 1

Hay una manera más sencilla de hacer esto sin la necesidad de ejecutar un comando en cada ocasión. El compilador de TypeScript (tsc) tiene un “modo de supervisión” especial que le permite registrar los cambios realizados en tu TypeScript y compilarlos automáticamente. Puedes ejecutarlo desde la línea de comando cambiando a tu carpeta de funciones y ejecutando este comando:
./node_modules/.bin/tsc --watch

Con esta ejecución y el emulador local, que registra automáticamente los cambios realizados en el código JavaScript compilado, tu flujo de desarrollo vuelve a esto:
  1. Pasar al editor de código y escribir TypeScript.
  2. Pasar al emulador y ejecutar el código.
  3. GOTO 1

A su vez, si usas VSCode, incluso puedes hacer que ejecute tsc directamente en el modo de supervisión. Puedes activarlo desde Tasks -> Run Build Task..., luego selecciona “tsc: watch”.

Esto activará un shell de comando directamente en el IDE, ejecutará tsc --watch y hará que se muestre el resultado. Verás mensajes como este, junto con los errores de compilación, cada vez que se modifique un archivo TypeScript:
2:38:38 PM - File change detected. Starting incremental compilation...
2:38:38 PM - Compilation complete. Watching for file changes.

Ten en cuenta que tsc en el modo de supervisión no ejecutará TSLint con tu código, por lo que debes asegurarte de configurar eso en VSCode de modo que siempre puedas ver sus recomendaciones, tal como lo mostré en una entrada del blog anterior. Si no aplicas lint a tu código, te recomendamos mucho que lo hagas porque detectarás posibles errores que podrían ser muy perjudiciales para la producción.