0

Я создаю приложение, которое должно ежедневно отправлять местные уведомления для восхода и захода солнца.Как бороться с приложением, которое запускает повторяющиеся локальные уведомления, но с изменением графика?

  • Восход и заход солнца меняется каждый день.
  • Я хочу, чтобы регистрация локальных уведомлений происходила, даже если пользователь не открыл приложение (т. Е. Фоновая задача). Таким образом, пользователь устанавливает приложение, устанавливает его местоположение (поскольку расчеты на восход и подсчеты основаны на местоположении), а затем он знает, что он получит уведомления для восхода и установки каждый день без необходимости открытия приложения или подключения к Интернету.
  • В идеале мне нужна фоновая задача для регистрации локальных уведомлений за определенный период, который выполняется не реже одного раза в каждый период. «например, регистрирует локальные уведомления на следующей неделе, что в этом случае мне нужно, чтобы он выполнялся не реже одного раза в неделю».
  • Ни один из текущих фоновых режимов не подходит для моего случая, я попробовал фоновое извлечение, но поскольку нет данных, загруженных iOS, я прекратил выполнять фоновое задание через пару дней
  • Я знаю, что могу использовать push-уведомления, но Я не хочу, если это мой последний вариант, потому что я хочу, чтобы уведомление происходило, даже если телефон не был подключен к Интернету.

Итак, как вы думаете, я могу справиться с этим? Есть что-то, что мне не хватает?

ответ

0

Получить местоположение для каждого «n» минут в фоновом режиме. Используя startBackgroundTaskWithExpirationHandler и NSTimer .it сохраняет приложение в фоновом режиме. Итак, вы можете запланировать локальную привязку в фоновом режиме. Для получения обновления местоположения в фоновом режиме см по ссылке How do I get a background location update every n minutes in my iOS application?

(от iOS7 конечной длиной времени фоновой задачи сводится до 180 секунд. Так что вы должны выбирать местоположение в пределах следующих 180 секунд.) Если пользователь принудительно завершить приложение. приложение уничтожило всю задачу. Используйте Значительное изменение местоположения или мониторинг региона, чтобы перезапустить Фоновое задание и получить местоположение для каждого «n» минут.

+0

Я думал, что это уже не так. Я думаю, что iOS приостанавливает NSTimer, как только вы достигнете порога. и единственный способ запустить приложение в фоновом режиме - выполнить фоновое выполнение с одним из фоновых режимов. – Abd4llA

+0

Если вы найдете место в течение 180 секунд. жизнь приложения продолжается до 180 секунд. вы получаете место на каждые 180 секунд. вы можете проверить оставшееся время фона NSLog (@ "backgroundTimeRemaining:% .0f", [[UIApplication sharedApplication] backgroundTimeRemaining]); – Prabha