Поддерживает ли Android почти в режиме реального времени push-уведомление?

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

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

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

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

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

Ответ 1

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

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

Ранее (и теперь не рекомендуется) служба называлась Cloud To Device Messaging.

Ответ 2

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

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

Библиотека, которую вы хотите, - это не Smack, как указано выше, aSmack. Но обратите внимание: это среда сборки - вам нужно будет создать библиотеку.

Это расчет, который я сделал для воздействия 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% представляет собой абсолютный наихудший случай на практике, учитывая, что устройства редко полностью бездействуют.

Ответ 3

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

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

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

Ответ 4

Посмотрите на платформу Xtify. Похоже, это то, что они делают,

Ответ 5

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

Ответ 6

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

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

Вы также можете рассмотреть PubSubHubub, но я понятия не имею, как его использовать. Я считаю, что он построен поверх XMPP.

Ответ 7

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

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

     

/Anonymous

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

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

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

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

Ответ 8

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

Ответ 9

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

Ответ 10

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

Будет ли хорошая идея или нет?

Ответ 11

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

Ответ 12

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

Ответ 13

Недавно Google (18May2016) объявил, что Firebase теперь является единой платформой для мобильных разработчиков, включая почти в режиме реального времени push notifications.It также многоплатформенный:

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

источник

Ответ 14

Проблема с GCM заключается в том, что в процессе есть много конфигурации:

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

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

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

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

Ответ 16

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

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