iPhone VOIP в фоновом режиме

Я разрабатываю приложение для iPhone, которое взаимодействует с устройством, отличным от iOS, через Wi-Fi. Мое приложение использует VOIP. Я настроил потоки и добавил необходимые UIBackgroundModes в свой plist .

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

Может ли кто-нибудь сказать мне, если я что-то упустил?


person rokridi    schedule 28.03.2012    source источник
comment
Я думаю, вам нужно предоставить немного больше подробностей о том, что вы пробовали до сих пор. Может быть, выложите какой-нибудь код?   -  person onnoweb    schedule 28.03.2012
comment
IIRC, сетевые коммуникации отключаются, когда ваши приложения IOS переходят в фоновый режим.   -  person KevinDTimm    schedule 28.03.2012
comment
Я объясняю больше: мое приложение связывается с внешним устройством через WIFI. Когда мое приложение переходит в фоновый режим, ОС кэширует данные, поступающие с внешнего устройства, а затем доставляет данные, когда приложение возвращается на передний план. Проблема в том, что я хочу различать данные, поступающие в фоновом режиме, и данные, поступающие на передний план. Вопрос в том, должен ли я запускать фоновую задачу для обработки поступающих данных, когда приложение находится в фоновом режиме, или я должен держать обработку данных на переднем плане?   -  person rokridi    schedule 28.03.2012
comment
@KevinDTimm: сеанс поддерживается, пока приложение находится в фоновом режиме. Поток продолжает получать данные только тогда, когда я запускаю фоновую задачу. Но я не знаю, должен ли я обрабатывать данные в фоновом режиме или нет (из-за ограниченного времени, отведенного для фоновой задачи)   -  person rokridi    schedule 28.03.2012
comment
@rokridi Если ваша проблема решена, вы можете ответить с подробным объяснением и принять свой или любой ответ.   -  person User97693321    schedule 22.10.2012


Ответы (2)


Не уверен в реальной проблеме.

Убедитесь, что в соответствии с фоновым приложением VOIP для iOS оно позволит только TCP-соединению быть активным и доступным в фоновом режиме.

Поэтому, если вы/ваш стек используете сокет UDP для VOIP, замените его на TCP.

В случае, если порт UDP остается привязанным к вашему приложению, но он неактивен в фоновом режиме и становится активным в режиме переднего плана.

person Divyang Mithaiwala    schedule 29.03.2012
comment
Я устанавливаю TCP-соединение для связи с сервером (имейте в виду, что я разрабатываю свое приложение под iOS 5). И я только что запустил фоновую задачу, и приложение продолжает получать данные в фоновом режиме, однако это длится не более 10 минут. Интересно, на правильном ли я пути? - person rokridi; 29.03.2012
comment
В течение этого времени (максимум 10 минут) вы отправляете какие-либо пакеты? В частности, разница во времени между остановкой приема и последним отправленным пакетом? А также различайте, что любой pkt, который вы получаете после выхода на передний план, является захватом pkt или ретрансляцией. В соответствии со стандартом SIP pkt повторно передается в течение 32 секунд, но для TCP он будет повторно передавать pkt в течение 2 минут. - person Divyang Mithaiwala; 29.03.2012
comment
в это время я отправляю и получаю пакеты - person rokridi; 29.03.2012

Я предполагаю, что вы правильно установили необходимые фоновые режимы в plist на основе вашего утверждения. Именно в массиве задается ключ и требуемое значение для аудио и voip. Также у вас есть ключ «приложение не работает в фоновом режиме», добавленный в plist и установленный в NO.

person tman78    schedule 29.03.2012