C2DM получает то же сообщение - PullRequest
1 голос
/ 31 марта 2012

Привет, я студент, и я разрабатываю приложение для Android в качестве проекта для моего курса по разработке программного обеспечения.

Итак, мне удается заставить весь процесс C2DM работать, и мое устройство может получать уведомления. Однако сообщение, которое я получаю, всегда одинаково, когда я нажимаю что-то, даже если я нажимаю другое сообщение.

Я следую инструкции, упомянутой здесь: http://www.vogella.de/articles/AndroidCloudToDeviceMessaging/article.html

Иногда я получаю правильное сообщение, однако мне приходится ждать более 30 минут, чтобы отправить новое сообщение. Какой интервал я должен ждать, прежде чем нажать другое сообщение? (Я пробовал 2 минуты ожидания, но получаю то же сообщение) или я что-то не так делаю.

Ответы [ 3 ]

2 голосов
/ 10 апреля 2012

Существует проблема с кодом учебника, когда ожидающее намерение создается с идентичным контекстом, requestCode, intent и флажками, как предыдущий вызов, и не отменяется после его обработки.Таким образом, получатель (MessageReceivedActivity), по-видимому, ссылается на предыдущий PendingIntent.

Один из способов обойти это: атрибут requestCode в настоящее время не используется, поэтому, чтобы сделать pendingIntent уникальным, вы можете указать там уникальное значение, например:

int ukey = (int) System.currentTimeMillis();
PendingIntent pendingIntent = PendingIntent.getActivity(context, ukey,
                intent, 0);

Это позволит MessageReceivedActivity получить намерение, которое вы намереваетесь (каламбур предназначен / :) для его получения.

Возможно, есть способ отменить pendingIntent, но яне мог заставить это работать.

1 голос
/ 09 мая 2012

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

Чтобы убедиться, что вы получаете хорошее сообщение, поставьте точку останова или журналв функции onReceive и посмотрите, что вы получите.

Если вы получаете разные сообщения, то ваша проблема такая же, как у меня: неправильное отображение сообщения.

MessageReceivedActivity из учебника Фогеля вызывает super.onCreate(savedInstanceState); в конце метода, когда он должен вызывать его первым в этом методе. См. Мое подробное решение связанного вопроса здесь.

0 голосов
/ 01 апреля 2012

Убедитесь, что вы не злоупотребляете ключом collapse_, поскольку это может привести к тому, что вы видите.

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

Я бы еще раз проверил, чтобы убедиться, что вы получаете сообщение, которое, по вашему мнению, есть, - посмотрите параметры намерения.

...