Как работает взаимодействие с бэкэндом в приложении, таком как iOS Приложение «Активность», где пользователю показываются данные за несколько дней? - PullRequest
0 голосов
/ 07 января 2020

У меня есть приложение, которое некоторое время собирает пользовательские данные через внешнее устройство, а затем сохраняет их в серверной части. После входа в приложение приложение извлекает эти данные из серверной части и показывает их пользователю.

Пользователь может перемещаться между днями, неделями или месяцами. По функциональности он похож на приложение «Активность» или приложение «Календарь».

Внутренняя единица данных для дня. Например, данные за месяц будут содержать 30 JSON объектов на каждый день.

Как правильно получить данные в приложении из серверной части .?

Я думал о 2 подхода.

  1. Когда пользователь проводит пальцем, извлеките данные из серверной части. Я также думал о некотором пороговом значении, например, если пользователь прокрутит / проведет больше определенного дня, будет получен следующий блок дней.

  2. Сохраните данные локально. Идея заключается в том, что приложение будет извлекать и хранить данные в Core Data, а затем приложение извлекает данные из локального хранилища и показывает их пользователю. Я не уверен в этом, поскольку это будет занимать много места на телефоне.

Я думаю, что это имеет какое-то отношение к бесконечным приложениям прокрутки, но в этом случае доступные данные из предыдущих дней.

Я не знаю, каковы правильные технические термины, чтобы описать это, я наткнулся на некоторые посты, где упоминалось слово «нумерация страниц».

То, что я хотел бы знать, это как подходить к развитию этого. 1. Как часто вызовы API должны происходить с бэкэндом? 2. Нужно ли хранить эти данные в Core Data? 3. Когда должны происходить вызовы API для получения данных, чтобы приложение чувствовало себя отзывчивым?

1 Ответ

1 голос
/ 07 января 2020

Как и нужно ли кэшировать ваши данные и как и когда обновлять этот кеш, на самом деле сложный вопрос, и он зависит от многих вещей, например, от того, насколько быстро ваши данные изменяются и насколько дорого их получить. Существует множество технологий, которые решают эту проблему для вас, предоставляя вам возможную согласованность и обновления с сервера (ie firebase или просмотр GraphQL). Если вы хотите реализовать это вручную, это звучит так, как будто в вашем случае данные загружаются один раз и никогда не меняются. В таком случае довольно просто сказать, что вам, вероятно, следует кэшировать его локально и извлекать его только в случае его отсутствия (ie вы входите в новое устройство). это довольно легко сделать:

  1. Когда вы отображаете данные, проверьте, не больше ли у вас n элементов или меньше последнего элемента в списке, а также есть ли на сервере больше данных и не загружаете ли вы в данный момент. Если это так, выберите больше элементов и установите для isLoading значение true.
  2. Если вы получили больше элементов, обновите кэш и отобразите, установите для isLoading значение false. Если вы не получили больше элементов из-за того, что сервер сказал, что их нет, значит, для set больше данных установлено значение false и для isLoading установлено значение false.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...