2012-01-13 5 views
6

ОК, так что я указан UIRequiresPersistentWiFi ключа моего списка свойств приложения к YES так КСН не остановит выборки данных, когда мое приложение работает в фоновом режиме.UIRequiresPersistentWiFi эквивалент для сотовой связи

Однако, когда пользователь использует сотовую связь (а не Wi-Fi), а мое приложение находится в фоновом режиме, загрузка данных прекращается через несколько минут.

Я дважды проверил документы и, похоже, нет эквивалента UIRequiresPersistentWiFi для сотовой сети, которую я мог установить.

Есть ли способ, по которому я могу подключиться через сотовую сеть, когда приложение находится в фоновом режиме? Любые намеки?

Cheers!

Обновления:

Я делаю приложение интернет-радио. Stream объединяется с mp3, которые я запрашиваю один за другим (не могу запросить их заранее, не могу изменить сервер). Он работает, когда мое приложение находится в фоновом режиме и использует wifi. Однако при использовании сотового соединения сетевые запросы не выполняются через некоторое время, проведенное в фоновом режиме. Нельзя менять стратегию. Приложение находится в AppStore, и он работал раньше. Я думаю, они что-то изменили в новой версии системы.

Более того, мне не нужно дросселировать. Мое радиоприложение уже одобрено и находится в AppStore. Поток отправляется со 128 кб/с (это максимум), так что это не проблема. Похоже, что система отключает мои сетевые запросы (когда в сотовой сети) через некоторое время в фоновом режиме. Однако это происходит только тогда, когда я пытаюсь запустить соединение в фоновом режиме.

Описание:

  1. App находится в фоновом режиме, играющий mp3 передаваться по сотовой сети .
  2. Mp3 заканчивается
  3. Я прошу URL в другой mp3
  4. Запрос не выполняется *.

* работает при использовании WiFi.

+0

Я не уверен, что это именно то, что вы ищете, но посмотрите на это: http://stackoverflow.com/q/4595638/1047258 – Novarg

+0

Спасибо, но это не имеет никакого отношения к моему вопросу. – RaffAl

ответ

10

Я вполне уверен, что для сотовых сетей нет ничего подобного. Вот мои аргументы:

  • Служба сотовой связи стоит денег. Много денег. В минуту. Для сравнения, Wi-Fi-сервис не стоит денег.
  • AT & T не имеет очень большой пропускной способности и взимает дополнительную плату за использование дополнительной полосы пропускания.
  • Apple - компания, которая хочет сделать работу пользователя максимально чистой и приятной.
  • Когда затраты непомерны по собственной вине, пользователи злятся, и их опыт не очень приятный.

Если Apple позволяет вам постоянно подключаться к сети за пределами диапазона Wi-Fi, стоимость обслуживания пользователя увеличится, и они не узнают, почему. И если Apple предоставит программистам эту способность, кто-то будет злоупотреблять ею. Итак, я уверен, что Apple не позволит вам это сделать.

Зачем вам постоянно подключаться к Интернету, когда ваше приложение находится в фоновом режиме (если, я думаю, вы делаете интернет-радиоприложение)? Имейте в виду, что в фоновом режиме ваше приложение может быть прекращено без предупреждения в любое время. Вы можете пересмотреть свою стратегию, если не можете найти способ сделать это. :/

+0

Я делаю приложение для интернет-радио. Stream объединяется с mp3, которые я запрашиваю один за другим (не могу запросить их заранее). Он работает, когда мое приложение находится в фоновом режиме и использует wifi. Однако при использовании сотового соединения сетевые запросы не выполняются через некоторое время, проведенное в фоновом режиме. Нельзя менять стратегию. Приложение находится в AppStore, и оно работает. Я думаю, они что-то изменили в новой версии системы. – RaffAl

+0

Если бы я знал, я бы не сказал, чтобы пересмотреть стратегию. Что касается запрашивающей mp3-вещи, я полагаю, вы уже пытались постоянно передавать аудио, не переписывая аудиопоток? Я знаю, что Apple получает флэшку для фоновых приложений, отбрасывающих батарею, когда они впервые подняли многозадачность. Скорее всего, изменилась стратегия Apple по сохранению фоновых приложений от батареи и полосы пропускания (в конце концов, для зарядки сотовой связи требуется гораздо больше заряда, чем подключение Wi-Fi) – Tustin2121

+0

Мой подход работал раньше. Я пришел к выводу, что Apple стала более строгой и не позволяет выполнять запросы, пока приложение некоторое время находится в фоновом режиме и использует сотовую сеть. Я пробовал все обходные пути, которые приходили мне в голову. Никто из них не исправил эту проблему. – RaffAl

1

Я думаю, что нет эквивалента UIRequiresPersistentWiFi, там, вероятно, есть те, которые указали Tusting2121.

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

И тот факт, что ваше соединение исчезает через определенные минуты в сотовом режиме, может быть вызвано чем-то совершенно иным, чем копия механизма энергосбережения Wi-Fi, который вы утверждаете. См. Например, this article, в котором говорится о том, что вы обязаны дросселировать поток данных 3G.

+0

Спасибо за предложение, но мне не нужно дросселировать. Мое радиоприложение уже одобрено и находится в AppStore. Поток отправляется со 128 кб/с (это максимум), так что это не проблема. Похоже, что система отключает мои сетевые запросы (когда в сотовой сети) через некоторое время в фоновом режиме. Однако это происходит только тогда, когда я пытаюсь запустить соединение в фоновом режиме. – RaffAl

1

Добавить audio в вашу UIBackgroundModes запись в Info.plist.

Согласно Apple, Docs: In your callbacks, though, you should do only the work necessary to provide data for playback. For example, a streaming audio app would need to download the music stream data from its server and push the current audio samples out for playback. You should not perform any extraneous tasks that are unrelated to playback.

Вы также можете получить некоторое значение из voip записи - вы можете setKeepAliveTimeout:handler:, чтобы ваш обработчик вызывается на периодической основе, чтобы заполнить ваш поток данных.

+0

Спасибо за ответ, но у меня уже есть звуковой ключ в записи UIBackgroundModes. Я также думаю, что я не должен добавлять voip-ключ.Это может привести к отклонению приложения, поскольку мое приложение не использует какие-либо услуги VoIP. – RaffAl

+1

Вы ставите очередные отдельные mp3-файлы, а затем играете их по одному? Может быть, когда вы перестаете играть последний файл в очереди, приложение приостанавливается? Из документов «Однако, если приложение перестает воспроизводить этот звук или видео, система приостанавливает его». Вы перестаете играть, а затем запустите следующий файл? Есть ли способ постоянно загружать буфер вместо того, чтобы позволить ему слить? – ikuramedia

+0

В противном случае нам понадобится более подробная информация - он перестает играть после такого же количества времени каждый раз? Или такое же количество песен? Это между песнями или в середине песни? Как вы запрашиваете данные из сети? Какие обратные вызовы вы используете для загрузки следующих мелодий? Etc ... – ikuramedia

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