0

Я пытаюсь создать приложение, используя Google Cloud Messaging.Управление регистрацией базы данных Android gcm

Я использовал образцы google gcm без каких-либо изменений, и до сих пор я могу отправлять сообщения между моим клиентским приложением и моим персональным небольшим php-сервером. (Без проблем код здесь)

В образцах, Google не позволить sendRegistrationToServer() метод (click here) для меня, чтобы написать, когда InstanceId установлен, но я не нахожу никакого понятия о сети о том, как управлять такими вещами.

Как должна выглядеть моя база данных для обработки пользователей и жетонов?

(если кто-то может дать маленький пример структуры базы данных, это сделало бы мой день!)

С tokens зарегистрировать приложение или телефон и users пользователя (который подразумевает регистрационную деятельность, чтобы получить имя пользователя и пароль, и я еще не сделал этого), я вроде бы не хочу смешивать их в одной таблице, , но у меня могут быть неправильные представления о цели токена.

Например, интересно, почему никто не похоже, чтобы сохранить маркер в SharedPreferences ...


EDIT: теперь я получаю весь процесс:

  1. Регистрация деятельности -> Регистрация Вашего пользователь
    • адрес Отправить по электронной почте и обеспеченная пароль к серверу
  2. Connection Activity -> Подключение пользователя
    • Получить gcm_token и отправить его на сервер, а затем сопоставить его с информаций подключения

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

ответ

1

Маркер может измениться, так что не полезно для ее хранения в общих предпочтениях лучше назвать InstanceID.getToken, поэтому вы уверены, что всегда получаете правильное значение токена. Важно знать, отправил ли вам последний токен на сервер приложений, этот логический код должен храниться в общих настройках.

У вас должен быть класс, который расширяет InstanceIDListenerService, в котором вы реализуете onTokenRefresh для обработки новых токенов.

Вы должны сопоставить свои идентификаторы пользователей, созданные приложением, к токенам, обратите внимание, что у одного пользователя может быть много действительных токенов, связанных с ними. Вам не нужно хранить токены с помощью имени пользователя и паролей пользователя, но должно быть некоторое сопоставление идентификаторов пользователей с токенами.

Например:

пользователя (UID, uname, pword)

Токен (UID, token_value)

+0

У меня есть InstanceIDListenerService, почти так же, как в образцах Google. Спасибо за структуру базы данных! Теперь я строю связь/регистрацию, но я не понимаю, что мне нужен токен, чтобы сообщить мое имя и пароль, но мне нужна учетная запись (имя и пароль) для сопоставления с токеном. Какой из них первым? –

+0

Juvi сказал, что токен - это пользователь, а не устройство, но вы говорите, что пользователь может иметь несколько токенов, это запутывает ... –

+0

Вы можете представить себе токен, представляющий одну установку вашего приложения на одном устройстве. Если пользователь устанавливает ваше приложение на нескольких устройствах, пользователь будет иметь несколько токенов, по одному для каждой установки. Перед созданием маркера InstanceID у вас должны быть пользователи с идентификаторами конкретных приложений. Таким образом, когда вы готовы отправить сообщение пользователю, вы будете искать идентификатор пользователя, а затем отправлять сообщения всем маркерам, связанным с этим пользователем. –

1

gcm должен быть связан с пользовательским объектом. Как только пользователь получит свой токен gcm, его токен пользователя, а не токен устройства, как вы думаете.

Для простой интеграции с базой данных в вашем приложении я предлагаю вам использовать Parse.com и их руководство для Android для начала работы.

Маркер становится уполномоченным каждый раз, когда вы открываете приложение, и это может измениться по времени - вот почему никто не спасает его и повторно использовать один и тот же маркер evreytime

+0

Так что для вас правильный путь 1) зарегистрировать пользователя как имя-пароль 2) ассоциированное токен как поле пользователя, я прав? –

+0

Я сейчас смотрю на parse.com, и тот факт, что я ничего не понимаю на их веб-сайте, вероятно, означает, что он слишком сложный для меня и моего проекта ... Может быть, я попробую гораздо позже. –