10
votes

Our webapp sends push notification requests to iOS and Android devices.

For iOS, the Apple Push Notification Service has a feedback service so you can detect which devices have uninstalled your app and then remove it from your database.

Is there a similar feedback service for Android GCM? If not, how to detect which Android users no longer have the app installed?

2
you can use dryRun attribute to send sample message to GCM only, it does not get delivered to deviceAhmet Karakaya
Thanks. Do you have an example or link with more info?ban-geoengineering

2 Answers

22
votes

Is there a similar feedback service for Android GCM?

No.

If not, how to detect which Android users no longer have the app installed?

Quoting the documentation:

  1. The end user uninstalls the application.
  2. The 3rd-party server sends a message to GCM server.
  3. The GCM server sends the message to the device.
  4. The GCM client receives the message and queries Package Manager about whether there are broadcast receivers configured to receive it, which returns false.
  5. The GCM client informs the GCM server that the application was uninstalled.
  6. The GCM server marks the registration ID for deletion.
  7. The 3rd-party server sends a message to GCM.
  8. The GCM returns a NotRegistered error message to the 3rd-party server.
  9. The 3rd-party deletes the registration ID.

Note that it might take a while for the registration ID be completely removed from GCM. Thus it is possible that messages sent during step 7 above gets a valid message ID as response, even though the message will not be delivered to the device. Eventually, the registration ID will be removed and the server will get a NotRegistered error, without any further action being required from the 3rd-party server (this scenario happens frequently while an application is being developed and tested).

1
votes

GCM will respond you with the "NotRegistered" error (assuming you use HTTP). Also, GCM has recently released for iOS, so you can use it to deliver both Android and iOS notifications.