GCM с системой входа в систему

В настоящее время я внедряю GCM в приложение с системой входа. Я хотел отправить уведомление в приложение на основе пользователя, который зарегистрировался в приложении (одно устройство, несколько пользователей). Я просматриваю эти процессы.

  1. Войдите в систему как «пользователь A»
  2. Зарегистрировать GCM (получить регистрационный идентификатор) на серверную сторону
  3. Передача уведомлений пользователю A
  4. Выход из системы регистрации
  5. Войдите в систему как «пользователь B»
  6. Регистрировать GCM (получить регистрационный идентификатор – возвратить тот же идентификатор регистрации с пользователем A, иногда возвращаться как другой идентификатор регистрации)
  7. GCM push-уведомление пользователю A (даже если пользователь не зарегистрирован)

Я не уверен, как позволить приложению идентифицировать пользователя, который подключился к устройству, и направить уведомление только этому конкретному пользователю. Вместо входа пользователя B и получения уведомления пользователя A. Любые комментарии и ответы будут высоко оценены! Если вам нужна проверка определенных кодов из моего проекта, пожалуйста, дайте мне знать.

Идентификатор регистрации идентифицирует конкретное приложение на определенном устройстве. Он не знает о регистрации пользователей в вашем приложении. Поэтому, когда вы регистрируете GCM (когда пользователь выходит из системы), вы должны позвонить своему серверу, чтобы он знал, что пользователь вышел из системы.

Это позволит вашему серверу узнать, что этот пользователь вышел из системы, и сервер прекратит отправлять на него сообщения GCM.

Не имеет значения, получите ли вы один и тот же идентификатор регистрации после выхода пользователя из системы пользователя, а пользовательский журнал B (даже если вы получите новый идентификатор регистрации, старый может по-прежнему работать. Именно поэтому GCM возвращает канонический идентификатор регистрации, когда устройство Имеет более одного идентификатора регистрации для приложения).

РЕДАКТИРОВАТЬ :

Давайте рассмотрим специальный сценарий (который должен быть относительно редким), когда пользователь A выйдет из системы после того, как ваш сервер отправил ему уведомление, но уведомление будет доставлено Google в ваше приложение только после входа пользователя B. Самый безопасный способ справиться с этим делом – это Получать уведомление в своем приложении и отбрасывать его, не отображая ничего пользователю B. Чтобы узнать, когда отбрасывать полученное уведомление, вы можете добавить свойство user в свои данные уведомления с именем пользователя в качестве его значения. Когда вы обрабатываете уведомление в приложении, убедитесь, что пользовательское свойство соответствует зарегистрированному пользователю перед отображением уведомления.