2013-08-20 2 views
1

Я пытаюсь создать приложение, которое использует push-уведомления. Я выполнил всю работу как в стороннем сервере, так и в разработке приложений, и уведомления отправлены успешно.Как правильно обновить идентификатор регистрации GCM в приложении

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

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

Хотя я могу решить эту проблему с помощью канонического id. В частности, Google говорит

"canonical_ids": 1  
"results": [{ "message_id": "1:2342", "registration_id": "32" }] 

успех, но регистрация ID должна быть обновлена ​​в базе данных сервера (от 23 до 32)

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

Я знаю, что идентификатор регистрации не является идентификатором пользователя, а идентификатором зарегистрированного устройства.

Моя первая мысль - позволить серверу иметь разные идентификаторы регистрации. Поэтому, когда я получу канонический идентификатор, я проигнорирую его. Мне не нравится эта идея, хотя ...

Моя вторая мысль, когда я изменить регистрационный номер для старших один, чтобы обновить его как-то в приложение ...

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

ответ

0

Так что, если я слушаю советы Google, с изменением регистрации идентификатора старший (рабочий) один

Это противоположно тому, что Google говорит вам, что нужно делать. Они рекомендуют вам удалить старый идентификатор из своей БД и сохранить только новый идентификатор регистрации.

Вот relevant quote:

Канонические идентификаторы

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

GCM предоставляет средство под названием «идентификационные записи для канонической регистрации», чтобы легко восстановить эти ситуации. Идентификатор канонической регистрации определяется как идентификатор последней регистрации, запрошенный вашей заявкой.Это идентификатор, который сервер должен использовать при отправке сообщений на устройство.

Если позже вы попытаетесь отправить сообщение с использованием другого регистрационного идентификатора, GCM обработает запрос, как обычно, но он будет содержать идентификационный номер канонической регистрации в поле registration_id ответа. Удостоверьтесь, что замените идентификатор регистрации, хранящийся на вашем сервере, с помощью этого канонического идентификатора, так как в конечном итоге идентификатор, который вы используете, перестанет работать.

Смежные вопросы