2017-02-09 4 views
0

В тестовом устройстве, которое никогда не использовалось для разработки, iOS Background Fetch работает отлично, продолжая всю ночь.Фоновая выборка не работает на всех устройствах

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

Неужели кто-то испытывает такое же странное поведение? Выполняются ли только при наличии Wi-Fi или есть другие факторы, которые могут отсутствовать, что влияет на поведение выборки?

+0

Вы используете NSURLSession –

+0

можете ли вы поделиться кодом? –

ответ

0

Включение этого режима не является гарантией того, что система предоставит ваше приложение в любое время для выполнения фоновых настроек. Система должна балансировать потребности вашего приложения в получении контента с потребностями других приложений и самой системы . После оценки этой информации система дает время приложениям, когда есть хорошие возможности для этого.

Также, пожалуйста, подтвердите, что вы используете NSURLSession

При загрузке любого контента, рекомендуется использовать класс NSURLSession инициировать и управлять загрузками. Для информация о том, как использовать этот класс для управления загрузкой и загрузкой задач, см. Руководство по программированию сеансов URL.

https://developer.apple.com/library/content/documentation/iPhone/Conceptual/iPhoneOSProgrammingGuide/BackgroundExecution/BackgroundExecution.html

+0

Любая идея, почему «NSURLSession»? –

+0

Самое непосредственное улучшение NSURLSession обеспечивает более NSURLConnection - это возможность настраивать политики сеанса, протоколы, файлы cookie и учетные данные для каждого сеанса, а не использовать их в приложении. Это позволяет сетевой инфраструктуре фреймворков и частей приложения работать независимо друг от друга, не мешая друг другу. Преимущество этого заключается в выполнении задач в фоновом режиме, независимо друг от друга, см. Https://www.objc.io/issues/5-ios7/from-nsurlconnection-to-nsurlsession/ –

+0

Я использую AFNetworking 3.x, используя 'NSURLSession' , Это не проблема, см. Мой ответ. Спасибо вам за ваше время! –

0

Оказалось следующее: у меня была защита данных включена, которые требовали iPhone, чтобы быть разблокирована, прежде чем мои веб-учетные данные могут быть считаны.

Прежде чем делать фоновое извлечение, я проверил, было ли приложение зарегистрировано, проверив эти учетные данные. Эта проверка завершилась неудачно, потому что брелок был заблокирован.

Два iPhone, для которых фоновая выборка работала только спорадически, включала защиту кода доступа, в то время как iPhone, для которого он всегда работал, отключил защиту паролем.

Надеюсь, это поможет другим людям. Here's хорошая статья, обсуждающая мою проблему, которую я нашел после того, как я болезненно разобрал ее сам.

Смежные вопросы