Rushikesh Talokar
Rushikesh Talokar

Reputation: 1585

Should I generate android GCM registration ID app specific or user specific?

I am developing an app which has login functionality.I am generating only one gcm registration ID per app. If other user sign's in in same app he will start receiving notifications intended for the previous user. How to handle this situation, so that each user will get notification intended for his/her? Should I generate gcm reg id for each user? What is the standard way to handle this situation?

Upvotes: 5

Views: 969

Answers (4)

Rob85
Rob85

Reputation: 1729

Of course yes every time someone downloads your app, your app should register them with the GCM and be given a reg token, this needs to be sent to your app server, on your app server you need to sort out who you are sending the notification too. you should probably send some login info and reg token when they login so you can identify each person, then write some php or Jquery to send to individual users or all. you should also send the reg token every time they login as these can change without warning.

Your app server should be able to handle removing unused reg tokens and adding new ones

Upvotes: 1

Mauker
Mauker

Reputation: 11497

You could try the following things:

  1. When the user logs off, send a request to delete the token on your server, and erase it on your app;
  2. Once the user logs off, you could simply remove the association of "User ID" to "GCM Token" (Or Registration ID) on your server. And when someone logs in again, you make a new association to that Token.

The GCM Token is app specific, but the association you make on your server is totally up to you.

And I can't stress it enough, the token generated by GCM is APP SPECIFIC. If your user logs in on multiple devices, your server should handle that, associating the user ID to multiple Registration ID Tokens.

An ID issued by the GCM servers to the Android application that allows it to receive messages. Once the Android application has the registration ID, it sends it to the 3rd-party application server, which uses it to identify each device that has registered to receive messages for a given Android application. In other words, a registration ID is tied to a particular Android application running on a particular device.

And from the docs, your server should also:

Before you can write client apps that use GCM, you must have an application server that meets the following criteria:

  • Able to communicate with your client.
  • Able to send properly formatted requests to the GCM connection server.
  • Able to handle requests and resend them using exponential back-off.
  • Able to store the API key and client registration tokens.
  • Able to generate message IDs to uniquely identify each message it sends. Message IDs should be unique per sender ID.

EDIT: You can read more about GCM here.

For further reading, you could also read more on Device Group Messaging.

You can also download some code samples here.

Upvotes: 7

KishuDroid
KishuDroid

Reputation: 5451

You should store regID as per user.

This is because there is test cases that user1 logs out and user2 logs in. In that case if you have stored regID app specific and not binding with user then user2 will also get notification.

So you need to store regID as per user , app and as well as device specific.

Upvotes: 5

Sukhbir
Sukhbir

Reputation: 1608

Each android device generate a Unique GCM reg id. push notification from server side will send according to the device id. So at Login time you can send GCM reg id to your server. So from server side push notification will send to device.., that is actual functionality.

Hope this will help

Upvotes: 0

Related Questions