Skip to main content

Utilice la API de detecci贸n de inactividad para averiguar cu谩ndo el usuario no est谩 utilizando activamente su dispositivo.


Actualizado

La API de detecci贸n de inactividad es parte de
proyecto de capacidades
y actualmente est谩 en desarrollo. Esta publicaci贸n se actualizar谩 a medida que avance la implementaci贸n.

驴Qu茅 es la API de detecci贸n de inactividad?

La API de Idle Detection notifica a los desarrolladores cuando un usuario est谩 inactivo, indicando cosas como falta de interacci贸n con el teclado, el mouse, la pantalla, la activaci贸n de un protector de pantalla, el bloqueo de la pantalla o el cambio a una pantalla diferente. Un umbral definido por el desarrollador activa la notificaci贸n.

Casos de uso sugeridos para la API de detecci贸n de inactividad

Ejemplos de sitios que pueden usar esta API incluyen:

  • Las aplicaciones de chat o los sitios de redes sociales en l铆nea pueden usar esta API para que el usuario sepa si sus contactos est谩n disponibles actualmente.
  • Las aplicaciones de kiosco expuestas p煤blicamente, por ejemplo, en museos, pueden usar esta API para volver a la vista de 芦inicio禄 si ya nadie interact煤a con el kiosco.
  • Las aplicaciones que requieren c谩lculos costosos, por ejemplo, para dibujar gr谩ficos, pueden limitar estos c谩lculos a momentos en los que el usuario interact煤a con su dispositivo.

Estado actual

Paso Estado
1. Crea un explicador Completar
2. Crear borrador inicial de especificaci贸n No empezado
3. Recopile comentarios y repita el dise帽o En progreso
4. Prueba de origen En progreso
5. Lanzamiento No empezado

C贸mo utilizar la API de detecci贸n de inactividad

Habilitaci贸n a trav茅s de chrome: // flags

Para experimentar con la API de detecci贸n de inactividad localmente, sin un token de prueba de origen, habilite el
#enable-experimental-web-platform-features bandera en chrome://flags.

Habilitaci贸n de soporte durante la fase de prueba de origen

A partir de Chrome 84, la API de detecci贸n de inactividad estar谩 disponible como prueba de origen. Se espera que la prueba de origen finalice en Chrome 86.

Las pruebas de Origin le permiten probar nuevas funciones y brindar comentarios sobre su usabilidad, practicidad y efectividad a la comunidad de est谩ndares web. Para obtener m谩s informaci贸n, consulte el Gu铆a de pruebas de Origin para desarrolladores web. Para inscribirse en esta u otra prueba de origen, visite el p谩gina de registro.

Reg铆strese para la prueba de origen

  1. Solicita un token por tu origen.
  2. Agrega el token a tus p谩ginas. Hay dos maneras de hacerlo:
    • Agregar un origin-trial <meta> etiqueta al encabezado de cada p谩gina. Por ejemplo, esto puede verse as铆:
      <meta http-equiv="origin-trial" content="TOKEN_GOES_HERE">
    • Si puede configurar su servidor, tambi茅n puede agregar el token usando un Origin-Trial Encabezado HTTP. El encabezado de respuesta resultante deber铆a verse as铆:
      Origin-Trial: TOKEN_GOES_HERE

Detecci贸n de caracter铆sticas

Para verificar si la API de detecci贸n de inactividad es compatible, use:

if ('IdleDetector' in window) {
}

Conceptos de la API de detecci贸n de inactividad

La API de detecci贸n de inactividad asume que existe alg煤n nivel de interacci贸n entre el usuario, el agente de usuario (es decir, el navegador) y el sistema operativo del dispositivo en uso. Esto se representa en dos dimensiones:

  • El estado inactivo del usuario:
    active o idle: el usuario ha interactuado o no con el agente de usuario durante un per铆odo de tiempo.
  • El estado inactivo de la pantalla:
    locked o unlocked: el sistema tiene un bloqueo de pantalla activo (como un protector de pantalla) que evita la interacci贸n con el agente de usuario.

Distintivo active desde idle requiere heur铆sticas que pueden diferir seg煤n el usuario, el agente de usuario y el sistema operativo. Tambi茅n debe ser un umbral bastante aproximado (consulte Seguridad y permisos).

El modelo intencionalmente no distingue formalmente entre la interacci贸n con un contenido particular (es decir, la p谩gina web en una pesta帽a que usa la API), el agente de usuario en su conjunto o el sistema operativo; esta definici贸n se deja al agente del usuario.

Uso de la API de detecci贸n de inactividad

El primer paso al utilizar la API de detecci贸n de inactividad es asegurarse de que 'idle-detection' se concede el permiso. Si no se otorga el permiso, debe solicitarlo a trav茅s de IdleDetector.requestPermission(). Tenga en cuenta que llamar a este m茅todo requiere un gesto de usuario.


const state = await IdleDetector.requestPermission();
if (state !== 'granted') {
return console.log('Idle detection permission not granted.');
}

Inicialmente, la detecci贸n inactiva se bloque贸 detr谩s del permiso de notificaciones. Si bien muchos, pero no todos, los casos de uso de esta API involucran notificaciones, los editores de especificaciones de Idle Detection han decidido bloquearlo con un permiso de detecci贸n de inactividad dedicado.

El segundo paso es entonces instanciar el IdleDetector. El m铆nimo threshold es 60.000 milisegundos (1 minuto). Finalmente puede iniciar la detecci贸n inactiva llamando al
IdleDetectores start() m茅todo. Toma un objeto con el inactivo deseado threshold en milisegundos y opcional signal con un
AbortSignal

para abortar la detecci贸n inactiva como par谩metros.

try {
const controller = new AbortController();
const signal = controller.signal;

const idleDetector = new IdleDetector();
idleDetector.addEventListener('change', () => {
const userState = idleDetector.userState;
const screenState = idleDetector.screenState;
console.log(`Idle change: ${userState}, ${screenState}.`);
});

await idleDetector.start({
threshold: 60000,
signal,
});
console.log('IdleDetector is active.');
} catch (err) {
console.error(err.name, err.message);
}

Puede abortar la detecci贸n inactiva llamando al
AbortControlleres
abort()

m茅todo.

controller.abort();
console.log('IdleDetector is stopped.');

Soporte DevTools

A partir de Chrome 86, puede emular eventos inactivos en Chrome DevTools sin estar realmente inactivo. En DevTools, abra el Sensores pesta帽a y buscar Emular el estado del detector inactivo. Puede ver las diversas opciones en el video a continuaci贸n.

Emulaci贸n de estado de Idle Detector en DevTools.

Soporte de titiritero

A partir de la versi贸n 5.3.1 de Puppeteer, puede
emular los diversos estados inactivos
para probar mediante programaci贸n c贸mo cambia el comportamiento de su aplicaci贸n web.

Manifestaci贸n

Puede ver la API de detecci贸n de inactividad en acci贸n con el Demostraci贸n de Ephemeral Canvas que borra su contenido despu茅s de 60 segundos de inactividad. Podr铆as imaginar que esto se implementar谩 en una tienda departamental para que los ni帽os garabateen.

demo-2611166

Polyfilling

Algunos aspectos de la API de detecci贸n de inactividad son bibliotecas de detecci贸n de inactividad y polivalentes como inactivo.ts existen, pero estos enfoques se limitan al 谩rea de contenido propia de una aplicaci贸n web: la biblioteca que se ejecuta en el contexto de la aplicaci贸n web necesita realizar un sondeo costoso de eventos de entrada o escuchar cambios de visibilidad. Sin embargo, de manera m谩s restrictiva, las bibliotecas no pueden decir hoy cuando un usuario permanece inactivo fuera de su 谩rea de contenido (por ejemplo, cuando un usuario est谩 en una pesta帽a diferente o cierra la sesi贸n de su computadora).

Seguridad y permisos

El equipo de Chrome ha dise帽ado e implementado la API de detecci贸n de inactividad utilizando los principios b谩sicos definidos en Controlar el acceso a las potentes funciones de la plataforma web, incluido el control del usuario, la transparencia y la ergonom铆a. La capacidad de utilizar esta API est谩 controlada por el
'idle-detection' permiso. Para utilizar la API, una aplicaci贸n tambi茅n debe estar ejecut谩ndose en un
contexto seguro de nivel superior.

Control de usuario y privacidad

Siempre queremos evitar que los actores malintencionados hagan un mal uso de las nuevas API. Los sitios web aparentemente independientes, pero que de hecho est谩n controlados por la misma entidad, pueden obtener informaci贸n inactiva del usuario y correlacionar los datos para identificar usuarios 煤nicos en todos los or铆genes. Para mitigar este tipo de ataques, la API de detecci贸n de inactividad limita la granularidad de los eventos inactivos informados.

Retroalimentaci贸n

El equipo de Chrome desea conocer sus experiencias con la API de detecci贸n de inactividad.

Cu茅ntanos sobre el dise帽o de la API

驴Hay algo en la API que no funciona como esperabas? 驴O faltan m茅todos o propiedades que necesita para implementar su idea? 驴Tiene alguna pregunta o comentario sobre el modelo de seguridad? Presentar un problema de especificaciones en el correspondiente Repositorio de GitHubo agregue sus pensamientos a un problema existente.

Informar un problema con la implementaci贸n

驴Encontraste un error con la implementaci贸n de Chrome? 驴O la implementaci贸n es diferente de la especificaci贸n? Presentar un error en new.crbug.com. Aseg煤rese de incluir todos los detalles que pueda, instrucciones simples para reproducir e ingrese Blink>Input en el Componentes caja.
Falla funciona muy bien para compartir repros r谩pidos y f谩ciles.

Mostrar apoyo a la API

驴Est谩 pensando en utilizar la API de detecci贸n de inactividad? Su soporte p煤blico ayuda al equipo de Chrome a priorizar funciones y muestra a otros proveedores de navegadores lo importante que es brindarles soporte.

Comparte c贸mo planeas usarlo en el Hilo del discurso de la WICG
Enviar un tweet a @Cromodev con el #idledetection hashtag y h谩ganos saber d贸nde y c贸mo lo est谩 usando.

Enlaces 脷tiles

Agradecimientos

La API de detecci贸n de inactividad fue implementada por Sam Goto. El soporte de DevTools fue agregado por Maksim Sadym. Gracias a Joe Medley,
Kayce vascosy
Beca Reilly por sus rese帽as de este art铆culo. La imagen del h茅roe es de Fernando Hernandez en
Unsplash.