Я хочу добиться следующего:
Я получаю уведомление через FCM с указанным id
в свойствах данных.Я получаю id
, когда мое приложение находится на переднем плане и на заднем плане / закрыто ... пока все хорошо.
Теперь я хочу сделать следующее:
- Сделать залппопросите, например,
/books/id
, чтобы получить соответствующую информацию о книге. - Постоянно сохраняйте эту информацию в
Room database
- Отображайте их в
RecyclerView
Сценарий 1: Приложение с RecyclerView находится на переднем плане:
Как только я получу новый id
через данные уведомления FCM, я хочуRecyclerView
, чтобы добавить другой элемент списка с недавно извлеченными сведениями о книге.
Сценарий 2: Приложение в фоновом режиме - уведомление нажимается:
Когда щелкают по уведомлению, загружается MainActivity
с RecyclerView
, показывая информацию о недавно полученных книгах.
Сценарий 3: Приложение находится в фоновом режиме - уведомление удаляется:
Через некоторое время уведомление было проведенолюбой пользователь повторно открывает или перезапускает приложение.MainActivity
с RecyclerView
и информацией о недавно полученных книгах.
Моя проблема:
Я не совсем знаю, как структурировать свой код для достижения этой цели,Я попытался сделать запрос залпа внутри FCM onMessageReceived()
, но это привело к ошибке, и я не знаю, где и как я мог бы сделать это иначе.Я проверил запрос залпа в другом проекте, и он работал там.В настоящее время я пытаюсь научиться работать с базой данных Room.
Я был бы очень признателен, если бы кто-нибудь дал мне представление о том, как этого добиться.Мне действительно нужно, чтобы это сработало в ближайшее время.
Заранее спасибо!:)
РЕДАКТИРОВАТЬ 1: Я больше не получаю ошибку внутри onMessageReceived
.Я получаю правильный ответ с данной книгой id
.
Теперь я хочу сохранить эту информацию в Room database
и отразить изменение в моем RecyclerView
.Я думаю, что собираюсь использовать андроиды architecture components
как здесь:
пример компонентов архитектуры андроида
Я думаю, это именно то, что мне нужно.Тем не менее, я все еще не совсем понимаю, как с этим справляться и соответствующим образом структурировать свой код.