2015-02-10 4 views
1

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

установки параметров

Я реализую GCM связь с локальным сервером, так как в соответствии с примером кода Google. И клиент, и сервер являются небольшими изменениями в этом примере. Сервер - это Java-программа (опять же, почти полностью извлеченная из демонстрационного кода).

Проблема

В настоящее время App & сервера общаться нормально вперед и назад с помощью фиктивного эха "установки, которая является начальной настройкой GCM связи примера кода Google.

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

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

неурядицы/Вопросы/Разъяснения

  • Я полностью запутался, потому что демо поведение отлично работает (сообщение возвращается обратно в приложение).
  • Я отправляю правильный идентификатор регистрации, я могу многократно переключаться между демонстрационным поведением и моим поведением, и он будет/не будет работать соответствующим образом.
  • У меня нет collapse_key или time_to_live в любом из моих сообщений обратно в приложение, а delay_while_idle явно установлено в false (не опущено). Таким образом, не должно быть сверхбыстрого преждевременного таймаута или чего-либо подобного (если я не ошибаюсь в поведении этих ключей)
  • Насколько я понимаю, в поле данных нет «обязательных» ключей, это неверно? Если это так, я бы очень признателен за ссылки на любую соответствующую документацию по требуемым ключам в поле данных.
  • Я не могу себе представить, что есть ошибки разрешения, поскольку он работает с демонстрационной функциональностью.

В настоящее время сообщение, отправленное с моего сервера обратно в приложение GCM, имеет следующие поля, и, по моему мнению, требуется только три из них (все, кроме delay_while_idle?):

  • к (да собственно ключ здесь)
  • delay_while_idle (устанавливается в ложь)
  • данные (JSON строка данных)
  • message_id (генерируется автоматически идентификатор сообщения в шаблоне примера код, по существу случайный UUID)

Любая помощь очень ценится. Если вы считаете, что некоторые фрагменты кода важны, сообщите мне, что вы хотели бы видеть.

+0

Я не прочитал весь ваш вопрос, но убедитесь, что вы не используете приложение непосредственно из своей среды разработки. Таким образом, он использует временный сертификат. Поэтому экспортируйте, подпишите новый apk, поместите его в свое устройство и установите его. –

+0

Получил ли ваш сервер приложений какой-либо код ошибки 'nack'? – Koh

+0

Я запускаю приложение из IDE, но запускаю его на физическом устройстве, а не эмулированном. Это проблема? @ Koh Я буду проверять и возвращаться к вам. –

ответ

1

Хорошо, поэтому эту информацию нет в моем первоначальном посте, но после немного более отладки сегодня утром я обнаружил проблему.

В упаковке моего пользовательского сообщения для отправки по пути Сервер-> GCM-> Устройство, я ошибочно положил пару «данные»: «{JSON Dictionary}», а не «данные», : {JSON Dictionary} и отсутствовала ошибка, отправляемая службой GCM, указывающая на ошибку форматирования JSON.

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

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