Я работаю над приложением, напоминающим напоминания, которому нужно будет отправлять уведомления в определенное время. По сути, пользователи будут создавать какие-то напоминания, и мне нужно будет отправлять уведомления в указанное время. Я использую Firebase Cloud Messaging для отправки уведомлений.
Что я имею в виду прямо сейчас, так это хранить все запросы в моей базе данных и иметь службы «краулеров», которые будут запускаться каждый день для проверки всех запросов и отправки уведомлений, если это необходимо.
Это прекрасно работает с небольшим количеством пользователей, но если мне повезет, и мое приложение привлечет массу пользователей, этим сервисам придется обрабатывать миллионы запросов каждый день, и я предпочитаю не выполнять эту дорогостоящую операцию.
Я открыт для всех решений, но предпочитаю что-то из Google Cloud.
Вы можете использовать функцию Firebase с облачным планировщиком в качестве триггера.
Допустим, вы настроили этот планировщик на запуск каждую минуту. Это по-прежнему 1 * 60 * 24 * 30 = 43200 запусков функции каждые 30 дней. Это все еще очень мало по сравнению с ценами на Firebase/G Cloud Functions.
Я делаю что-то подобное.
Я использую Firebase Firestore (так же, как Cloud Firestore).
Для каждого пользователя у меня есть поле time_to_send. Когда функция запускается, она запрашивает пользователей, у которых значение « time_to_send » меньше (в прошлом) или равно << Сейчас >>.
Для этих пользователей (обычно их немного, потому что они запускаются каждую минуту) функция отправляет уведомление и обновляет « time_to_send » до значения в будущем (в следующий раз, когда они должны быть уведомлены).
Это означает, что с точки зрения затрат вы должны рассчитать:
Вам придется рассчитать, доступен ли вам этот подход или нет.
Если вы используете Google Cloud, лучше всего использовать Cloud Task . Вы можете создать задачу с датой срабатывания в будущем, первая функция, упомянутая здесь
Просто создайте задачу, указав дату и время, а также требуемые параметры. В день «Д» эта задача вызовет конечную точку HTTP с параметрами. Итак, просто создайте функцию, готовую к вызову и выполнению задания. Пусть Cloud Task будет управлять триггером в будущем.