I'm working on a push architecture that needs to support applications which allow for multiple users. This means more than one user can log into the application with their credentials. The problem I'm running into is what if user A allows push notifications, then logs out, then user B logs in and starts getting user A's push notifications?
What are some best practices for handling this type of thing? One thought I had was you could remember the last user who logged in and only display push notifications to the "logged in" user. You would have to send some sort of user context in the message payload so it could be checked against the logged in user. However this feels a little funky.
Anyone else ran into this? It's seems like a really relevant problem, especially for tablets where families tend to share the device.
Let's suppose users of your app can logging on multi devices.
We have to make two API on server side:
On your app side, you have to call
setUserDeviceNotifyToken
API on every Login In and callremoveUserDeviceNotifyToken
on every logout.On server side, you can track every user with its
deviceNotificationToken
and send notification for correct device.Notice: If your service doesn't suppose to support multi device login with one user, you can handle it just by one
updateUserDeviceNotifyToken
and passnull
for remove user's device token.Notice 2: Do not let user logout before calling
removeUserDeviceNotifyToken
API.I think your suggestion is acceptable in a multi-user app. It is much simpler to implement this in the client side, than on the server side. The downside is extra bandwidth wasted to send an unneeded notification. But vast majority of the usage is probably single-user so this may not matter much.
The alternative is to track the logged on users on your server and their current reg_ids. This could be more complicated because A could be logged on on multiple devices, then logs out from device 1, and B logs onto device 1, etc. and your server has to track all of these. So probably another table to track the relationships between 'Logged On Users' to 'Reg Ids'.
If you hate the idea of sending unneeded notifications, go with the server route. If you value Keep-It-Simple principle, go with the client route.
We're implementing this by Registering the device with APSN, getting the device token and sending this to our server through a ws.
On the server side the device token is only associated with the last logged in user.
Still not perfect as its sent to home screen first so to ALL users