#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 в модели, а затем сравнить эти модели. Большое спасибо!