Лучший способ обнаружить изменения в ответе API

#android #api #observer-pattern

#Android #API #наблюдатель-шаблон

Вопрос:

Привет, в основном у меня есть школьный API, который предоставляет мне некоторую информацию о текущих курсах, домашних заданиях и т. Д., И поэтому они различаются в зависимости от текущего времени. Я хотел бы создать приложение для Android на основе этого API, которое отправляло бы мне уведомление, когда происходит другой курс, или когда я получаю новое домашнее задание или что-то еще.

Итак, каков наилучший способ добиться этого? Я думал о создании цикла, который будет отправлять запрос в API каждые x секунд / минут, и если он извлекает информацию, отличную от текущей информации, которая у меня уже есть, он отправляет уведомление или что-то еще. Но я не уверен, что это лучший способ сделать это.

Я также слышал о шаблоне наблюдателя, но я не уверен, применим ли он там, поскольку у меня нет контроля над изменением состояния на уровне API.

Спасибо за ваши ответы, надеюсь, мне ясно, чего я пытаюсь достичь, не стесняйтесь спрашивать, хотите ли вы получить дополнительную информацию.

Комментарии:

1. лучше всего использовать firebase или сокеты для передачи изменений из базы данных в ваше приложение.

Ответ №1:

Вам будет сложно с этим, если вы хотите реализовать запрос в приложении. Я бы посоветовал вам создать серверное приложение, которое постоянно запрашивает API и отправляет push-уведомления (например, через Firebase Cloud Messaging) всем пользователям, которые подписаны на ваше серверное приложение.

Комментарии:

1. Спасибо за ваш ответ. Итак, как я могу обнаружить любое изменение состояния в ответе API после его запроса? Или я должен отправить push-уведомление, даже если нет изменений состояния?

2. Это зависит от структуры данных, которую вы получаете от API. Вам нужно будет сохранить текущее состояние api, запускать интервал обновления, например, каждые 5 минут, а затем разработать алгоритм для сравнения последнего набора данных из API с состоянием вашей базы данных. Более простой метод будет работать, если API отправляет вам временную метку с последним обновлением.

3. Я думаю, я мог бы перенести ответ API в модели, а затем сравнить эти модели. Большое спасибо!