Как правильно обеспечивать уведомления в Android приложениях?
Доброго всем времени суток!
Хотелось бы понимать принципы работы уведомлений в современных приложениях.
Документация гугл советует мне использовать Firebase. На сколько я смог понять - это некий облачный сервис, который берёт на себя обязанность связываться с каждым конкретным клиентом для отображения у него уведомлений.
Инициируют эти уведомления, как я понимаю, некие демоны на бэкенде.
Хорошо, звучит логично, но тут возникает вопрос: как это устроено с архитектурной точки зрения на стороне приложения?
У меня приложение само по себе - тонкий клиент, получающий данные с сервера по средствам рест апи.
То есть перманентного коннекта с бэкендом нет. Если бы он был, вопрос отпал бы сам собой.
Соответственно, первая мысль: сделать фоновый сервис, который раз в минуту спрашивает у сервера, нет ли чего нового, и, если есть, то уведомляет об этом пользователя.
Это, вроде как, не самая хорошая с точки зрения экономии энергии и пользовательского трафика (хотя там объём данных и мизерный)
И вот тут я задумался над firebase. Вряд ли эта технология имеет постоянное соединение с облаком... или имеет?
Чем её использование удобнее и логичнее в сравнении с самописным велосипедом?
Очень хотелось бы почитать мнение опытных разработчиков.
Когда серверу надо послать пуш, он это делает - пуляет в апишку файрбейза сообщение. Доставку пуша до приложения берёт на себя файрбейз. Достаточно реализовать Broadcast Receiver. Подробнее в документации.
Да, спасибо за ответ. Но мне как раз непонятен механизм доставки.
Знаю, что в файрбейс есть токены на каждого конкретного пользователя (клиента), которому он по этому токену и будет слать уведомления. Знаю, что при добавлении файрбейса, если я правильно понял документацию, в приложении регистрируется файлбейсовский сервис.
И вот тут возникает вопрос: "А зачем мне тогда вообще весь этот огород со сторонней технологией, которая будет, по факту, просто лишним звеном в моей цепочке, если я могу также создать сервис сам, зарегистрировать ресивер, запускать сервис вместе с системой и периодически опрашивать сервер, нет ли там чего нового для меня?
Ведь должно же у файрбейса быть какое-то преимущество. Я его пока понять не могу.
Николай Алексеев, насколько я знаю, там у них открыт TCP сокет до сервера гугл. Живёт он где-то в Google play services. Ждут сообщения, и потом оповещают приложение. Весь смысл в том, что этим пользуются многие, а сокет один, меньше потребление ресурсов.
BTW, на современных андроидах такой бэкграунд сервис не выживет, его грохнут.