Поддерживает ли 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 каким-либо образом
Ответ 15
https://github.com/Guti/Google-Cloud-Messaging--Titanium-/blob/master/src/com/google/android/gcm/GCMRegistrar.java
Хорошее и эффективное решение для быстрого нажатия.
Пожалуйста, попробуйте
Ответ 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