Tengo un sitio donde el usuario puede iniciar sesión y puede iniciar y recibir llamadas. El inicio de sesión es automático después de la primera vez, por lo que pueden acceder a la página de contactos sin interactuar con el sitio más que abrirlo. Es un sitio que se inicia automáticamente en las computadoras de los clientes, solo para que puedan recibir o iniciar llamadas, por lo que es posible que ni siquiera interactúen con el sitio.
Cuando reciben una llamada, comienza una música de fondo, así:
var audio = new Audio('ringtone.mp3'); audio.play();Por supuesto, no funciona a menos que el cliente presione al menos un botón o pase el cursor sobre algo en el sitio, o algo por el estilo. Me pregunto si es posible iniciar la música de fondo sin la interacción del usuario. Entiendo que ya no es posible porque la gente no quiere que se reproduzcan anuncios molestos, pero me pregunto si todavía hay una solución que funcione. ¿O puedo de alguna manera pedir su permiso como para las notificaciones? Lo pediría una vez durante el primer inicio de sesión, luego se guardaría.
Editar: no es un SPA. Además, mi problema no es que no reproduzca sonido cuando la pestaña está inactiva. El problema es que hay una restricción en los sonidos que impide que JavaScript reproduzca sonidos a menos que el usuario haya hecho algo en el sitio, interactuado con él (desplazarse sobre un botón, hacer clic en un botón o cualquier otra cosa). El usuario no necesariamente interactúa con el sitio porque se inicia automáticamente, de ahí el problema cuando hay una llamada entrante.
No estoy seguro de si el sitio web del OP es un SPA, si usa React y usa algo como React-Router, etc., esta es una SPA (aplicación de página única).
La mayoría de los navegadores bloquean la reproducción automática de audio en una ventana normal del navegador sin alguna forma de acción del usuario. (política sana).
Ahora, la razón por la que le pregunté al OP si su sitio web era un SPA, estos funcionan bien como aplicaciones web, y las aplicaciones web tienen una política de sonido ligeramente diferente. es decir, ha podido reproducir audio sin la interacción del usuario.
Entonces, ¿cómo conviertes tu sitio web en una aplicación web? Fácil, le dices al navegador :)
Por ejemplo, en Chrome, en Más herramientas, hay una opción que dice create shortcut.. , esto hace más que solo crear un acceso directo, también pone su sitio web en modo de aplicación web.
Esto también funciona para dispositivos móviles, por ejemplo. en Android existe la opción Add to home screen ,
Y sí, otros navegadores también tienen esta función, pero Firefox ha decidido eliminar esta función, por lo que ya no es un navegador que usaré ni recomendaré a mis clientes. ¿Qué está pasando con Mozilla? Parece que los desarrolladores obstinados se han apoderado de ellos. ¡¡Verguenza!!
Entonces, si el sitio web de OP es un SPA, todo lo que tiene que hacer es usar el create shortcut e iniciarlo automáticamente.
También hay otros beneficios de convertirla en una aplicación web, como no tener la barra de direcciones en la parte superior, etc. Pero nuevamente, Mozilla ha decidido que eso no es lo que los usuarios quieren o necesitan, gracias Moz, adiós ahora.
¿Qué pasa si no es SPA? PD: SPA solo significa que no hay navegación normal/carga de página. (podría no haber sido obvio de mi explicación anterior).
Ok, las cosas se ponen un poco más complicadas. El OP menciona que los inicia automáticamente por la mañana, ahora el único problema aquí es que evita cualquier interacción del usuario, por lo que obviamente se activa la política de sonido.
Entonces, otra idea, usando algo como titiritero, podría iniciar la aplicación, colocar un botón en su sitio web, que podría reproducir un sonido de inicio, o incluso un mp3 silencioso. A continuación, puede indicar al titiritero que haga clic en este botón.