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

Push-уведомления Parse.com приходят с задержкой или только после перезапуска приложения Android

При тестировании push-уведомлений parse.com (отправляемых из CloudCode после сохранения) происходит что-то странное.

Иногда приложение Android получает уведомление немедленно (менее 1 секунды), но в других случаях оно приходит с задержкой в ​​несколько секунд.
Похоже, что перезапуск приложения приводит к немедленному отображению еще не полученных уведомлений.

В чем может быть причина?
Может ли это быть ошибкой, например, в сервисе parse.com?

Есть ли ограничение на количество отправленных или полученных уведомлений (в единицу времени)?

Проблема возникает как с пользовательским BroadcastReceiver, так и с уведомлением на системной панели по умолчанию.

Серверный javascript CloudCode:

Parse.Cloud.afterSave("Timer", function(request) {
  // from https://www.parse.com/docs/js/guide#cloud-code
  console.log("Before Parse.Push.send -- without alert");
  var query = new Parse.Query(Parse.Installation);

  // http://blog.parse.com/announcements/pushing-from-the-javascript-sdk-and-cloud-code/ :
  Parse.Push.send({
    where: query,
    data: {
       //alert: "afterSave on a Timer -- Parse.Push.send"
    }
  });

  console.log("After Parse.Push.send -- without alert");
});

Пользовательский широковещательный приемник в Kotlin (но проблема возникает и без пользовательского BroadcastReceiver):

override fun onCreate(savedInstanceState: Bundle?) {
    super<BaseActivity>.onCreate(savedInstanceState)

    setContentView(R.layout.main_activity)
    // ...

    registerReceiver()
}

private fun registerReceiver() {
    val intentFilter = IntentFilter()
    intentFilter.addAction("com.parse.push.intent.RECEIVE")

    registerReceiver(MyBroadcastReceiver(), intentFilter)
}

inner class MyBroadcastReceiver : BroadcastReceiver() {
    override fun onReceive(context: Context, intent: Intent) {
        Toast.makeText(context, "MyBroadcastReceiver 2: onReceive: "
                + context + ";" + intent, Toast.LENGTH_SHORT).show()

        loadTimers()
    }

}

На данный момент мы используем бесплатную учетную запись parse.com. Могло ли это повлиять на своевременность реакции на push-уведомления?

Редактировать: если вы считаете, что использование push-уведомлений для запуска обновлений/синхронизации элементов в режиме, близком к реальному времени, не является хорошей идеей (как в целом, так и на parse.com), это также будет ценным ответом, особенно если предлагается альтернатива ...


  • У меня возникает та же проблема, только когда я тестирую push на телефоне Xiaomi. 16.06.2015
  • Я не думаю, что есть гарантия немедленной доставки push-уведомлений. 16.06.2015
  • @nasch Если бы вы могли подкрепить это какой-то статьей, например, вы могли бы сделать это ответом здесь, на SO. 30.05.2016

Ответы:


1

По предложению karolvrn вот мой ответ:

Я не думаю, что есть гарантия немедленной доставки push-уведомлений.

https://developers.google.com/cloud-messaging/concept-options#setting-the-priority-of-a-message

У вас есть два варианта назначения приоритета доставки нисходящим сообщениям: обычный и высокий приоритет. Доставка сообщений с высоким и обычным приоритетом работает следующим образом:

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

Я подчеркнул «попытки», что означает, что это не гарантирует, что сообщение будет доставлено немедленно.

Вот опыт другого разработчика по проблемам надежности с GCM:

https://eladnava.com/google-cloud-messaging-extremely-unreliable/

30.05.2016
Новые материалы

Коллекции публикаций по глубокому обучению
Последние пару месяцев я создавал коллекции последних академических публикаций по различным подполям глубокого обучения в моем блоге 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 , и использованием..

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