Push на Android

SergeRRRRRR

Есть сервер, есть к примеру несколько тыщ андроид девайсов с приложениями.
Надо уведомлять об изменениях на сервере андроид приложение. Причем как все сразу, так иногда только нужные девайсы.
Как это сделать с наименьшим лагом и потреблением ресурсов?
Копал в сторону очередей - rabbit, active. У кролика как-то плохо с аутентификацией, у active получше.
Короче, накидайте бестпрактикс.

nikola1956

Parse Push: http://www.parse.com/products/push
Push-уведомления для Android и iOS. Делается тривиально.

SergeRRRRRR

очевидно, мне не нужны платные решения.

nikola1956

Оно вроде бы не такое уж и платное. Поизучайте...
Когда последний раз использовали это решение, не помню, чтобы вспоминали о плате...
P.S. Вот, нашел:
"You can send an unlimited number of push notifications to up to 1 million unique recipients for free. Above that, we will charge you $0.05 per extra 1,000 monthly unique recipients. 'Unique recipients' is the number of distinct devices a push notification is sent to in a given month. If a particular device receives multiple push notifications in a month, that only counts as one 'unique recipient'. If a particular user owns multiple devices, and a push notification is sent to each of these devices, that will count as multiple 'unique recipients'."
Подробности:
"How does Parse define 'unique recipients' for push notification pricing?
'Unique recipients' is the number of distinct devices a push notification is sent to in a given month. If a particular device receives multiple push notifications in a month, that only counts as one 'unique recipient'. If a particular user owns multiple devices, and a push notification is sent to each of these devices, that will count as multiple 'unique recipients'.
My app registers for remote notifications on launch. Does this count against my request limit?
Apps register for push notifications by creating an installation object, which counts as a network request. Subsequent app launches associated with this installation will count as additional requests if the installation object is modified and saved. Note that the installation object may be modified automatically by the Parse SDK, such as when the device time zone or app version has changed.
How do push messages count towards the request limit?
A request to send a push does use an API request, and does count towards your request limit. However, that request could be to send a push to a single device, or a million devices, and it still uses just one request. One thing to keep in mind is that sending a push notification will likely drive people to use your app, which itself might result in an increase in API request usage. We recommend that you increase your app's request limit prior to a big marketing push, or consider spreading out your campaign over a longer period of time.
Can I use the push notifications product without using Core or Analytics?
Our QuickStart Guide for Parse Push provides the minimal steps required to set up push notifications in your app. Using Core and Analytics to target and track your push campaign metrics is optional."
http://www.parse.com/plans/faq/

Werdna

Оно вроде бы не такое уж и платное. Поизучайте...
Очевидно, что человек не хочет использовать сторонний сервис, а хочет сделать сам.
Я тоже знаю про parse.com, но хочется узнать как сделать это без них вообще.

evolet

но хочется узнать как сделать это без них вообще
ня!
http://developer.android.com/google/gcm/index.html

Werdna

А ведроиды без гугловой начинки? :)

evolet

Без гугловой проприетарной части имхо push либо не сделаешь в принципе, либо будет поделка, которую без огромных ресурсов не отладить. Про готовые альтернативы я не слышал, зато надстроек, существенно упрощающих использование GCM полно.
Это если хочется именно такого поведения , как у push. Тут по моему разумению 2 важных момента:
- push приходят даже если приложение не запущено
- каким-то образом GCM решает проблему с транспортом и умеет доставлять на физическое устройство по некоему RegistrationID (хз, у телефона статического ip или адреса нет, возможно там какой-то аналог dyndns запилен ну или они задействовали свою непубличную систему слежения за устройствами)
Наколхозить что-нить работоспособное так то всегда можно, опрашиваешь свой сервачек раз в пол минуты и вперед. Работать будет, но есть нюансы:)

SergeRRRRRR

во-первых там ограничений тоже хватает, во-вторых непонятно, что с задержкой.
Я вижу свою альтернативу как сервер-очередь (rabbit, active и тп и тд) - андроид девайсы.
Для составления цельной картины данной архитектуры мне не хватает деталей и знаний, как общаться из андроида с очередью, какие протоколы пускать по низу (websocket,tcp..какие по верху, как авторизовать устройство на очереди (в activemq это я более менее понял и потестировал, в кролике жуткие опердени какие-то) и тп и тд.

evolet

Я недавно прикручивал push через parse.com - единичные сообщения доставляются за секунду примерно, для нескольких тысяч, я думаю можно считать ну максимум 5 сек точно (с запасом).
Ну делай на голом гугловском апи, у них правда половину гемора для разработчика все равно осталось, зато будет гарантированно бесплатно и секьюрно (завязано только на авторитет гугла). По производительности гугловский GCM все-равно не будет узким местом имхо.
И какие ограничения в GCM тебя волнуют? Вроде как при использования именно для уведомлений ограничений и нет.

Werdna

Без гугловой проприетарной части имхо push либо не сделаешь в принципе
Ну теперь понятно, что надо конекшн держать на сервер открытый и всё.

Phoenix

после 10-15 таких приложений батарея дохнуть будет быстрее сильно

Werdna

после 10-15 таких приложений батарея дохнуть будет быстрее сильно
А не надо посылать часто пинговые пакеты и не будет сажаться батарея.
По идее можно замедлять пинги постепенно от 60 секунд до раза в 10 минут посылать. Ещё можно вообще не посылать пинги, если как-то ОС дает понять, что сеть не пропадала, айпишник не менялся и т.д.
Да и сотовая вышка пингует чаще, хотя много таких приложений действительно плохо...
Оставить комментарий
Имя или ник:
Комментарий: