Как запустить функцию в определенное время в iOS?

Я хочу запустить функцию в моем приложении в определенное время. В 17:00 я бы хотел, чтобы мое приложение показывало простой alertView, сообщающий пользователю, что сейчас 17:00.

Можно с уверенностью предположить, что приложение активно и открыто в это время. Я знаю, как запустить функцию после задержки (но это зависит от того, когда метод вызывается впервые).

Один из подходов - отправка локального уведомления. Это лучший подход? Я надеялся избежать этого, так как это зависит от того, предоставил ли пользователь разрешения на отправку уведомлений.

1 ответ

Решение

Если "безопасно предполагать, что приложение активно и открыто в это время" - хотя я не понимаю, как можно предположить, что это безопасно - тогда таймер (NSTimer) является наиболее подходящим. Просто используйте разницу между временем и временем, когда вы хотите, чтобы вызываемая функция сообщала таймеру, когда нужно стрелять.

Локальные уведомления должны уведомлять пользователя о чем-то, когда ваше приложение не является передним. Другими словами, это способ сообщить системе, чтобы она предоставляла интерфейс для уведомлений от вашего имени. Уведомление может появляться в центре уведомлений, на экране блокировки, в виде баннера или оповещения, а также в виде звука. Если это не то, что вы хотите, не используйте локальное уведомление.

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

Другие вопросы по тегам