2016-07-05 23 views
2

Ich habe ein Web-Push-System eingerichtet und es funktioniert ziemlich gut.webpush, Wie öffne ich Fenster, wenn keine Tabs

Das Problem, das ich habe, ist, dass auf dem Mac, wenn der Benutzer Firefox geöffnet hat, aber ohne jede Seite geöffnet, wenn er eine Benachrichtigung erhält, ist der Klick verloren. I t tut überhaupt nichts.

hier ist der relevante Teil

self.addEventListener('push', function(event) { 

    var jsonObj = event.data.json(); 
    var title = jsonObj.title; 

    event.waitUntil(
    self.registration.showNotification(title, { 
     'body': jsonObj.body, 
     'icon': jsonObj.icon, 
     'href': jsonObj.href, 
     'tag': jsonObj.tag 

    })); 

    self.addEventListener('notificationclick', function(event) { 
     event.notification.close(); 
     var href = jsonObj.href; 
     var tag = jsonObj.tag; 

     if (clients.openWindow) { 
     clients.openWindow(href); 
     } 


     /* 
     // This looks to see if the current is already open and 
     // focuses if it is 
     event.waitUntil(
     clients.matchAll({ 
      type: "window" 
     }) 
     .then(function(clientList) { 
      for (var i = 0; i < clientList.length; i++) { 
      var client = clientList[i]; 
      if (client.url == href && 'focus' in client) 
       return client.focus(); 
      } 
      if (clients.openWindow) { 
      return clients.openWindow(href); 
      } 
     }) 
    ); 
    */ 
    }); 

}); 

Antwort

3

Ich würde Ihnen vorschlagen zu:

  1. Definieren Sie die notificationclick Ereignishandler außerhalb der push Ereignishandler im globalen Bereich. Sie können die jsonObj im data Parameter von showNotification übergeben, so dass Sie im event Objekt im notificationclick Handler Zugriff darauf haben. Sie können hier ein Beispiel sehen: https://github.com/mozilla/wp-web-push/blob/master/wp-web-push/lib/js/sw.php.
  2. openWindow gibt ein Versprechen, sollten Sie event.waitUntil mit der Zusage von OpenWindow zurückgegeben werden.
+0

Danke, ich werde einige Tests machen und die Ergebnisse veröffentlichen. – sathia

+0

Es scheint zu funktionieren, aber es ist nicht in der Lage, ein Fenster zu öffnen, wenn der Browser keine hat :( – sathia

+2

Es gibt derzeit einen Fehler in Firefox, der verhindert, dass dies funktioniert, wenn keine Fenster geöffnet sind (https://bugzilla.mozilla.org/show_bug.cgi?id=1226434). – Marco