2016-03-03 13 views
7

Attualmente mi trovo di fronte a un problema con una versione Chrome (Chromium) in cui la promessa PushManager.subscribe da un ServiceWorker rimane in uno stato in sospeso.La sottoscrizione di PushManager non soddisfa mai né rifiuta

Il codice stesso è abbastanza semplice:

return serviceWorkerRegistration.pushManager.subscribe({ 
    userVisibleOnly: true 
    }); 

Ho un JSON valido e accessibile manifesta, fornendo la GCM Sender ID. Ho anche provato diverse implementazioni, come descritto in this post, ma il risultato è sempre lo stesso.

La parte di abbonamento funziona bene con ogni versione 47+, il problema si verifica con le versioni precedenti. (Sto usando le versioni continue di Chromium per testare le diverse versioni principali).

Si noti inoltre che, mentre si utilizza Chromium 46 (e sotto) su Ubuntu, la promessa rifiuta dopo 15 minuti con un Internal Server Error.

+0

Hai bisogno di supportare tali vecchie versioni di Chrome? L'attuale versione stabile è 49. Forse qualcosa è cambiato nel modo in cui Chrome parla con GCM e le versioni precedenti non sono più supportate? – Marco

+0

Infatti, poiché Chrome ha una funzione di aggiornamento automatico, una differenza di 2 o 3 versioni, gli utenti con versioni precedenti sono marginali. Anche se, questa è una cifra globale, forse alcuni in qualche luogo/paese l'aggiornamento tende ad arrivare ultimamente. La mancanza di supporto da GCM proviene dalle versioni Chromium che utilizzo o dalle versioni di Chrome "più vecchie"? – Arturo

+0

Non ne sono sicuro, eseguo test per la mia libreria web-push (https://github.com/marco-c/web-push) sia in Firefox che in Chromium e funzionano, ma nei test sono sempre usando le ultime versioni. – Marco

risposta

1

Il problema è con userVisibleOnly: true come parametro.

Questo è stato introdotto solo in chrome 47. Prima di ciò è necessario passarlo come parametro manifest. https://johnme-gcm.appspot.com/manifest.json è un buon esempio da seguire.

+0

Ho un ** gcm_user_visible_only ** impostato su true nel manifest. Ma se rimuovo il parametro dal metodo 'subscribe', ho un errore _Chrome al momento supporta solo l'API Push per gli abbonamenti che genererà messaggi visibili all'utente [...] _ Penso che il tuo esempio sia stato introdotto in [ Chrome44 +] (http://stackoverflow.com/questions/31286265/gcm-registration-id-in-service-worker-in-push-notification-for-chrome#comment-50592719) – Arturo

1

Sembra che il team Chromium fosse working on it. Se non mi sbaglio, una correzione sarà comunicato sul Chrome 55

0

Questo problema è riproducibile su Chrome 55.0.2883.87 su Windows 7. La sottoscrizione promessa non è né risolvendo né rifiutare. Ma questo sta accadendo solo su una macchina con la combinazione menzionata

Problemi correlati