Нужен курс по написанию своего сервера


#1

Предлагаю сделать такой курс. Столкнулся с проблемой - отправка push-уведомлений после проверки условий по базе Firestore (если соответствует условиям - отправить уведомление в определенное время суток). Есть в сети информация как сделать nodeJS (express) сервер но нет полноценного курса включающего в себя развертывание проекта в сети (heroku и не только). Уверен что будет полезно уметь работать с сервером.


#2

Это вам на другой форум нужно.
Либо если кто-то лично вам это покажет.

P.S. если только не хотите серверную часть на Swift.


#3

В firebase есть встроенный сервис пуш-уведомлений cloud messaging, а так же In-App Messaging - изучайте документацию.


#4

Опять же, непонятно зачем обязательно пуш, ведь вы обрабатываете условие на девайсе - отправляйте обычный local notification, в чём проблема то?


#5

обработка условий на девайсе не отвечает поставленной задаче.
Представьте, у вас есть несколько десятков документов в базе. В каждом документе имеется, в числе прочих, параметр типа “дата”. Задача каждый день в 8:00 (как пример) перебирать все документы, и если дата указанная в документе наступит завтра то выслать уведомление на конкретный девайс.
Что касается localNotifications - здесь проблема в том, что вам нужно пользоваться приложением чтобы получает эти уведомления. Да, вы можете запускать backgroundFetch и использовать “расписание” для local notifications. Но есть проблема, backgroundFetch работает не по расписанию и не может запускаться автоматически в одно и то же время самостоятельно.
Я купил книгу по уведомлениям: https://store.raywenderlich.com/products/push-notifications-by-tutorials
Но и там нет решения для моей задачи. Автор упомянул, что можно использовать его код для работы с сервером, но я связался с ним и объяснил свою задачу. Получил ответ - пиши сервак и запускай через cron.
В целом, я пришел к мысли, что так или иначе это хороший опыт - знать и уметь писать сервер для своих проектов. Очень часто придется работать и с web приложениями.
Буду благодарен, если человек с опытом найдет время поделиться знаниями по этой теме.


#6

Если хотите использовать тот же Swift, то посмотрите в сторону

  • Vapor
  • Kitura
  • Perfect

+Решения очень быстрые (быстрее PHP заведомо и в целом быстрее Node)
-Для разработки пет-проектов и собственных небольших приложений - больше головной боли, ибо все реализовывать почти самостоятельно


#7

я конечно мало документации firebase изучил, но можно тогда спросить: как это вы собрались саму БД заставить вычисления делать (конкретно firestore)? Там только храняться данные. Вы можете делать фильтрованный запрос по определенному параметру/параметрам (дата, например), но полученные данные вы всё равно будете на девайсе обрабатывать (сравнивать). Опять же, если надо отсылать уведомления на определённые девайсы, то и видимо есть определённый признак, по которому документы относятся к определённому пользователю - не проще ли тогда просто делать запрос с фильтром по “владельцу” файла и сравнивать наступление даты???..

Для вычеслений у Firebase также есть отдельный сервис - Cloud Functions, “но это совсем другая история” )))

Для запуска локальных уведомлений в определённое время, вам не нужно backgroundFetch! Уже тут сто раз обсуждалось и есть в любой статье про уведомления (тем более здесь на сайте в курсах): уведомления ставятся в очередь в центре уведомлений и срабатывают в нужное время по системе и не зависят работы приложения!

З.Ы. Странно использовать ФБ только для хранения, а другие функции, которые есть у ФБ, городить самому - зачем тогда вообще использовать ФБ? )))


#8

Да, видимо придется в эту сторону двигаться. Хотя я не исключаю nodeJS. Firebase можно развернуть на сервере nodeJS. Прикупил курсы на udemy буду ковыряться.

Я не говорил что собираюсь заставлять БД делать вычисления. Цепочка: запрос в БД => Проверка результата на условие => Отправка уведомления.

вот эти данные я хочу сравнивать на сервере а не на устройстве.

Не обязательно, все же в итоге зависит от поставленной задачи. Допустим, у вас есть 4-5 приложений которые взаимосвязаны между собой (мы с вами уже обсуждали такую тему в личке ранее). Одна база данных, разный функционал но все работают на одну БД. Можно создавать разные условия для отправки уведомлений по каждому пользователю. Это b2b приложения, не для appStore, не массовые.

Я могу ошибаться, но предлагаю вам челлендж - попробуйте создать приложение которое будет связано с БД FB. В самой БД создайте несколько документов, добавьте какой-нибудь параметр чтобы можно было использовать для проверки на условие. Сделайте запрос и выведите уведомления ежедневно в 8:00. Далее, попробуйте получить уведомления каждый день в назначенное время - здесь уведомления должны отличаться от предыдущих, так как это же не будильник, это информация из БД которая соответствует “условию”. Условие может быть ну абсолютно любое. Например, в БД завели 10 документов. В свойствах есть параметры: name: DocOne, dayOfWeek: Monday. Меняем name на значения до десяти DocTwo, DocThree и т.д. И также меняем день недели для каждого документа с понедельника до воскресенья. Просто как пример. Вы должны получить уведомления по условию - если сегодня день недели совпадает с названием дня недели в свойствах документа - отправить уведомление в title вывести название документа в body любой текст. И последнее, если вы с этим справились, попробуйте получить уведомления по такой схеме: допустим, вы получили уведомления и они отражаются правильно согласно данным в БД, получив уведомления не запускайте приложение, пусть уведомления висят, получите ли вы обновленные уведомления на следующий день? Вот такой челлендж. Это не сложно, простое приложение.

согласен, FB очень хороший инструмент обладающий широким функционалом. Однако, я пока не нашел решение своего вопроса. Конечно, это не означает что его нет. Возможно я не там смотрел или искал не там. Как бы там ни было, для меня, было бы хорошо уметь решать задачи как с использованием функционала FB, так и используя другие доступные инструменты.

Извините что там много букв)


#9

Вы лучше себе челендж поставьте ))) У меня есть приложение, которое отправляет уведомлене на нужное время при изменении данных. Изучите локал нотификэйшн… Можно заранее орабатывать данные с заданной периодичностью и отсылать уведомления с теми же идентификаторами с обновлённой инфой на нужное время и всё - они заменят старые, если те не успели сработать - всё просто (их можно и на год вперёд отправить - ничего страшного. Просто при изменении данных мы их заменим, если нет - так оно сработает в нужное время)

В firestore есть метод слушателя, который автоматом присылает данные из БД при любом изменение БД…

Вам прежде надо определиться с логикой работы с данными. Я уже пару раз переделывал структуру данных в текущем проекте просто потому, что при работе с firestore понимал, что она неоптимальна.