Документы, похоже, не предлагают никаких гарантий - мне просто интересно, был ли у кого-нибудь опыт загрузки больших объемов данных после того, как пользователь «фон» приложения для iPhone.

Например, запись аудио или видео и их загрузка, пока есть вероятность, что пользователь запустит другое приложение. Разумно ли ожидать, что можно будет загрузить несколько МБ данных в фоновом режиме, возможно, используя VOPI UIBackgroundMode, который должен поддерживать сокеты в активном состоянии?

1
edoloughlin 17 Фев 2011 в 01:26
Никакое приложение на мобильном устройстве не имеет гарантий загрузки. Я могу пройти через определенное здание и потерять сигнал Wi-Fi и сотовой связи. Предполагая, что батарея не разрядится первой из-за того, что я забыл зарядить ее тем утром. И т.п.
 – 
hotpaw2
17 Фев 2011 в 02:11
Договорились - гарантий нет. Следовательно, требуется загрузка в фоновом режиме и, неявно, при наличии подключения.
 – 
edoloughlin
22 Июл 2011 в 14:41

2 ответа

Лучший ответ

Во-первых, загрузка всего, что не является данными VoIP, в фоновом режиме VoIP нарушает рекомендации Apple и, вероятно, приведет к отклонению вашего приложения. Но у вас все еще есть возможность использовать обычный API завершения фоновых задач, который дает вашему приложению еще 10 минут (на данный момент это количество может измениться в будущем выпуске) для завершения такой задачи, как загрузка.

Если приложение переднего плана использует большую полосу пропускания, вполне вероятно, что ОС будет отдавать ему приоритет над фоновой задачей.

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

1
Ole Begemann 17 Фев 2011 в 02:00
Хороший момент насчет «злоупотребления» режимом VoIP - прошло много времени с тех пор, как я отправил приложение, и избирательная амнезия приглушила боль процесса утверждения :)
 – 
edoloughlin
17 Фев 2011 в 02:11

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

0
shannoga 17 Фев 2011 в 01:59