Я только что добавил возможность C2DM в свое приложение для Android.
В настоящий момент, если C2DM запущен в моем приложении, происходит следующее.
Токен устройства извлекается из намерения и отправляется на мой сервер
С этого момента все работает нормально. Клиент получает push-уведомления и т. Д. Проблема возникает в следующих случаях:
Пользователь удаляет приложение, не отключая push. (Полное удаление, а не только обновление)
Если после шага 5 отправляется push-уведомление, мое приложение все равно получает это уведомление. Кажется, что токен, полученный при предыдущей установке, все еще активен и повторно подключается к новому экземпляру моего приложения.
Это приводит к следующей проблеме:
Это ошибка в системе C2DM или что-то не так в моей настройке?
Обновление
Я последовал совету Бердона и сделал следующее:
В целях тестирования запускать отмену регистрации намерения каждый раз, когда мое приложение запускается. После того, как я отправлю намерение отменить регистрацию, мое приложение не отправит push-уведомление с моего сервера. Кажется, это помогает, но если я сейчас перейду на экран настроек C2DM и включу push-уведомления для своего приложения, все старые токены снова станут активными, и я получу информацию, которую я не регистрировал в текущей установке моего приложения.
Следующее обновление
Кажется, эта проблема возникла не только у меня:
Android C2DM: дублирование сообщения на то же устройство и приложение
Я надеялся, что Google будет управлять этими токенами так, как это было раньше. токены с того же устройства отключаются после выпуска нового. Я также ожидаю, что после того, как я отправлю отмену регистрации намерения, все токены для этого приложения и этого устройства будут помечены как недействительные или навсегда удалены с сервера Google. Если это каким-то образом дизайнерское решение Google для особых случаев использования, которых я не вижу, пожалуйста, просветите меня.