Non rimuovere tutte le sottoscrizioni push al logout

Inoltre, sembra che quando un utente esegue il logout, tutte le sottoscrizioni push vengano eliminate. Quindi, se un utente è connesso su più dispositivi (telefono, browser, tablet) ed esegue il logout da uno di essi, impedisce agli altri dispositivi di ricevere notifiche, poiché le loro sottoscrizioni push vengono eliminate.

Lo menziono perché è correlato alla necessità di sapere quale sottoscrizione va sostituita durante il rinnovo e quale va eliminata al logout.

6 Mi Piace

Beh, oggi sono stato appena disconnesso da Meta e, dopo aver effettuato di nuovo l’accesso, ho ricevuto una notifica push per il tuo post… A meno che non riguardi solo il percorso di accesso avviato dall’utente :thinking:

6 Mi Piace

Quando un utente torna sul forum (o effettua il login), le sottoscrizioni push del browser vengono inviate di nuovo e ricreate. Tuttavia, se hai effettuato il logout, queste vengono eliminate e le notifiche push non verranno consegnate fino a quando quell’utente non accederà al forum da quel dispositivo.

Questo non contraddice quanto hai affermato, dato che sembra tu abbia ricevuto la notifica push dopo aver effettuato il login.

Riferimento al codice:

6 Mi Piace

Ah, quindi è esattamente quello che sospettavo.

Ottima scoperta! Dobbiamo assolutamente risolvere questo problema!

Il problema è che attualmente non memorizziamo per quale dispositivo esiste una determinata sottoscrizione…

8 Mi Piace

L’API Push dispone effettivamente di una funzione unsubscribe per invalidare l’iscrizione push:

All’uscita, potremmo invocare questa funzione (lato client), rendendo così l’iscrizione sul server non valida senza influenzare eventuali altre iscrizioni.

In effetti, il client ha già una funzione unsubscribePushNotification che esegue questa operazione nelle preferenze “Notifiche in tempo reale”. Forse la soluzione è invocarla all’uscita, lato client, se le Notifiche in tempo reale sono attive. Probabilmente è buona norma revocare le chiavi di iscrizione lato client invece di limitarsi a cancellarle dal server.

2 Mi Piace

Quindi la correzione può essere suddivisa in due parti:

  1. Eliminare il codice di pulizia lato server
  2. Aggiungere nuovo codice per la disiscrizione lato client.
5 Mi Piace

Completato in

https://meta.discourse.org/t/ios-android-push-notifications-on-self-hosted-discourse-docker/394149/18?u=falco

1 Mi Piace

Questo argomento è stato chiuso automaticamente dopo 4 giorni. Non sono più ammesse nuove risposte.