Из GCM docs:
Когда приложение обновляется, оно должно аннулировать существующее регистрационный идентификатор, так как он не гарантирует работу с новой версией. Поскольку метод жизненного цикла не вызван, когда приложение обновленный, лучший способ добиться этой валидации - это сохранить текущая версия приложения, когда сохраняется идентификатор регистрации. затем когда приложение запущено, сравните сохраненное значение с текущая версия приложения. Если они не совпадают, аннулируйте сохраненные данные и снова запустить процесс регистрации.
Когда в документах указано, что "он не гарантированно работает с новой версией", это ограничение GCM или они размышляют о потенциальных изменениях в поведении моего приложения от версии к версии?
Со стороны приложения я могу более или менее гарантировать, что последующие версии будут корректно работать в отношении GCM и любого конкретного формата сообщений, которые я придумываю. Нужно ли еще перерегистрироваться?
Если да, то какой я должен использовать для обнаружения "новой версии": код версии или имя версии? Я понимаю, что это "бесплатная форма", и разработчик приложений устанавливает их на любые значения, которые он выбирает. Итак, что, если я поставлю обновление приложения в хранилище, но не изменяю versionName или versionCode; мне нужно перерегистрироваться в GCM?
Похоже, что GCM на самом деле хочет, чтобы приложение перерегистрировалось каждый раз, когда новая установка запускается в первый раз (и каждый раз, когда она запускается до тех пор, пока регистрация не будет завершена), независимо значений в versionName и versionCode. Это точная формулировка?