Хотя это невозможно сделать, когда приложение не работает, вы можете сделать это довольно легко при запуске или во время работы (если оно будет работать в 3 часа ночи). Вот что я бы сделал:
- Сохраните
NSDate
, используя NSUserDefaults
в последний раз, когда вы обновляли.
- При запуске, если с этой даты прошел период в 3 часа ночи, инициируйте синхронизацию.
- Также при запуске запустите
NSTimer
с длинным интервалом - 5 минут или около того. При каждом срабатывании проверяйте, прошел ли период в 3 часа ночи, и, если он есть, инициируйте синхронизацию. Вы даже можете свернуть код последней пули в метод стрельбы NSTimer
и просто запустить его один раз при запуске. Обязательно обновляйте объект NSDate
каждый раз.
- В делегате приложения в методах, вызываемых при возврате из фона, проверьте время и синхронизируйте при необходимости - или просто запустите
NSTimer
и сразу же запустите его.
Это должно охватывать все сценарии, в которых необходимо обновить приложение.