Фоновая выборка в определенное время

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

У меня есть сценарий, который я могу объяснить. Я использую базу данных realm, в которой хранятся дата события, имя, время, адрес и т.д. Теперь дело в том, что я хочу написать код, который выполняется в фоновом режиме. В этом коде я хочу получить все данные о событиях и сравнить их дату с сегодняшней датой. И, основываясь на днях, оставшихся между этими днями, локальное уведомление о пожаре должно напоминать пользователю о том, сколько дней осталось для определенного события.

Я хочу называть этот метод фоновой выборки ровно 8 утра по местному времени каждый день.

Я не пишу никакого кода из-за путаницы с изложением и реализацией Background. Кто-нибудь знает, как это реализовать?

Помощь будет оценена.

Ответ 1

У меня есть решение, чтобы решить проблему. Как я уже говорил,

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

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

Ответ 2

В документации Apple говорится, что нет гарантии при выполнении фоновой выборки. Это до системы, чтобы решить.

Система ожидает, пока сеть и условия питания будут хорошими, поэтому вы сможете быстро получить адекватные объемы данных.

Гарантированный способ разбудить ваше приложение - отправить в 8 часов утра VoIP push-уведомление с сервера. Гарантируется, что приложение будет активировано после получения толчка, и вы сможете выполнять нужные вам задания. Для получения более подробной информации, https://medium.com/ios-expert-series-or-interview-series/voip-push-notifications-using-ios-pushkit-5bc4a8f4d587

Ответ 3

В iOS невозможно вывести приложение из приостановленного режима, кроме как с помощью push-уведомлений (для этого сервер должен отправлять push-уведомления).

Ответ 4

Это то, что нигде не задокументировано. ИМХО и опыт работы с iOS, Apple должна записывать действия пользователей с самого начала эры iOS. ScreenTime является продуктом тех записей, которые Apple могла создавать и визуализировать данные для представления приложения, ориентированного на пользователя, которое очень красиво ограничивает, управляет и отображает ваши действия. В WWDC 2018 даже указывалось, что Apple даже обнаружит, что если пользователь откроет ваше приложение, скажем, в 9 вечера ежедневно перед сном, iOS предоставит этому приложению все возможные ресурсы (аккумулятор, интернет, время обработки и т.д.) 9 вечера. Но вы должны понимать ваши действия пользователя, прежде чем сделать это. Давайте возьмем пример:

Приложение новостей: большинство пользователей проверяют новости по утрам (если они не являются зависимыми от Instagram). В это время даже яблоко должно быть смещено, чтобы открыть ваше приложение с фоновой выборкой. Если, конечно, не слишком много ресурсов

Игра: Многие игры позволяют ограничить время, называя его "перезарядкой" или "перезарядкой" энергии персонажа, прежде чем пользователь сможет сыграть в другом раунде. Это делается для того, чтобы зависимый человек покупал драгоценные камни, чтобы снять это ограничение и, следовательно, монетизировать идею. Но если вы знаете, что процесс пополнения завершен до 8:00 утра или пользователь играет в вашу игру ежедневно в 8:00, настройте фоновую загрузку соответствующим образом.

Фоновая выборка работает с интервалом, а не с конкретным временем.

// Fetch data once an hour.
   UIApplication.shared.setMinimumBackgroundFetchInterval(3600)

Наконец, почему бы вам не попробовать тихие push-уведомления? Исходя из вашего вопроса, я думаю, что тихого уведомления достаточно, чтобы разбудить ваше приложение после push-уведомления с сервера, загрузить некоторые данные, выполнить вычисления и предоставить локальное уведомление.