Мониторинг доставки Android GCM

Я разрабатываю мобильный клиент для работы с электронной почтой. Одна из ключевых особенностей – уведомления о новых сообщениях в почтовом ящике. В соответствии с рекомендациями GCM Architecture мы используем «Pusher», который отвечает за отправку сообщений на серверы Google, когда мы получили новое сообщение. Проблема заключается в том, что процесс тестирования сообщил о серьезных проблемах с доставкой уведомлений push на устройства.

Поэтому возникает вопрос: существуют ли подходы к мониторингу средних статистических данных о проценте доставки push-уведомлений, времени и т. Д.? Или, может быть, у кого-то есть опыт в том, как настроить тестовую среду для эффективного мониторинга того, сколько уведомлений теряется во время работы приложения?

Приветствуем все «советы и рекомендации», связанные с улучшением возможностей Android GCM.

Solutions Collecting From Web of "Мониторинг доставки Android GCM"

Google утверждает, что обработка на своем сервере GCM занимает менее миллисекунды. Ссылка ниже для отличного видео на GCM от разработчика Google. И это правдоподобно, потому что я мог получать push-уведомления почти мгновенно, используя сервер моей компании на моем устройстве.

http://www.youtube.com/watch?v=YoaP6hcDctM

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

Однако существуют определенные условия, при которых сообщения GCM не доставляются.

  1. Исходные данные не отмечены в настройках учетной записи и синхронизации.
  2. До 4.0.4 (ICS) учетная запись Google на устройстве является предварительным условием для GCM. Возможно, пользователи не вошли в свою учетную запись Google.

Единственный способ сделать это – отправить отчет на ваш сервер с отметкой времени полученного нажатия.

Вы также можете

  1. Отправляйтесь на сервер после получения уведомления в своей службе GCM. Для реализации вам нужно будет добавить идентификатор push для ваших push-уведомлений и отправить идентификатор вместе с push-данными. Клиент должен будет получить временную метку после получения сообщения и отправить его вместе с идентификатором уведомления. Простой скрипт php может быть выполнен (при отправке push-уведомления вы устанавливаете время отправки уведомления, и как только он получает метку времени устройства, он устанавливает уведомление о получении . Это сводится к двум полям в вашей базе данных (помечены в Жирным шрифтом). При таком подходе вы, вероятно, не так заботитесь об ошибках, так как очень вероятно, что устройство получит соединение, когда оно получит уведомление, и таким образом его запрос на ваш сервер пройдет.

  2. Сохраните список уведомлений, полученных в вашем приложении, и их метки времени. И когда синхронизация будет выполнена, отправьте эти данные в свою синхронизацию. Это, в конечном счете, тот же подход, но данные вашего сервера не будут такими же реальными, как первый подход. Однако дополнительный запрос не требуется со стороны клиента, но сохранение полученных уведомлений и их временных меток.

В общем, вам нужно будет отслеживать уведомления, отправленные с использованием идентификатора уведомления и времени их отправки ( отправки-уведомления ) и времени их приема ( получения-уведомления ). Простой запрос поможет вам проанализировать эти данные.

Google добавила поддержку, чтобы вы могли получать квитанции о доставке с сервера облачных соединений (CCS):

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

Чтобы включить эту функцию, сообщение, которое ваш сторонний сервер приложений отправляет в CCS, должен содержать поле «delivery_receipt_requested». Если для этого поля установлено значение true, CCS отправляет квитанцию ​​о доставке, когда устройство подтверждает, что оно получило конкретное сообщение.

https://developer.android.com/google/gcm/ccs.html#receipts

Google не делает эти статистические данные доступными для вас. В консоли разработчика Android есть некоторые статистические данные. Это показывает только количество сообщений и регистраций.

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

С того времени Google предоставил разработчикам расширенный инструмент мониторинга.

Инструмент диагностики Gcm доступен в консоли разработчика Google Play. Дополнительная информация находится здесь https://support.google.com/googleplay/android-developer/answer/2663268

Таким образом, вы можете легко отслеживать статус конкретного сообщения через токен регистрации.