Почему я получаю несколько активных токенов для моего устройства с помощью службы обмена сообщениями Googles Cloud To Device?

Я только что добавил возможность C2DM в свое приложение для Android.

В настоящий момент, если C2DM запущен в моем приложении, происходит следующее.

  1. Мое приложение отправляет намерение регистрации
  2. Широковещательный ответ получен моим приложением
  3. Токен устройства извлекается из намерения и отправляется на мой сервер

    С этого момента все работает нормально. Клиент получает push-уведомления и т. Д. Проблема возникает в следующих случаях:

  4. Пользователь удаляет приложение, не отключая push. (Полное удаление, а не только обновление)

  5. Пользователь переустанавливает приложение

Если после шага 5 отправляется push-уведомление, мое приложение все равно получает это уведомление. Кажется, что токен, полученный при предыдущей установке, все еще активен и повторно подключается к новому экземпляру моего приложения.

Это приводит к следующей проблеме:

  • Пользователь, который переустанавливает мое приложение, но не намерен получать push-уведомления, не имеет возможности удалить себя из службы, поскольку новый экземпляр приложения не имеет возможности отменить регистрацию старого токен с моего сервера.

Это ошибка в системе C2DM или что-то не так в моей настройке?

Обновление

Я последовал совету Бердона и сделал следующее:

В целях тестирования запускать отмену регистрации намерения каждый раз, когда мое приложение запускается. После того, как я отправлю намерение отменить регистрацию, мое приложение не отправит push-уведомление с моего сервера. Кажется, это помогает, но если я сейчас перейду на экран настроек C2DM и включу push-уведомления для своего приложения, все старые токены снова станут активными, и я получу информацию, которую я не регистрировал в текущей установке моего приложения.

Следующее обновление

Кажется, эта проблема возникла не только у меня:

Android C2DM: дублирование сообщения на то же устройство и приложение

Я надеялся, что Google будет управлять этими токенами так, как это было раньше. токены с того же устройства отключаются после выпуска нового. Я также ожидаю, что после того, как я отправлю отмену регистрации намерения, все токены для этого приложения и этого устройства будут помечены как недействительные или навсегда удалены с сервера Google. Если это каким-то образом дизайнерское решение Google для особых случаев использования, которых я не вижу, пожалуйста, просветите меня.

7
задан Community 23 May 2017 в 11:52
поделиться