Правилен начин за изпращане на насочени известия

Искам да изпратя известие от някакъв сървър до устройство с Android. Най-очевидният (и енергоемък) начин е да продължите да търсите в някаква база данни за нови съобщения, като използвате приемник за услуга/излъчване.

Сигурен съм, че има и други начини да се свърши тази работа. Разгледах GCM (google cloud messaging) и изглежда, че Google винаги поддържа някаква TCP/IP връзка активна. Това по същество означава, че използването на GCM ще използва по-малко енергия.

Имам обаче няколко въпроса относно GCM.

  1. ТРЯБВА ли потребителят да има услуги на Google и регистриран идентификатор за игра?
  2. Ако потребител зареди странично apk, ще може ли да получава известия?

Бих искал да знам дали има алтернативи на GCM

Какво ще кажете за устройства, работещи с разклонени версии на Android, като nokia X, kindle и т.н.? Как се изпращат насочени известия до тези устройства?


person harveyslash    schedule 23.10.2014    source източник
comment
developer.android.com/google/gcm/gcm.html q1: да , It requires devices running Android 2.2 or higher that also have the Google Play Store application installed q2: да, However, you are not limited to deploying your Android applications through Google Play Store за nokia и kindle - тези устройства имат ли google play store?   -  person Selvin    schedule 23.10.2014
comment
чел съм това. Искам да попитам дали е възможно да получавам насочени известия без GCM, без да проверявам постоянно   -  person harveyslash    schedule 23.10.2014
comment
така че трябва да гласувам за близо, като Questions asking us to recommend or find a book, tool, software library, tutorial or other off-site resource are off-topic for Stack Overflow   -  person Selvin    schedule 23.10.2014


Отговори (1)


ТРЯБВА ли потребителят да има услуги на Google и регистриран идентификатор за игра?

Да, необходимо е да използвате услугите на Google Play във вашата разработка. Потребителите обаче не трябва да имат акаунт в Google или инсталирани услуги на Google Play.

Ако потребител зареди странично apk, ще може ли да получава известия?

да

Стъпките, които трябва да се следват, за да изпратите известие до устройство, са:

  1. Програмистът създава приложение в Google Developer Console
  2. Потребител инсталира приложение
  3. Приложението получава NotificationID и го изпраща към вашата база данни
  4. Вие съхранявате NotificationID на вашите сървъри с всяка друга свързана информация (вашето потребителско име, информация за устройството и т.н.)
  5. Всеки път, когато искате да изпратите известие, вие се свързвате с GCM, изпращайки един или повече NotificationID и съдържанието на известието.
  6. Потребителите, свързани с NotificationID, ще получат във вашето Приложение съдържанието на известието.
  7. Направете всяко действие, от което се нуждаете.

Разгледайте тук.

IMHO няма реална алтернатива на GCM в Android (въз основа на ефективност и простота). Може да потърсите услуги на трети страни, които ще ви помогнат при внедряването и ще добавят стойност (маркетинг, бизнес разузнаване). Като пример за това разгледайте UrbanShip.

Ако искате да приложите свое собствено решение, трябва да погледнете WebSockets. Това ще поддържа активна комуникация между вашия сървър и устройството. Тези сокети са предназначени за комуникация в реално време между вашия сървър и мобилното устройство.

Два въпроса:

  • Как приложението влияе на батерията зависи от вашата реализация и случая на използване на приложението (колко често изпращате информация, колко дълго е установена връзката).
  • Не съм запознат с никаква собствена реализация на това в Android, но има няколко библиотеки, идващи от проекти с отворен код. Потърси го в Гугъл.
person CarlesCF    schedule 23.10.2014
comment
Да предположим, че направя своя собствена услуга за уведомяване, как да говоря с моя сървър, без да повлияя много на живота на батерията? - person harveyslash; 23.10.2014
comment
По мое мнение всяко решение, което приложите, ще повлияе на батерията на потребителите или няма да бъде толкова незабавно, колкото GCM. Можете да разгледате WebSockets (en.wikipedia.org/wiki/WebSocket) като най-добрата алтернатива. - person CarlesCF; 23.10.2014