Поддерживает ли Android push-уведомления практически в режиме реального времени?[закрыто]

StackOverflow https://stackoverflow.com/questions/1243066

  •  12-09-2019
  •  | 
  •  

Вопрос

Недавно я узнал о способности приложений для iPhone получать информацию практически мгновенно уведомления для приложений уведомления для приложений.

Это предоставляется в форме push-уведомлений, специального протокола, который поддерживает постоянное подключение к iPhone для передачи данных и отправляет двоичные пакеты в приложение, которое выдает оповещения невероятно быстро, в пределах 0,5 - 5 секунд, время отклика приложения, отправленного с сервера на телефон.Это отправляется как данные, а не SMS, очень-очень маленькими пакетами, оплачиваемыми в рамках тарифного плана передачи данных, а не как входящие сообщения.

Я хотел бы знать, есть ли при использовании Android аналогичное средство, или возможно ли реализовать что-то близкое к этому с использованием Android API.Чтобы уточнить, я определяю подобное как:

  • Не SMS-сообщение, а какое-то решение, основанное на данных
  • Настолько в реальном времени, насколько это возможно
  • Является масштабируемым, т. е. как серверная часть мобильного приложения, я мог бы уведомлять тысячи экземпляров приложения за считанные секунды

Я ценю, что приложение могло бы быть основано на извлечении, в стиле HTTP запроса / ответа, но в идеале я не хочу проводить такой интенсивный опрос только для проверки наличия уведомлений;кроме того, это все равно что капельное истощение тарифного плана.

Это было полезно?

Решение

Облачные сообщения Firebase Часто задаваемые вопросы По FCM это новая версия GCM.Он наследует основную инфраструктуру GCM для надежной доставки сообщений на Android, iOS и Chrome.Однако они продолжат поддерживать GCM, потому что сегодня многие разработчики используют GCM SDK для обработки уведомлений, а обновление клиентского приложения требует времени.

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

Ранее (и теперь устаревшая) служба вызывалась Обмен сообщениями из облака на устройство.

Другие советы

XMPP это хорошее решение.Я использовал его для Android-приложения с поддержкой push в реальном времени.XMPP является мощным, широко расширяемым и простым в интеграции и использовании.

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

Нужная вам библиотека - это не Шлепок как отмечалось выше, это Асмак.Но обратите внимание, что это среда сборки - вам нужно будет создать библиотеку.

Это расчет, который я сделал относительно влияния решения XMPP на время автономной работы:

Клиент Android должен поддерживать постоянное TCP-соединение, периодически отключаясь для отправки сердцебиения на XMPP-сервер.
Это явно влечет за собой определенные затраты с точки зрения энергопотребления.Оценка этих затрат представлена ниже:

  • Использование аккумулятора емкостью 1400 мАч (входит в комплект поставки Nexus One и HTC Desire)
  • Неработающее устройство, подключенное к сети 3G, потребляет приблизительно 5 мА
  • Цикл пробуждения, сердцебиения и сна происходит каждые 5 минут, занимает три секунды для завершения используется 300 мА
  • Таким образом, стоимость использования батареи в час составляет:
    • 36 секунд 300 мА = 3 мАч, посылающие сердцебиение
    • 3600 секунд 5 мА = 5 мАч на холостом ходу
    • 4:95 + 3 = 7:95 мАч в сочетании
  • Аккумулятора емкостью 1400 мАч хватает примерно на 11,6 дней в режиме ожидания и на 7,3 дня при запуске приложения, что примерно на 37% сокращает время автономной работы.
  • Однако сокращение времени автономной работы на 37% представляет собой абсолютный наихудший вариант на практике, учитывая, что устройства редко полностью простаивают.

Недавно я начал играть с MQTT http://mqtt.org для Android как способ сделать то, о чем вы просите (т.е.не SMS, а управляемые данными, почти мгновенная доставка сообщений, масштабируемость, а не опрос и т.д.)

У меня есть запись в блоге с справочной информацией по этому вопросу на случай, если это будет полезно http://dalelane.co.uk/blog/?p=938

(Примечание:MQTT - это технология IBM, и я должен отметить, что я работаю на IBM.)

Взгляните на Xtify ( Фиксировать ) Платформа.Похоже, именно это они и делают,

Google обесценивает C2DM, но на его месте они внедряют GCM (Google Cloud Messaging) Я не думаю, что у них есть какая-либо квота, и это бесплатно!Однако для этого требуется Android 2.2 +! http://developer.android.com/guide/google/gcm/index.html

Если вы можете быть уверены в том, что библиотеки Google подходят для вашей целевой аудитории, то, возможно, вам захочется копилка вернулась на GTalk функциональность (регистрация ресурса под существующим именем пользователя - перехват им сообщений по мере их поступления с помощью BroadcastReceiver).

Если нет, и я ожидаю ты не можешь, тогда ты в объединение ваших собственных версий XMPP в пакет.Это непросто, но может быть сделано проще, если XMPP поставляется отдельно в виде автономной библиотеки.

Вы также можете рассмотреть ПабСубХубуб, но я понятия не имею, как это используется в сети.Я считаю, что он построен поверх XMPP.

Я изучал это, и PubSubHubbub, рекомендованный джеймешем, не подходит.PubSubHubbub предназначен для обмена данными между серверами

"Я стою за NAT.Могу ли я подписаться на Хаб?Концентратор не может подключиться ко мне ".

/Анонимный

Нет, PSHB - это межсерверный протокол.Если вы используете NAT, вы на самом деле не сервер.В то время как мы обсуждали идеи для дополнительного PSHB расширений для выполнения зависающих запросов ("длинный опрос") и / или опрос messagebox для таких клиентов это не входит в основную спецификацию.Основная спецификация - только для взаимодействия с сервером.

/Брэд Фитцпатрик, Сан-Франциско, Калифорния

Источник: http://moderator.appspot.com/#15/e=43e1a&t=426ac&f=b0c2d (прямая ссылка невозможна)

Я пришел к выводу, что самый простой метод - это использовать Comet HTTP push.Это простое и хорошо понятное решение, но его также можно повторно использовать для веб-приложений.

Предпринята новая попытка разработать библиотеку Java с открытым исходным кодом для push-уведомлений на Android с использованием сервера Meteor comet в качестве серверной части.Вы можете проверить это по адресу блог проекта " Дикон".Нам нужны разработчики, поэтому, пожалуйста, расскажите об этом!

Я не могу найти, где я это прочитал, но я полагаю, что gmail использует открытое TCP-соединение для отправки электронной почты.

Как GTalk отсутствует в SDK, возможно, было бы хорошей идеей создать "стандартную" систему push-сообщений.Таким образом, должна быть запущена только одна служба, должно быть открыто только одно дополнительное tcp-соединение.Приложения должны обращаться к этой службе с помощью Intents и должен сначала запросить разрешение на отправку и получение уведомлений от сервиса.Затем служба должна уведомить пользователя о том, что новое приложение хочет отправлять и получать сообщения.Затем пользователь предоставит или отклонит разрешение, таким образом, он остается под контролем.Затем приложение зарегистрирует действие + категорию в службе, чтобы служба знала, как доставить отправленное сообщение.

Было бы это хорошей идеей или нет?

Почему бы вам не использовать реализацию XMPP?прямо сейчас доступно так много общедоступных серверов, включая gtalk, jabber, citadel и т.д.Для Android также доступен один SDK с именем SMACK.Мы не можем сказать, что это push-уведомление, но, используя XMPP, вы можете поддерживать открытое соединение между клиентом и сервером, что позволит осуществлять двустороннюю связь.Означает, что клиент и сервер Android могут взаимодействовать друг с другом.В настоящее время это удовлетворит потребность в Push в Android.Я реализовал пример кода, и он действительно отлично работает

Недавно я разработал http://pushdroid.org это единственное приложение, которое должно быть установлено на телефоне точно так же, как Google реализовал его в версии 2.2. это работает с версии 1.5 и транслируется через intent.

Недавно погуглил (18 мая 2016) объявленный это Огневая база теперь это единая платформа для мобильных разработчиков, включающая push-уведомления практически в режиме реального времени.Он также является мультиплатформенным :

Теперь компания предлагает всем пользователям Firebase бесплатные и неограниченные возможности уведомления с поддержкой iOS, Android и Интернета.

Источник

Проблема с GCM заключается в том, что в этом процессе задействовано много настроек:

  • Вам нужно добавить много шаблонов в свое приложение для Android
  • Вам необходимо настроить внешний сервер для взаимодействия с сервером GCM
  • Вам придется писать тесты

Если вам нравятся простые вещи (как и мне), вы должны попробовать Городское воздушное судно.Это (ИМХО) самый простой способ использовать GCM в вашем приложении, не выполняя много настроек.Это также предоставляет вам симпатичный графический интерфейс для проверки правильности доставки ваших сообщений GCM.

  • Вы можете ознакомиться с документами и руководством по началу работы здесь
  • Вы можете найти пример приложения здесь

Примечание:Я никоим образом не связан с UrbanAirship

https://github.com/Guti/Google-Cloud-Messaging--Titanium-/blob/master/src/com/google/android/gcm/GCMRegistrar.java

Это действительно хорошее и работающее решение для push.

Пожалуйста, попробуйте это

У них есть свои слушатели, которые должны использоваться вами, используя их библиотечные классы в вашем коде.Вам не нужно беспокоиться о толчке.Вы должны отправить сообщение на сервер, сервер отправит сообщение на устройство.Они используют OAuth.Что касается протоколов, существует два метода, использующих CCS и XMPP.CCS просто использует XMPP в качестве аутентифицированного транспортного уровня, поэтому вы можете использовать большинство библиотек XMPP для управления подключением.Чтобы отправлять уведомления на устройство, вы можете написать код для отправки в приложении Android, а также код вашего сервера.отправка сообщения будет осуществляться только с помощью вашего кода.Об остальном позаботится сервер Google в случае GCM.Вы можете ознакомиться с подробностями по этой ссылке

http://developer.android.com/google/gcm/server.html

Кроме того, по вопросам безопасности

безопасность обмена сообщениями в облаке Google https://groups.google.com/forum /#!тема/android-gcm/M-EevBitbhQ

Если ваше приложение не запущено, то устройства также могут получать уведомления, потому что вам нужно написать код для прослушивателей широковещательной передачи.В фоновом режиме он будет прослушивать сервер, и всякий раз, когда какой-либо пакет сообщений будет там, он получит сообщение в качестве уведомления.У Android есть сервис, который вам нужен, чтобы не беспокоиться об этом.Вам нужно только использовать эти ресурсы, используя библиотечный класс, который упрощает вашу работу, и позволить им написать, что если ваше приложение не запущено, то оно также получит уведомление.Очевидно, что должен быть какой-то слушатель, который заставит приложение получать сообщение.Проверьте раздел "Получить сообщение" по этой ссылке

http://developer.android.com/google/gcm/client.html

Он также будет принимать запросы от пользователей.Для GCM это сойдет.Пожалуйста, установите флажок "Отправить сообщение".

http://developer.android.com/google/gcm/client.html

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top