es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Extensión de Chrome – Migración a Manifest v3 – Problema con el gesto del usuario en chrome.permissions

He creado una extensión de Chrome en la versión de manifiesto 2 y ahora estoy considerando migrar a la versión 3. Como parte de esta migración, me he encontrado con un problema al intentar activar un permiso opcional para usar la API de notificaciones de Chrome.

Dado que no se puede solicitar un nuevo permiso desde un script de contenido ya que la API no es accesible desde un script de contenido, es necesario enviar un mensaje al script de fondo para realizar la solicitud y devolver la respuesta al script de contenido. Esto funcionaba según lo esperado con la versión 2, pero ahora estoy recibiendo este error:

Unchecked runtime.lastError: Esta función debe ser llamada durante una acción del usuario

Esto significa que la extensión desea que la solicitud de permiso se inicie a raíz de un evento iniciado por una acción del usuario, como un clic. Esto indica que la extensión desea que la solicitud de permiso se complete desde el script de contenido, pero como se mencionó anteriormente, esto es imposible.

¿Alguien podría iluminarme si me estoy perdiendo algo?

Script de contenido:

chrome.runtime.sendMessage(
  {message: 'requestPermissions', permissions: ['notifications']},
  (res) => console.log(res)
);

Script de fondo:

export function requestPermissions(request, sender, sendResponse) {
  const {permissions} = request;

  new Promise((resolve) => {
    chrome.permissions.request(
      {
        permissions
      },
      (granted) => resolve(granted)
    );
  }).then((res) => sendResponse(res));

  return true;
}
Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    El mensaje de error “Unchecked runtime.lastError: This function must be called during a user gesture” indica que la extensión desea que la solicitud de permiso se inicie a raíz de un evento iniciado por una acción del usuario, como un clic. Sin embargo, esto no es posible ya que la API de Notificaciones de Chrome no es accesible desde un script de contenido. Como solución, puedes enviar un mensaje desde el script de contenido al script de fondo para realizar la solicitud y devolver la respuesta al script de contenido. El código proporcionado tanto para el script de contenido como para el script de fondo es correcto, por lo que puede haber algo más que se necesite investigar. Se necesita más información para determinar qué está causando el problema.

Comments are closed.