Мониторинг доставки ОС Android
Я разрабатываю мобильный клиент для работы с электронной почтой. Одна из ключевых особенностей - уведомления о новых сообщениях в почтовом ящике. В соответствии с рекомендациями GCM Architecture мы используем "Pusher", который отвечает за отправку сообщений на серверы Google, когда мы получили новое сообщение. Проблема заключается в том, что процесс тестирования сообщил о серьезных проблемах с доставкой push-уведомлений на устройства.
Итак, возникает вопрос: существуют ли подходы для мониторинга средней статистики о проценте доставки push-уведомлений, времени и т.д.? Или, может быть, у кого-то есть опыт в том, как настроить тестовую среду для эффективного мониторинга того, сколько уведомлений теряется во время работы приложения?
Приветствуются все "советы и рекомендации", связанные с улучшением возможностей Android GCM.
Ответы
Ответ 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 есть некоторые статистические данные. Это показывает только количество сообщений и регистраций.
Вам нужно будет реализовать свой собственный сбор данных, который можно было бы сделать довольно легко. Вы можете записать время и идентификатор каждого отправленного сообщения и вернуть отчет своего андроидного клиента на ваш сервер со временем получения сообщения. Затем вы можете сохранить данные на своем сервере и запросить по мере необходимости.