Задать вопрос
@timokins

Как совершить действие в заданное время?

Приветствую,
вопрос от newbie,

в какую сторону копать,
чтобы узнать, как в приложение сделать "таймеры",
которые, к примеру, раз в сутки сбрасывали одну из настроек,
и раз в час прибавляли данные к другой настройке.

Более наглядный пример, когда в игре используешь способность, включается таймер, что через 20 часов он восстановится, или каждый день в 02:00 добавляется бонус.

Есть ли в iOS SDK какие-то встроенные для этого функции или ... ?
  • Вопрос задан
  • 293 просмотра
Подписаться 2 Оценить Комментировать
Решения вопроса 1
Flanker_4
@Flanker_4
К сожалению нет. Но возможно есть кастомные реализации подобного sheduler'а

В iOS очень сложно с работой в фоне+приложение может быть выгружено в любой момент пользователем. Самый идеальный вариант - реализовать подобную логику на сервере, и , воспользовавшийсь какой либо очередью сообщений (rabbit mq там) +remote push notification, уведомить клиента о наступлении события

Но если с сервером проблемы, то вручную это делается следующим образом:
1) Определить дату и время срабатывания
2) Завести таймер NSTimer с этой датой, там есть метод initWithFireDate(точно не помню), указав селектор(метод) для срабатывания
3) при уходе приложения в фон остановить таймер
4) при возвращении приложения из фона или при запуске - проверить , больше ли текущее время за запланированное в пункте 1 . Если да, то выполнить предпологаемую логику, если нет - то выполнить пункт 2.

Для того, что бы пользователь не проморгал момент наступления события, можно бросать/шедулить локальные нотификации UILocalNotification- в этом случае, если приложение будет в фоне, пользователь увидет пуш и если это что то важное для него - запустит приложение и кинет вас в пункт 4
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы