Когда-то не получал push-уведомление GCM в мобильном телефоне

У меня возникла странная проблема. Я получаю push-уведомление на своем мобильном устройстве, если он подключен к Интернету в тот момент, когда сообщение было отправлено со стороны сервера. Но если он не подключен к Интернету в то время, и скорее я подключаюсь к интернету через некоторое время. Я не получаю это уведомление. По моим сведениям, все эти уведомления должны отображаться всякий раз, когда мы в сети, потому что сервер GCM хранит все эти сообщения. Я получаю уведомление для всех других приложений. Также я дал разрешение wakelock в манифесте. Что может быть проблемой? Что-нибудь с сервера, на стороне клиента или на мобильном? Пожалуйста помоги...

Это значение отправляется серверу GCM с стороннего сервера (.Net-сервер):

String postdata= "collapse_key=score_update&time_to_live=2419200&delay_while_idle=1&data.message=‌​" + 
message + "&data.time=" + System.DateTime.Now.ToString() + "®istration_id=" + deviceToken + ""

Заранее спасибо

7
nl ja de

1 ответы

delay_while_idle=1 contradicts Also I have given wakelock permission in manifest

delay_while_idle=1 means the message won't reach the device if it's idle (off, offline, locked screen, etc...). Change it to 0 if you want your wakelock permission to make any difference.

Просто для пояснения - сообщение должно дойти до устройства после того, как оно перестанет быть бездействующим (если оно слишком долгое время простаивало, где «слишком длинный» определяется указанным time_to_live ).

Вот соответствующая цитата из документации GCM:

delay_while_idle

     

Если включено, указывает, что сообщение не следует отправлять немедленно   если устройство находится в режиме ожидания. Сервер будет ждать, пока устройство станет   active, а затем только последнее сообщение для каждого значения collapse_key   будет отправлен. Необязательный. Значение по умолчанию - false и должно быть JSON   логическое значение.

     

time_to_live

     

Как долго (в секундах) сообщение должно храниться в хранилище GCM, если   Устройство находится в автономном режиме. Необязательный (по умолчанию время жизни - 4 недели, и   быть установленным как номер JSON).

10
добавлено
«Задержка в режиме ожидания» означает именно то, что он говорит - задержка доставки сообщения, пока устройство не работает. Когда устройство возвращается к активному (онлайн, отображение включено), сообщение должно быть получено. Разрешение Wakelock имеет значение, если вы хотите разбудить устройство и отобразить уведомление, даже когда устройство заблокировано. Вот почему имеет смысл использовать его, когда delay_while_idle = 0 .
добавлено автор Eran, источник
Пожалуйста. Значение ключа collapse зависит от содержимого сообщения. Сообщения, которые сообщают о последнем состоянии чего-либо, например «Оценка ...», должны иметь один и тот же ключ коллапса, так что если вы отправите два из них на одно и то же устройство, пока он неактивен, будет доставлен только последний, когда устройство становится активным. Сообщения, которые содержат разные данные, такие как текст, отправленный другим пользователем в чате, должны иметь разный ключ коллапса, так что все сообщения (до определенного предела), которые были сохранены Google, когда устройство находится в режиме ожидания, будут доставлены, когда он активен еще раз.
добавлено автор Eran, источник
Если вы хотите получить оба уведомления, вы должны использовать другой ключ свернуть.
добавлено автор Eran, источник
Вы хотите, чтобы устройство получало сообщение во время его простоя, или вы хотите, чтобы Google отложил доставку до тех пор, пока устройство не активируется? Если вы хотите первый, используйте delay_while_idle = 0 , в противном случае используйте delay_while_idle = 1 .
добавлено автор Eran, источник
Ты уверен. Потому что в документации я обнаружил, что флаг delay_while_idle должен быть истинным. Поэтому на стороне сервера с использованием .net-сервера я прохожу delay_while_idle = 1 (true), потому что 0 (false). Если вы подтвердите, пожалуйста, дайте мне знать ...
добавлено автор ARIJIT, источник
Большое спасибо .... Также требуется добавить инкрементное значение к ключу ключа, т. Е., Score_update.
добавлено автор ARIJIT, источник
Например, если я отправляю два сообщения с разным текстом в течение одного часа. По нашим сведениям, если устройство активно, мы получаем оба уведомления в строке состояния. Но если устройство простаивает, когда оба сообщения отправляются, я получаю оба уведомления с одним и тем же ключом коллапса, или мне нужно добавить некоторое добавочное значение.
добавлено автор ARIJIT, источник
Наконец, я отправляю эти данные на сервер GCM с сервера (.Net). Пожалуйста, подтвердите меня: String i = i ++; String postdata = "collapse_key = i & time_to_live = 2419200 & delay_while_idle = 0 & data & zwnj; .message =" + message + "& data.time =" + System.DateTime.Now.ToString() + "& registration_id =" + deviceToken + ""
добавлено автор ARIJIT, источник
Все еще не уверен с флагом delay_while_idle. Потому что в developer.android.com/google/gcm/adv.html ясно они отмечают, что флаг delay_while_idle должен быть правдой. Таким образом, delay_while_idle = 0 - false, 1 - true. Хотя для получения обоих уведомлений требуется разный ключ. Ответьте, пожалуйста...
добавлено автор ARIJIT, источник
Теперь для примера возьмите три устройства. Первое устройство всегда активно и онлайн, второе устройство заблокировано/спящее (но оно подключено к Интернету), третье устройство отключено. Теперь, если две уведомления были отправлены с сервера, первое устройство получит оба уведомления; второй должен получать оба уведомления, когда он становится активным; третье устройство должно получать оба уведомления, когда оно снова находится в сети, а также активно. Это мое требование, теперь, пожалуйста, скажите мне, что должно быть значением delay_while_idle и collapse_key ???
добавлено автор ARIJIT, источник
@ARIJIT Можете ли вы поделиться своим ответом, если вы это поняли?
добавлено автор Prabhakar, источник
Mobile Dev Jobs — вакансии и аналитика
Mobile Dev Jobs — вакансии и аналитика
6 187 участник(ов)

Публикуем вакансии и запросы на поиск работы по направлению iOS, Android, Xamarin и т.д. ВАЖНО: Правила публикации и правила канала: Ссылка – https://telegra.ph/Pravila-oformleniya-vakansij-i-rezyume-11-09-2

Android Developers
Android Developers
4 476 участник(ов)

Общаемся на темы, посвященным Android-разработке, SDK, Kotlin, Realm и т.д.

Android Architecture
Android Architecture
2 186 участник(ов)

Русскоязычный чат по архитектуре в андроид приложениях. Подробнее: http://telegra.ph/Android-Architecture-12-24

rus-speaking/android
rus-speaking/android
1 705 участник(ов)

Основной чат по Android разработке (вопрос-ответ). ПРАВИЛА: bit.ly/andr-rules. NEWS: bit.ly/AnrdResId ЧАТЫ: Основной: bit.ly/andr-main IDE, сборка, Git, сервисы: bit.ly/andr-tools Оффтоп: bit.ly/andr-offtop Конференции, события: bit.ly/andr-events Вакансии, найм: bit.ly/andr-job Архитектура: bit.ly/andr-patterns Rx: bit.ly/andr-rx Тестирование: bit.ly/andr-test Kotlin: bit.ly/andr-kotlin Хаmarin: bit.ly/andr-xamarin За мат, спам, агрессию, предложения о работе, оффтоп в этом канале - бан на сутки и более ☢☢☢

Android Dev Подкаст
Android Dev Подкаст
1 325 участник(ов)

Комната для обсуждения Android Dev подкаста apptractor.ru/AndroidDev/ Общее обсуждение Android: https://t.me/android_ru Остальные чаты про Android: http://t.me/devChats Наши новости https://t.me/androiddevpodcast_news

Android Guards
Android Guards
602 участник(ов)

Обсуждение любых вопросов касающихся безопасности Android. - Защита системы и приложений - Уязвимости и эксплойты - Вредоносное ПО - Копание в кишках системы и приложений (RE)

Android JOB
Android JOB
466 участник(ов)

Публикуем вакансии и запросы на поиск работы по направлению Android (full-time, part-time, remote и разовые подработки)

AndroidDev :: Разработка. It's Android time now!
AndroidDev :: Разработка. It's Android time now!
458 участник(ов)

It's Android time now! Чат разработчиков Android. Вакансии, резюме и информацию о митапах размещать можно. Публикацию скрытой и явной рекламы ваших каналов и сайтов после получения разрешения от @olegushakov

Aandroid Talks!
Aandroid Talks!
212 участник(ов)

Чат об общих вопросах по ОС Android. Чат для разработки под андроид - pro.android: https://t.me/joinchat/AAAAAEKIFKnmRT9cMebb9w

Android Rus
Android Rus
68 участник(ов)

Google Cloud Platform_ru
Google Cloud Platform_ru
49 участник(ов)

Русскоязычное обсуждение google_cloud_pladform