Подтвердить что ты не робот

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

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

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

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

4b9b3361

Ответ 1

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

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

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

Ответ 2

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

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

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

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

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

Ответ 3

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

Вы можете либо

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

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

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

Ответ 4

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

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

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

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

Ответ 5

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

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