Я создал образец кода для повторного скачивания файла из сети (каждые 30 секунд или около того). В iOS 7 с использованием услуг фоновой передачи с помощью NSURLSession
Я следовал этому руководству http://mobile.tutsplus.com/tutorials/iphone/ios-7-sdk-background-transfer-service/ и добавил этот таймер, чтобы повторить его.iOS 7 Фоновая передача останавливается через 3 минуты
[[UIApplication sharedApplication] beginBackgroundTaskWithExpirationHandler:nil];
mute = [NSTimer scheduledTimerWithTimeInterval:30.0f
target:self
selector:@selector(startDownload)
userInfo:nil
repeats:YES];
[[NSRunLoop currentRunLoop] addTimer:mute forMode:NSRunLoopCommonModes];
Когда я запускаю его (в фоновом режиме, нажав кнопку домой) в тренажере и на IPad подключенного к Xcode (где я могу увидеть журналы) все работает нормально, и он продолжает непрерывно загружать. Но когда я отсоединяю iPad от Mac и запускаю его на iPad в фоновом режиме примерно через 3 секунды, он перестает работать (handleEventsForBackgroundURLSession в AppDelegate вызывается).
В возможностях проекта Xcode я выбрал фоновое изображение в качестве фоновых режимов.
Что мне здесь не хватает или что я сделал не так, чтобы он остановился примерно через 3 минуты? (По документациям с трансферами IOS 7 Фона он должен работать непрерывно, как нет ограничения по времени в фоновом режиме для этого.)
Благодаря
Спасибо за ответ Nitin. Но все тот же результат. Ваше приложение запускается на iPad после отключения от Mac? При запуске в режиме отладки Xcode и симулятора это работает. Но проблема заключается в том, чтобы запускать его как приложение на iPad. – Madhu
Это я использовал в своих приложениях и отлично работает. –
Спасибо Nitin Я получил его работу с помощью вашего сообщения, и это http://stackoverflow.com/questions/10319643/objective-c-proper-use-of -beginbackgroundtaskwithexpirationhandler. Но теперь моя проблема - эксперт на форуме iOS, сказал, что нехорошо использовать таймер, подобный этому, для запуска в фоновом режиме. Он предложил вызвать starDownload, когда предыдущая загрузка завершена, без использования таймера. Планирование делать так. – Madhu