Come faccio a invalidare in modo affidabile (rimuovere dal profilo utenti sul mio server) il token di push di un dispositivo per gli utenti del mio servizio quando si disconnettono dalla mia app?Invalidate il token push del dispositivo iOS sul logout utente
Mantengo una serie di stringhe contenenti token di apns sui miei profili utente, aggiungendone una ogni volta che l'utente abilita le notifiche push su un dato dispositivo.
In seguito mi sono reso conto che il token push è univoco per il dispositivo, ma ovviamente non sa nulla dei miei account utente interni, quindi se un utente si disconnette e un altro accede (stesso dispositivo) ha lo stesso token. Quindi l'utente corrente del dispositivo riceve notifiche push dirette per entrambi.
La soluzione di base è quella di rimuovere un token di dispositivo dal profilo utente al logout, ma sto arrivando con un gruppo di grattacapi, come penso che attraverso:
- Logout non dovrebbe richiedere rete accesso - Posso provare a notificare il mio server, ma ho bisogno di disconnettersi per riuscire in modo asincrono anche se l'utente non ha accesso alla rete (?)
- Il token dispositivo reale potrebbe essere sconosciuto - se l'utente ha temporaneamente spento il permesso push quindi il token corrente non è dato. E il dispositivo di archiviazione < -> le informazioni chiave sembrano alquanto tenue dal momento che le modifiche identificatoreForVendor per installazione e i metodi UDID sono deprecati.
- Do univoca lato server (all'aggiunta di un token a un account, assicurarsi che lo stesso token non sia impostato per nessun altro account) - questo dipende da un secondo accesso dell'utente, che non è garantito.
Ci sono più casi limite che mi mancano e quali strategie posso utilizzare per aggirarli?
Non sono sicuro di seguire il primo paragrafo. Essenzialmente ho già la prima metà (un token può essere collegato a più utenti) già, ma non sono sicuro di come distinguerei l'utente per cui è valido. Forse qualcosa come un timestamp di quando è stato salvato per la prima volta su quel profilo utente, quindi l'ultimo sarebbe quello valido? – owenfi
Grazie per il punto in merito alla reazione alla disconnessione offline seguita dalla notifica push, sembra la migliore soluzione per il caso fornita dall'API e allevia le mie preoccupazioni in merito a un avvertimento. – owenfi
Informazioni sul primo paragrafo, quando si memorizza il pushtoken sul server, è possibile inviare l'identificatore utente contemporaneamente. Il tuo server saprà a questo punto se l'utente è valido o no, no? Anche se non sono sicuro di aver capito correttamente la tua domanda ... il pushtoken sarà lo stesso, indipendentemente dal timestamp con cui è stato generato; Non sono sicuro di seguire la tua idea. – Nick