Я использую 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 раз. Есть идеи о том, как этого добиться?