На очень высоком уровне возможны два пути:
1.) Локальные уведомления (для этого вам не нужен AWS):
Вы можете запланировать локальное уведомление каждый раз, когда пользователь открывает приложение (или лучше - каждый раз, когда пользователь выводит приложение на передний план). Это работает так: пользователь открывает приложение -> отменить старое запланированное уведомление, если оно существует -> запланировать новое уведомление на «через 3 или 4 дня» -> готово :-)
Вы можете использовать что-то вроде этого: https://github.com/zo0r/react-native-push-notification (см. Раздел «Запланированные уведомления»).
2.) Вы можете сделать это с помощью удаленных уведомлений (https://aws.amazon.com/sns/):
Вы можете пойти так, как вы предложили. Затем вы должны сохранить запись в вашей базе данных с токеном push-уведомлений устройства и в последний раз, когда приложение было открыто. Затем ваш работник должен проверить и отправить push-сообщение на устройство с помощью службы, такой как SNS.
Я бы порекомендовал 1.) более 2.), потому что вы независимы от интернет-соединения пользователей при получении информации об открытии приложения. В 2.) вы можете пропустить информацию об открытии, когда пользователь открывает приложение без подключения к интернету. Также 2.) дороже, чем 1.), когда вы масштабируете свое приложение.
Преимущество 2.) состоит в том, что вы более гибки, когда и что отправляете в своем уведомлении, поскольку вы можете редактировать его на стороне сервера. 1.) будет означать, что он закодирован в вашем приложении (по крайней мере, пока вы не создадите механизм синхронизации для переменных): -)