Вопрос по Уведомлениям (Notifications)


#1

Меня интересует вопрос отправки уведомлений на конкретный девайс при определенном условии. Например, в базе данных Firestore есть какая-то дата, предположим это to-do-list с датами выполнения заданий. Доступ к to-do-list имеют несколько пользователей, изменять добавлять и прочее. Задача - отправка уведомлений на конкретный девайс когда дата исполнения задания наступила. Возможно, также отправлять уведомления когда произошли какие-то изменения по какому-либо из заданий. Как это реализовать? Где есть информация именно по такому варианту? Я так понимаю, что при выгруженном аппе ни о каких уведомлениях речи не может идти, а получать уведомления только при входе в апп - не подходит. Может нужно на сайте (есть сайт подключенный к базе) нужно прописывать алгоритм проверки дат и при соблюдении условий - делать отправку уведомлений?


#2

Средствами firebase мне кажется такое не получится реализовать (я могу ошибаться, не сильно изучал весь функционал).
Это легко делается на своем сервере, который имеет доступ к базе firebase. Хотя в случае со своис сервером, я бы предпочел свою базу.
Когда юзер открывает ваше приложение, вы регистрируете его APNS, который отправляете себе на сервер для конкретного юзера, при логине. Дальше уже оперируете логикой на своем сервере, в какой момент или при каком условии посылать пуш. У гугла есть API, которое требует APNS token и сообщение, для отсылки пуша на конкретный девайс.


#3

Это можно сделать именно через firebase, и относительно несложно - я так думаю. :wink:
Сейчас как раз изучаю конкретно firestore и делаю на нем сетевую приложеньку (поэтому и нет времени написать статью “от новичка диллетанта для новичков” ))) )…

  1. Отправлять уведомление по времени проще всего:
  • при загрузке необходимых задач, отправляйте локальное уведомление по времени и всё - оно сработает когда надо, не зависимо от того, работает приложение или нет.
  1. Уведомления по изменениям тоже несложно:
  • во-первых используйте модуль аутентификаци пользователей Firebase/Auth, который устанавливается автоматом при инсталлировании Firebase/Core;
  • любой авторизованный пользователь будет иметь ID;
  • этот ID можете использовать для идентификации того, кто создал задачу или последний изменил её, путём записи этого ID в одно из свойств, например, и потом его просто читая;
  • добавляйте “слушателя” изменений базы, все измения базы автоматом отобразятся на всех девайсах, которые слушают эту ветку (коллекцию или документы). Для постоянно динамически обновляющихся данных лучше использовать addSnapshotListener вместо getDocuments. И наоборот слушателем не стоит злоупотре■■■■■, там, где это не надо - быстро израсходуете лимиты на бесплатном тарифе;
  • в клоужер “слушателя” можно добавить логику отправки уведомлений или отображения бейджей и он будет срабатывать при любом изменении объекта слушания;
  • это всё простое решение (про обновление в реалтайм), до которых я пока добрался сам. Они будут работать точно, если приложенька в памяти.

Для отправки пуш-сообщений есть Firebase Cloud Messaging, но я пока до него не добрался ))), но видно, что классный инструмент.

З.Ы. И вообще, гугловский firebase в частности
27
со множеством классных инструментов, вроде: базы данных, аутетификации, хранения файлов, аналитики, машинного обучения! (можно распозновать лица, текст и прочее в приложеньках и вообще создать свою собственную логику - круть неимоверная для новичка, при отличной полноте документации и простой реализации - где бы взять время для всего этого изучения самостоятельно :slight_smile: ).
Ну и в целом гулговская платформа для разработчиков с огромным количеством сервисов, firebase - один из которых, очень сильно помогает нам - начинающим :smile: Может многие возрозят, но, например, firebase’вские аутентификация под ключ и база данных просто спасение, нежели поднятие собственных серваков и их администрирование.

З.З.Ы. прошу Ивана сделать хотя бы перевод вменяемый документации firebese даже без видосов (Пусть за плату. Даже нужно за плату, чтобы был стимул :wink: ) - будет просто бомба в рунете! Так то вроде разбираешь потихоньку, но в общем. С детальным же перводом временный затраты уменьшаться в разы )))

З.З.З.Ы: в своё время именно переведённая документаци по swift привела меня сюда. Надеюсь, что и документация по Firebase тоже появится когда-нибудь - это многим поможет!

Даже могу предожить идею файндрайзинга для Ивана на конкретный продукт, для тех, кому интресно - думаю насобираем на классный перевод )))


#4

Благодарю за развернутые ответы. ODiN, отдельное спасибо. Пункт 1, я тестировал, но не помню точно ли при выгруженном аппе будут приходить локальные уведомления. Если да - то согласен, это решение. По пункту 2, здесь как раз все проще, я пишу логи по действиям и нет никакой проблемы определить круг пользователей-получателей уведомлений при записи лога, ну собственно и отправить эти уведомления при записи лога. Только я использую deviceID и отдельную базу пользователей. Вроде как именно FCM отвечает за возможность кастомизации пуш-уведомлений в части настройки отправки. И вроде как нужен Node.js
Буду изучать. Еще раз спасибо.


#5

Пункт 1 - локальные уведомления ставятся в очередь в системе и ни как не зависят от работы приложения! Всё будет работать!

Пункт 2 - если можно, скиньте ссылку на доки по deviceID - очень интересно поизучать - не работал пока с этим.

З.Ы. пользователе firebase здесь не так много и любой опыт на вес золота )))

З.З.Ы. Я тут создавал веточку по Firebase ВОТ и была мысля всё туда писать для концентрации знаний ))


#6

Документации как таковой нет, насобирал куски из разных курсов. Поищу. Сброшу.
Поддерживаю. Можно свои сниппеты выкладывать с небольшим описанием, как вариант.


#7

И, да, как вы пишите логи: вручную или есть инструмент? Зачем именно логи для этого использовать?


#8

представьте себе пакет связанных между собой приложений. каждое по своему объему работ. и приложение, назовем “супер босс” - основной функционал - наблюдение, кто, что, когда делает. для него пишутся логи, в отдельную ветку и отображаются на экране его приложения. Может не выглядит изящным решение, но мне как любителю подходит) ну и надо сказать, что это я так называю Логи, так как если какая-либо информация в общей базе меняется кем-либо - значит нужно отследить и записать когда, что именно и кто. Я работаю в основном с Firestore. Если с Firebase можно сделать backup, то с Firestore нужно дергать библиотеку, кто-то написал недавно, еще не ковырялся. Это я к тому, что считаю хорошо бы иметь данные о том какой криворукий работник сломал базу))) И по этому так же пригодятся мои отдельные ветки в базе по действиям сотрудников.


#9

Я как раз делаю похожую прогу для бизнеса друзей ))))

Я, конечно, не изучал впорос, так что спрошу прямо здесь: а как вы делаете два разных приложения в одной структуре (ios) для одного проекта в firestore? Вы же используете один идентификатор приложения для доступа к проекту! Как сделать приложение админа (у которого должен быть другой идентификатор) для той же базы одного проекта? - очень полезная инфа ))


#10

Почему один идентификатор?) Разные. База одна, к ней прикрепляете приложения. Приложение админа также подключается к базе. Я сделал приложение по добавлению сотрудников. Где создается компания, добавляются сотрудники с правами доступа к информации в базе. И я могу как открыть доступ к базе так и закрыть. Вот как раз это приложение на Firebase. А пользователи остальных аппов заходя в них автоматом проверяются на доступ.


#11

ОУ! Только после вашего поста заметил, что можно добавить в настройках проекта хоть сколько приложений к одному проекту - огонь тогда ))) Всё легко решается :rofl: Firebase ещё больше огонь ))