Я не уверен, почему вам нужно выполнить стелс-загрузку, когда ваше приложение установлено на заднем плане.Что не так с этим, когда ваше приложение работает?Тем не менее ...
Да, это возможно.Существуют различные приемы, которые вы можете использовать, чтобы приложение работало в фоновом режиме;самые простые - это «voip», если у вас есть открытый сокет (или просто сокет UDP, или вы можете просто сказать, что у вас есть keepalive) и «audio» (но вы должны продолжать проигрывать аудио, даже если все, что вы играете, это тишина).
Я не рекомендую использовать «voip», если вы не проверили разрядку батареи (это может быть приемлемо, если вы подключаетесь / привязываетесь только к локальному хосту).AFAIK, Skype использует «voip»;это значительно сокращает срок службы батареи (около 16-24 часов на iPhone 4; я не ждал достаточно долго, чтобы выяснить это).
Я не рекомендую использовать «аудио» - я думаю,чтобы это работало, нужно что-то сыграть (например, тишина), что, вероятно, останавливает приложение iPod.Он почти наверняка разряжает батарею.
Если вы хотите отложить загрузку более чем на несколько минут, я не думаю, что будут работать простые «фоновые задачи», поскольку iOS дает ваммаксимальное время (если я не ошибаюсь, и оно основано на времени процессора, используемом вашим приложением, но я сомневаюсь в этом).Вы можете проверить что-то вроде этого:
-(void)applicationDidEnterBackground:(UIApplication*)application
{
UIBackgroundTaskIdentifier taskId = [application beginBackgroundTaskWithExpirationHandler:^{NSLog(@"Task expired");}];
NSTimeInterval backgroundTime = application.backgroundTimeRemaining;
NSLog(@"Background task for %g seconds ...", (double)backgroundTime);
[NSThread sleepForTimeInterval:backgroundTime - 1];
NSLog(@"Background task finishing with %g seconds remaining ...", (double)application.backgroundTimeRemaining);
[application endBackgroundTask:UIBackgroundTaskIdentifier];
}
Пожалуйста, подумайте о батарее children !