Меня интересует вопрос отправки уведомлений на конкретный девайс при определенном условии. Например, в базе данных Firestore есть какая-то дата, предположим это to-do-list с датами выполнения заданий. Доступ к to-do-list имеют несколько пользователей, изменять добавлять и прочее. Задача - отправка уведомлений на конкретный девайс когда дата исполнения задания наступила. Возможно, также отправлять уведомления когда произошли какие-то изменения по какому-либо из заданий. Как это реализовать? Где есть информация именно по такому варианту? Я так понимаю, что при выгруженном аппе ни о каких уведомлениях речи не может идти, а получать уведомления только при входе в апп - не подходит. Может нужно на сайте (есть сайт подключенный к базе) нужно прописывать алгоритм проверки дат и при соблюдении условий - делать отправку уведомлений?
Вопрос по Уведомлениям (Notifications)
Средствами firebase мне кажется такое не получится реализовать (я могу ошибаться, не сильно изучал весь функционал).
Это легко делается на своем сервере, который имеет доступ к базе firebase. Хотя в случае со своис сервером, я бы предпочел свою базу.
Когда юзер открывает ваше приложение, вы регистрируете его APNS, который отправляете себе на сервер для конкретного юзера, при логине. Дальше уже оперируете логикой на своем сервере, в какой момент или при каком условии посылать пуш. У гугла есть API, которое требует APNS token и сообщение, для отсылки пуша на конкретный девайс.
Это можно сделать именно через firebase, и относительно несложно - я так думаю.
Сейчас как раз изучаю конкретно firestore и делаю на нем сетевую приложеньку (поэтому и нет времени написать статью “от новичка диллетанта для новичков” ))) )…
- Отправлять уведомление по времени проще всего:
- при загрузке необходимых задач, отправляйте локальное уведомление по времени и всё - оно сработает когда надо, не зависимо от того, работает приложение или нет.
- Уведомления по изменениям тоже несложно:
- во-первых используйте модуль аутентификаци пользователей Firebase/Auth, который устанавливается автоматом при инсталлировании Firebase/Core;
- любой авторизованный пользователь будет иметь ID;
- этот ID можете использовать для идентификации того, кто создал задачу или последний изменил её, путём записи этого ID в одно из свойств, например, и потом его просто читая;
-
добавляйте “слушателя” изменений базы, все измения базы автоматом отобразятся на всех девайсах, которые слушают эту ветку (коллекцию или документы). Для постоянно динамически обновляющихся данных лучше использовать
addSnapshotListener
вместоgetDocuments
. И наоборот слушателем не стоит злоупотре■■■■■, там, где это не надо - быстро израсходуете лимиты на бесплатном тарифе; - в клоужер “слушателя” можно добавить логику отправки уведомлений или отображения бейджей и он будет срабатывать при любом изменении объекта слушания;
- это всё простое решение (про обновление в реалтайм), до которых я пока добрался сам. Они будут работать точно, если приложенька в памяти.
Для отправки пуш-сообщений есть Firebase Cloud Messaging, но я пока до него не добрался ))), но видно, что классный инструмент.
З.Ы. И вообще, гугловский firebase в частности
со множеством классных инструментов, вроде: базы данных, аутетификации, хранения файлов, аналитики, машинного обучения! (можно распозновать лица, текст и прочее в приложеньках и вообще создать свою собственную логику - круть неимоверная для новичка, при отличной полноте документации и простой реализации - где бы взять время для всего этого изучения самостоятельно ).
Ну и в целом гулговская платформа для разработчиков с огромным количеством сервисов, firebase - один из которых, очень сильно помогает нам - начинающим Может многие возрозят, но, например, firebase’вские аутентификация под ключ и база данных просто спасение, нежели поднятие собственных серваков и их администрирование.
З.З.Ы. прошу Ивана сделать хотя бы перевод вменяемый документации firebese даже без видосов (Пусть за плату. Даже нужно за плату, чтобы был стимул ) - будет просто бомба в рунете! Так то вроде разбираешь потихоньку, но в общем. С детальным же перводом временный затраты уменьшаться в разы )))
З.З.З.Ы: в своё время именно переведённая документаци по swift привела меня сюда. Надеюсь, что и документация по Firebase тоже появится когда-нибудь - это многим поможет!
Даже могу предожить идею файндрайзинга для Ивана на конкретный продукт, для тех, кому интресно - думаю насобираем на классный перевод )))
Благодарю за развернутые ответы. ODiN, отдельное спасибо. Пункт 1, я тестировал, но не помню точно ли при выгруженном аппе будут приходить локальные уведомления. Если да - то согласен, это решение. По пункту 2, здесь как раз все проще, я пишу логи по действиям и нет никакой проблемы определить круг пользователей-получателей уведомлений при записи лога, ну собственно и отправить эти уведомления при записи лога. Только я использую deviceID и отдельную базу пользователей. Вроде как именно FCM отвечает за возможность кастомизации пуш-уведомлений в части настройки отправки. И вроде как нужен Node.js
Буду изучать. Еще раз спасибо.
Пункт 1 - локальные уведомления ставятся в очередь в системе и ни как не зависят от работы приложения! Всё будет работать!
Пункт 2 - если можно, скиньте ссылку на доки по deviceID - очень интересно поизучать - не работал пока с этим.
З.Ы. пользователе firebase здесь не так много и любой опыт на вес золота )))
З.З.Ы. Я тут создавал веточку по Firebase ВОТ и была мысля всё туда писать для концентрации знаний ))
Документации как таковой нет, насобирал куски из разных курсов. Поищу. Сброшу.
Поддерживаю. Можно свои сниппеты выкладывать с небольшим описанием, как вариант.
И, да, как вы пишите логи: вручную или есть инструмент? Зачем именно логи для этого использовать?
представьте себе пакет связанных между собой приложений. каждое по своему объему работ. и приложение, назовем “супер босс” - основной функционал - наблюдение, кто, что, когда делает. для него пишутся логи, в отдельную ветку и отображаются на экране его приложения. Может не выглядит изящным решение, но мне как любителю подходит) ну и надо сказать, что это я так называю Логи, так как если какая-либо информация в общей базе меняется кем-либо - значит нужно отследить и записать когда, что именно и кто. Я работаю в основном с Firestore. Если с Firebase можно сделать backup, то с Firestore нужно дергать библиотеку, кто-то написал недавно, еще не ковырялся. Это я к тому, что считаю хорошо бы иметь данные о том какой криворукий работник сломал базу))) И по этому так же пригодятся мои отдельные ветки в базе по действиям сотрудников.
Я как раз делаю похожую прогу для бизнеса друзей ))))
Я, конечно, не изучал впорос, так что спрошу прямо здесь: а как вы делаете два разных приложения в одной структуре (ios) для одного проекта в firestore? Вы же используете один идентификатор приложения для доступа к проекту! Как сделать приложение админа (у которого должен быть другой идентификатор) для той же базы одного проекта? - очень полезная инфа ))
Почему один идентификатор?) Разные. База одна, к ней прикрепляете приложения. Приложение админа также подключается к базе. Я сделал приложение по добавлению сотрудников. Где создается компания, добавляются сотрудники с правами доступа к информации в базе. И я могу как открыть доступ к базе так и закрыть. Вот как раз это приложение на Firebase. А пользователи остальных аппов заходя в них автоматом проверяются на доступ.
ОУ! Только после вашего поста заметил, что можно добавить в настройках проекта хоть сколько приложений к одному проекту - огонь тогда ))) Всё легко решается Firebase ещё больше огонь ))