Arhn - архитектура программирования

Андроид. Как узнать, когда восходящее сообщение GCM терпит неудачу, и почему

Я использую этот метод для отправки восходящих сообщений gcm в своем приложении для Android.

public void sendXMPPMessage(final int action, final DtoAble payload, final String messageId, final int retries) {
    ThreadPool.run(new Runnable() {
        @Override
        public void run() {
            boolean success;
            int retry = 0;
            do {
                try {
                    XMPPClientMessage message = new XMPPClientMessage(action, getXMPPAuthentication(),
                            payload.toDto());
                    Bundle bundle = new Bundle();
                    bundle.putString(GCM.XMPP_FIELD_DATA, Json.toJson(message));
                    mGcm.send(GCM.USER_AT_SERVER, messageId, bundle);
                    mGcm.close();
                    success = true;
                } catch (IOException e) {
                    Log.e(TAG, e.getMessage());
                    success = false;
                }
            } while (!success && ++retry <= retries);
            if (!success) {
                broadcastNack(messageId);
            }
        }
    });
}

У меня есть два устройства, одно работает на Lollipop, а другое на ICS. Он отлично работает на устройствах с леденцами, а иногда и на ICS. Проблема в том, что когда он выходит из строя на ICS, у меня нет шансов узнать, что он вышел из строя и почему. Никаких исключений не возникает, и сервер ничего не получает. Что я делаю не так?

Каждый раз, когда я что-то отправляю, я получаю этот вывод журнала:

GcmService start Intent { act=com.google.android.gcm.intent.SEND flg=0x10 pkg=com.google.android.gms cmp=com.google.android.gms/.gcm.GcmService (есть дополнительные функции) } com. google.android.gcm.intent.ОТПРАВИТЬ

и я продолжаю получать выходные данные журнала, например:

08-14 16:57:52.596 517-30365/? I/GCM﹕ Сообщение GCM com.myapp.android 0:1439560671790038%23407868f9fd7ecd

08-14 16:58:02.756 517-30365/? I/GCM﹕ Сообщение GCM com.myapp.android 0:1439560681812929%23407868f9fd7ecd

08-14 16:58:12.556 517-30365/? I/GCM﹕ Сообщение GCM com.myapp.android 0:1439560691789966%23407868f9fd7ecd

08-14 16:58:22.996 517-30365/? I/GCM﹕ Сообщение GCM com.myapp.android 0:1439560701783336%23407868f9fd7ecd


  • Можете ли вы добавить более подробную информацию о том, как это терпит неудачу? Вы видите пакеты, отправляемые по ссылке? 11.08.2015
  • Есть ли что-нибудь в логарифме устройства под тегом GCM? 12.08.2015
  • @StephenG: мой сервер не получает его, хотя в противном случае он это делает. 14.08.2015
  • @morepork Я обновил вопрос, включив в него подробности журнала. 14.08.2015
  • Это сообщение журнала, если для сообщения, поступающего с сервера на ваше устройство. Вы сначала получили регистрационный токен на обоих устройствах? 14.08.2015
  • Да, что меня раздражает, так это то, что восходящие сообщения иногда работают, а иногда нет. И когда это не работает, я не получаю отказ или какое-либо другое исключение. 22.08.2015

Ответы:


1

Вам нужно переопределить функцию onSendError(java.lang.String, java.lang.String)

https://developers.google.com/android/reference/com/google/android/gms/gcm/GcmListenerService.html#onSendError(java.lang.String, java.lang.String)

10.08.2015
  • Спасибо, но этот метод тоже не вызывается. Однако мой GCMlistenerService работает. 11.08.2015
  • Новые материалы

    Коллекции публикаций по глубокому обучению
    Последние пару месяцев я создавал коллекции последних академических публикаций по различным подполям глубокого обучения в моем блоге https://amundtveit.com - эта публикация дает обзор 25..

    Представляем: Pepita
    Фреймворк JavaScript с открытым исходным кодом Я знаю, что недостатка в фреймворках JavaScript нет. Но я просто не мог остановиться. Я хотел написать что-то сам, со своими собственными..

    Советы по коду Laravel #2
    1-) Найти // You can specify the columns you need // in when you use the find method on a model User::find(‘id’, [‘email’,’name’]); // You can increment or decrement // a field in..

    Работа с временными рядами спутниковых изображений, часть 3 (аналитика данных)
    Анализ временных рядов спутниковых изображений для данных наблюдений за большой Землей (arXiv) Автор: Рольф Симоэс , Жильберто Камара , Жильберто Кейрос , Фелипе Соуза , Педро Р. Андраде ,..

    3 способа решить квадратное уравнение (3-й мой любимый) -
    1. Методом факторизации — 2. Используя квадратичную формулу — 3. Заполнив квадрат — Давайте поймем это, решив это простое уравнение: Мы пытаемся сделать LHS,..

    Создание VR-миров с A-Frame
    Виртуальная реальность (и дополненная реальность) стали главными модными терминами в образовательных технологиях. С недорогими VR-гарнитурами, такими как Google Cardboard , и использованием..

    Демистификация рекурсии
    КОДЕКС Демистификация рекурсии Упрощенная концепция ошеломляющей О чем весь этот шум? Рекурсия, кажется, единственная тема, от которой у каждого начинающего студента-информатика..