Как правильно * подключить * фоновый разъем при запуске iPhone в приложении VOiP? - PullRequest
1 голос
/ 15 декабря 2010

Я использую VOiP Socket в своем приложении для iPhone. Мне удается заставить его работать должным образом, как в фоновом режиме, так и когда приложение находится на переднем плане.

Моя проблема - при запуске iPhone: как быть уверенным, что у iPhone есть доступ к сети (3G или Wi-Fi), чтобы правильно подключить розетку, не мешая пользователю?

Подробности : предполагается, что приложение VOiP запускается автоматически сразу после запуска iPhone: все работает нормально, didFinishLaunching вызывается сразу после запуска iPhone. Но в это время пользователь, возможно, не ввел свой пин-код (так что 3G не доступен) и Wi-Fi может быть недоступен. Есть ли способ автоматически start для VOiP-сокета при нормальном доступе к сети?

Мой текущий подход, который терпит неудачу : в didFinishLaunching я продолжаю пытаться запускать сокет VOiP каждые 5 секунд. Если для установления соединения требуется слишком много времени, ОС собирается уничтожить приложение (максимум 20 секунд до запуска), но, поскольку приложение помечено как «VOiP», оно будет запущено снова и так далее. .. Через некоторое время, когда сеть в порядке, сокет создается, подключается, и кажется, что все работает нормально, КРОМЕ , что когда данные поступают в сокет, мой обратный вызов didReceivedData не вызывается (я отображаю локальное уведомление, как только я получаю что-либо из сокета для целей отладки).

Затем, если , я запускаю приложение только 1 раз , а затем закрываю его (кнопка «Домой»), так что приложение помещается в фоновый режим, в этом случае обратный вызов сокета вызывается правильно и Я вижу, что отображаются локальные уведомления, доказательство того, что сокет в этом случае правильно проснулся.

Я бы хотел, чтобы розетка VOiP была запущена и работала сразу после запуска iPhone (когда сеть в порядке), без необходимости запуска приложения пользователем 1 раз. Есть идеи о том, как этого добиться?

1 Ответ

0 голосов
/ 02 января 2011

Используйте класс Reachability, чтобы запрашивать подключение каждые X секунд, ТО пытайтесь подключиться.

Достижимость не займет столько времени, сколько будет создано гнездо VoIP.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...