Поддерживать ли VoIP-сокет при переподключении WiFi и перезапуске устройства (iOS)? - PullRequest
3 голосов
/ 02 февраля 2012

У меня настроен сокет VoIP, он работает правильно даже в состоянии ожидания и пингует сервер каждые 10 минут.

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

Есть опыт?

Ответы [ 3 ]

3 голосов
/ 29 апреля 2012
  1. Плохой WiFI : iOS не позволяет выбрать сеть для привязки к вашему сокету, что означает:
    • Если устройство имеет только сеть 2G / 3G / 4G,он свяжет с вами вашу розетку.
    • Если у вас также есть WiFi (также сломанный WiFi), он свяжет вашу розетку с ним, даже если это плохо для вас.
  2. Переподключение : Вы можете использовать свой 10-минутный блок KeepAlive в UIApplication , чтобы попытаться исправить соединение каждые 10 минут: просыпаться каждые 10 минут и пытаться переподключиться.
  3. Приложение запускается автоматически : после перезагрузки устройства приложение VoIP ДОЛЖНО запускаться, если оно запускалось до перезагрузки.(Эта привилегия VoIP-приложения также запускает ваше приложение после сбоя)
  4. Примечание : вы можете определить, был ли вы запущен автоматически, задав UIApplication его applicationState в applicationDidFinishLaunching .
  5. Совет : использовать Фоновые задачи при выполнении действий в фоновом режиме.
  6. Ссылки:
0 голосов
/ 21 февраля 2012

setKeepAliveTimeout: handler:

Настраивает периодический обработчик для приложений VoIP.

  • (BOOL) setKeepAliveTimeout: (NSTimeInterval) Обработчик времени ожидания: (void (^) (void)) keepAliveHandler

Параметры

timeout

Максимальный интервал (измеряемый в секундах), в течение которого ваше приложение должно быть активировано для проверки VoIP.подключение.Минимальное допустимое значение времени ожидания составляет 600 секунд.keepAliveHandler Блок, который выполняет задачи, необходимые для поддержания сетевого подключения VoIP.Установка для этого параметра значения nil освобождает текущий блок обработчика и не позволяет UIKit планировать следующий запуск.

Возвращаемое значение

ДА, если обработчик был установлен, или НЕТ, если он не был.

Обсуждение

Приложение для передачи голоса по IP (VoIP) может использовать этот метод для установки обработчика, задачей которого является поддержание сетевого соединения приложения с сервером VoIP.Этот обработчик гарантированно вызывается до указанного значения времени ожидания, но может вызываться через несколько иной интервал времени, чтобы лучше согласовать выполнение вашего обработчика с другими системными задачами и тем самым сэкономить энергию.Ваш обработчик имеет максимум 10 секунд для выполнения любых необходимых задач и выхода.Если оно не завершится до истечения времени, приложение будет приостановлено.

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

Чтобы вызовы этого метода выполнялись успешно, приложение должно иметь значение voip в массиве, связанном с UIBackgroundModesвведите его Info.plist файл.Вызов этого метода заменяет ранее установленные значения обработчика и значения времени ожидания, если таковые имеются.

Доступность

Доступно в iOS 4.0 и более поздних версиях.

Объявлено в

UIApplication.h

0 голосов
/ 02 февраля 2012

Хорошо, если устройство перезагружается, невозможно запустить приложение снова.Пользователь должен будет запустить ваше приложение.

Когда вы обрываете соединение, из-за какой-то сетевой ошибки, и ваше приложение работает в фоновом режиме, iOS приостановит ваше приложение.Таким образом, пользователю придется снова запустить приложение, чтобы оно заработало.

...