Недавно я узнал о способности приложений для iPhone получать почти мгновенные уведомления о приложениях, уведомления о приложениях .
Это обеспечивается в форме push-уведомлений, специального протокола, который поддерживает постоянную связь с iPhone и передает двоичные пакеты в приложение, которое невероятно быстро выскакивает , в течение 0,5 - 5 секунд от приложения сервера до приложения телефона время отклика. Это отправляется как данные, а не как SMS, в очень маленьких пакетах, которые оплачиваются как часть плана данных, а не как входящие сообщения.
Я хотел бы знать, есть ли в Android аналогичное средство или возможно ли реализовать что-то похожее с помощью API-интерфейсов Android. Чтобы уточнить, я определяю подобное как:
- Не SMS-сообщение, а какое-то решение, управляемое данными
- В режиме реального времени, насколько это возможно
- Масштабируемость, т. Е. Как серверная часть мобильного приложения, я мог бы уведомить тысячи экземпляров приложения за считанные секунды
Я ценю, что приложение может быть основано на запросах, стиль HTTP-запроса / ответа, но в идеале я не хочу так много опрашивать, чтобы просто проверить уведомления; кроме того, это как капельное истощение плана данных.
источник
Ответы:
Firebase Cloud Messaging FCM FAQ - это новая версия GCM. Он наследует основную инфраструктуру GCM для надежной доставки сообщений на Android, iOS и Chrome. Однако они продолжат поддерживать GCM, потому что многие разработчики используют GCM SDK сегодня для обработки уведомлений, а обновление клиентских приложений требует времени.
По состоянию на 26 июня 2012 г. Google Cloud Messaging является предпочтительным способом отправки сообщений в приложения, работающие на устройствах.
Ранее (а теперь и устарела) эта служба называлась « Обмен сообщениями с облака на устройство» .
источник
XMPP - это хорошее решение. Я использовал его для приложения Android, работающего в режиме реального времени. XMPP является мощным, легко расширяемым и простым в интеграции и использовании.
Существует множество бесплатных серверов XMPP (хотя из вежливости вы не должны злоупотреблять ими), и есть серверы с открытым исходным кодом, которые вы можете запускать на одном из ваших собственных серверов. OpenFire - отличный выбор.
Библиотека, которую вы хотите, не Smack, как отмечено выше, это aSmack . Но обратите внимание, это среда сборки - вам придется собирать библиотеку.
Вот расчет, который я сделал для влияния времени работы от батарей решения XMPP:
источник
Недавно я начал играть с 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 поставляется отдельно как отдельная библиотека.
Вы также можете рассмотреть PubSubHubub , но я понятия не имею, его использование в сети. Я считаю, что он построен поверх XMPP.
источник
Я смотрел на это, и PubSubHubBub, рекомендованный Jamesh, не вариант. PubSubHubBub предназначен для обмена данными между серверами.
Я пришел к выводу, что самый простой способ - использовать HTTP-толчок Comet. Это простое и понятное решение, но его также можно использовать для веб-приложений.
источник
Существует новая программа с открытым исходным кодом для разработки библиотеки Java для push-уведомлений на Android с использованием комет-сервера Meteor в качестве бэкэнда. Вы можете проверить это в блоге проекта Deacon . Нам нужны разработчики, поэтому, пожалуйста, распространите информацию!
источник
Google недавно (18 мая 2016 года) объявил, что Firebase теперь является унифицированной платформой для мобильных разработчиков, включая push-уведомления практически в реальном времени. Это также мультиплатформенная платформа:
источник
источник
Я не могу найти, где я читаю это, но я полагаю, что gmail использует открытое TCP-соединение для отправки по электронной почте.
источник
Как
GTalk
видно из SDK, было бы неплохо создать «стандартную» систему push-сообщений. Таким образом, должна работать только одна служба, только одно дополнительное TCP-соединение должно быть открыто. Приложения должны взаимодействовать с этой службойIntents
и сначала запрашивать разрешение на отправку и получение уведомлений от службы. Затем служба должна уведомить пользователя о том, что новое приложение хочет отправлять и получать сообщения. Затем пользователь предоставит или отклонит разрешение, поэтому он остается под контролем. Затем приложение зарегистрирует в сервисе категорию action +, чтобы служба знала, как доставить отправленное сообщение.Будет хорошая идея или нет?
источник
Почему бы вам не пойти с реализацией XMPP. сейчас доступно так много общедоступных серверов, включая gtalk, jabber, citadel и т. д. Для Android также доступен один SDK с именем SMACK. Мы не можем сказать push-уведомление, но используя XMPP, вы можете оставить соединение между клиентом и сервером открытым, что позволит осуществлять двустороннюю связь. Значит, Android-клиент и сервер могут общаться друг с другом. В настоящее время это удовлетворит потребность Push в Android. Я реализовал пример кода, и он действительно отлично работает
источник
Я недавно разработал http://pushdroid.org это единственное приложение, которое должно быть установлено на телефоне так же, как Google реализовал его в 2.2, работает с 1.5 и вещает через намерение.
источник
Проблема с GCM заключается в том, что в процесс вовлечено много настроек:
Если вам нравятся простые вещи (как я), вы должны попробовать UrbanAirship . Это (ИМХО) самый простой способ использовать GCM в вашем приложении без особых настроек. Это также дает вам симпатичный графический интерфейс для проверки правильности доставки ваших сообщений GCM.
Примечание: я никак не связан с UrbanAirship
источник
https://github.com/Guti/Google-Cloud-Messaging--Titanium-/blob/master/src/com/google/android/gcm/GCMRegistrar.java
Это действительно хорошее и рабочее решение для толчка.
Пожалуйста, попробуйте
источник
У них есть свои слушатели, которые вы должны использовать, используя их библиотечные классы в вашем коде. Вам не нужно беспокоиться о толкании. Вы должны отправить сообщение на сервер, сервер отправит сообщение на устройство. Они используют OAuth. Что касается протоколов, есть два метода, использующих CCS и XMPP. CCS просто использует XMPP в качестве аутентифицированного транспортного уровня, поэтому вы можете использовать большинство библиотек XMPP для управления соединением. Для отправки уведомлений на устройство вы можете написать код в приложение для Android, а также код вашего сервера. отправка сообщения будет осуществляться только вашим кодом. В случае GCM сервер Google позаботится об остальном. Вы можете проверить детали по этой ссылке
http://developer.android.com/google/gcm/server.html
Также по вопросам безопасности
безопасность обмена сообщениями в облаке Google https://groups.google.com/forum/#!topic/android-gcm/M-EevBitbhQ
Если ваше приложение не запущено, устройства также могут получать уведомления, потому что вы должны написать код для слушателей вещания. В фоновом режиме он будет прослушивать сервер и всякий раз, когда будет присутствовать какой-либо пакет сообщения, он будет получать сообщение как уведомление. У Android есть сервис, который вам нужен, чтобы не беспокоиться об этом. Вам нужно только использовать эти ресурсы, используя библиотечный класс, который облегчает вашу работу и позволяет им писать, если ваше приложение не запущено, а также оно получает уведомление. Очевидно, что будет какой-то слушатель, который сделает приложение для получения. Проверьте раздел «Получить сообщение» в этой ссылке
http://developer.android.com/google/gcm/client.html
Он также будет принимать запросы от пользователей. Для GCM это подойдет. Пожалуйста, отметьте «Отправить сообщение»
http://developer.android.com/google/gcm/client.html
источник