2016-08-02 15 views
1

Ich mache eine Web-Chat-App und jetzt brauche ich Benachrichtigung Töne als eine neue Nachricht ankommt.Kann Audio ausgelöst werden, um während der Telefonsperre zu spielen

Zunächst verwende ich howler.js, um die Sounds zu spielen. In Howler können wir einen Sound abspielen und wenn wir den Bildschirm sperren oder den Tab-Fokus des Browsers ändern, spielt er weiter. Aber es beginnt nicht, den Ton zu spielen, wenn der Tab geöffnet und Handy-Bildschirm gesperrt ist, noch wird es abgespielt, wenn der Benutzer auf einem anderen Tab mit der App auf einem anderen Tab geöffnet ist.

Also im Grunde ist meine Frage, ist es möglich, Ton zu starten, auch wenn der Bildschirm gesperrt ist oder starten Sie den Sound, wenn der Benutzer auf einem anderen Tab ist?

app.js

var notify_sound = new Howl({ 
    src: ['./assets/sounds/notify2.mp3'], 
    volume: 1.0 
}); 
. 
. 
. 
. 
. 
. 
. 
. 
if(type == "user"){ 
     if(userAddress == remoteAddress) { 
      typing.html('').fadeOut('fast'); 
      messages.append('<li class="self"><p class="message">'+ obj.message + '</p><p class="time">' + time +'</p></li><p class="username_self">' + userAddress + '</p>'); 
     } 
     else { 
      typing.html('').fadeOut('fast'); 
      messages.append('<li class="other"><p class="message">'+ obj.message + '</p><p class="time">' + time +'</p></li><p class="username_other">' + userAddress + '</p>'); 

      notify_sound.play(); 
     } 
    } 

Antwort

0

HTML5 Audio-und Handy nicht wirklich auszukommen. Howler.js (wenn Sie 2.0 verwenden) verwendet eine Problemumgehung, um Audio überhaupt zu "Autoplay" zu bringen, indem ein Ereignishandler an das erste Berührungsereignis angehängt wird, das die Wiedergabe auslöst. Wenn die Ansicht nicht aktiv ist, wird kein Berührungsereignis (auch kein simuliertes Ereignis) ausgelöst, um die Wiedergabe auszulösen.

Aus der Dokumentation:

Mobilen Wiedergabe

standardmäßig Audio auf iOS, Android, etc. gesperrt ist, bis ein Ton innerhalb einer Interaktion des Benutzers gespielt, und dann spielt es in der Regel der Rest der Seitensitzung (Apple-Dokumentation). Das Standardverhalten von howler.js besteht darin, zu versuchen, die Audiowiedergabe automatisch zu entsperren, indem ein leerer Puffer beim ersten Touchend-Ereignis abgespielt wird. Dieses Verhalten werden kann durch den Aufruf deaktiviert:

Howler.mobileAutoEnable = false;

Wenn es keine anfängliche Interaktion, gibt es nicht viel Sie tun können.

+0

so ist schlüssig, dass während einer Bildschirmsperre Sound nicht gespielt wird.? – Ayan

+0

Sie können mit einem ständig spielenden Sprite umgehen. Ich habe diesen Ansatz jedoch nicht getestet. –

+0

Aber kontinuierliche Wiedergabe würde Ressourcen des Clients belegen, wenn er eine langsame Verbindung hat. – Ayan