В официальных документах и этот вопрос Google рекомендует перерегистрировать GCM, потому что идентификатор регистрации может измениться.
Один гипотетический способ, которым это может случиться, заключается в том, что во время обновления все деинсталлируется и затем устанавливается. Если в течение этого промежутка времени получено уведомление GCM, может быть возвращен NotRegistered
, а идентификатор регистрации GCM может быть недействительным.
Если Google Play автоматически обновляет мое приложение, какой самый надежный способ справиться с таким сценарием и перерегистрироваться? В приложении, таком как WhatsApp, пользователь может никогда явно не запускать какую-либо деятельность, если не получено уведомление GCM. Таким образом, пользователь в основном "потерян", пока он случайно не наткнется на активность.
В qaru.site/info/409266/... упоминается, что "Canonical ID" будет включен, чтобы сторонний сервер мог обновить идентификатор регистрации. Но в doc явно не указано, что этот тип сценария охвачен (т.е. GCM может ошибочно принять приложение как "удаленное" во время обновления разрыв, и в этом случае мне кажется, что канонический идентификатор не будет сгенерирован, и я перейду прямо к NotRegistered
).
Как работает приложение с высокой доступностью, например WhatsApp или другие приложения для обмена сообщениями?