Как получить push-уведомления C2DM для совместной работы с включенным WiFi? - PullRequest
3 голосов
/ 06 декабря 2011

Я сделал приложение, которое использует уведомления C2DM pusn. Все работает нормально, пока я подключен к сети GSM / 3G, но когда я переключаюсь на WiFi, он не всегда работает, и я не получаю push-уведомления.

Я понимаю технические проблемы, когда дело доходит до WiFi и push (firewalls et c).

У меня вопрос, есть ли какие-нибудь умные решения для этого (да, я знаю, что мог бы переключиться на "опрос" в моем приложении). Можно ли одновременно использовать GSM / 3G и WiFi, или Android уже делает это при подключении к WiFi?

/ Хенрик

Ответы [ 2 ]

4 голосов
/ 06 декабря 2011

В этом году я довольно много работал с C2DM и видел проблему, которую вы описываете.Я также слышал, что это происходит с устройствами iOS.Иногда я обнаруживаю, что при сбое push-сообщения устройство переключается в режим «В самолете» и снова возвращается в исходное состояние, чтобы снова включить прием push-сообщения.

Но в любом случае в нашем случае решение было двояким:

  1. Замените устройство тем, которое могло бы поддерживать соединение push-сообщений через Wi-Fi.В нашем случае у нас было тестовое устройство, которое было особенно подвержено этой проблеме.

  2. Создание механизма опроса в качестве (медленной) резервной копии для C2DM.Это, очевидно, означает больше усилий, больше кода, больше заряда батареи и данных, но в нашем случае получающееся в результате приложение очень надежно, даже с некоторыми проблемами с C2DM.

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

Вы не можете использовать 3G и Wi-Fi одновременно - устройство будет подключаться к одной сети одновременно.

Если ваше приложение должно на 100% получать сообщения, я думаю,у вас нет выбора, кроме как создать собственный опрос, но, возможно, провести медленный опрос, чтобы уменьшить использование ресурсов, поэтому ваше приложение всегда работает, но push просто добавляет преимущество в скорости.

0 голосов
/ 04 апреля 2014

C2DM использует порт 5228. Если ваша сеть Wi-Fi блокирует этот порт, вы не будете получать push-уведомления. Вы получите их обратно, как только начнете использовать сеть, которая не блокирует их, если они не истекли.

...