¿Mantiene el conector VoIP en la reconnection Wi-Fi y el reinicio del dispositivo (iOS)?

Tengo una configuration de zócalo VoIP, funciona correctamente incluso en estados suspendidos y pings el server cada 10 minutos.

Pero cuando la connection WiFi se ha roto, no tengo idea de cómo volver a conectarme al service, incluso en estado suspendido. Lo mismo ocurre con el reinicio del dispositivo.

¿Alguna experiencia?

  1. Bad WiFI : iOS no le permite elegir la networking para vincular a su socket, lo que significa:
    • Si el dispositivo tiene solo una networking 2G / 3G / 4G, se unirá a su toma sobre ella.
    • Si también tiene Wi-Fi (también WiFi rota), se unirá a su toma de stream a pesar de que sea malo para usted.
  2. Reconectando : puede usar su bloque KeepAlive de 10 minutos en UIApplication para intentar y solucionar su connection cada 10 minutos: Despiértese cada 10 minutos e intente volver a conectarse.
  3. La aplicación se inicia automáticamente : después de reiniciar el dispositivo, la aplicación VoIP PUEDE ejecutarse, si se ejecutó antes del reinicio. (Este privilegio de la aplicación VoIP también inicia su aplicación después de un locking)
  4. Nota : Puede detectar si se lanzó automáticamente preguntando a UIApplication su applicationState, en applicationDidFinishLaunching .
  5. Consejo : utilice las tareas en segundo plano mientras realiza acciones en segundo plano.
  6. Campo de golf:
    • Documentación en Apple's
    • Hilo relevante: comportamiento de la aplicación VOIP en el background
    • Hilo relevante: iOS Voip Socket no se ejecutará en segundo plano

Bueno, si el dispositivo se reinicia, no hay manera de volver a iniciar la aplicación. El usuario deberá iniciar su aplicación.

Cuando la connection se cae, debido a algún tipo de error de networking y su aplicación se ejecuta en segundo plano, iOS suspenderá su aplicación. Por lo tanto, el usuario deberá volver a iniciar la aplicación para que funcione.

setKeepAliveTimeout: manejador:

Configura un controller periódico para aplicaciones VoIP.

  • (BOOL) setKeepAliveTimeout: (NSTimeInterval) controller de time de espera: (vacío (^) (vacío)) keepAliveHandler

Parámetros

se acabó el time

El intervalo máximo (medido en segundos) en el que debe despertarse su aplicación para verificar su connection VoIP. El valor mínimo de time de espera aceptable es de 600 segundos. keepAliveHandler Un bloque que realiza las tareas necesarias para mantener su connection de networking VoIP. Si se establece este parámetro en cero, se libera el bloque de controller actual y se evita que UIKit programe la siguiente activación.

Valor de retorno

SÍ si el controller estaba instalado o NO si no lo estaba.

Discusión

Una aplicación de voz sobre IP (VoIP) puede usar este método para instalar un controller cuyo trabajo es mantener la connection de networking de la aplicación con un server VoIP. Se garantiza que este manejador será llamado antes del valor de time de espera especificado, pero puede llamarse a un intervalo de time ligeramente diferente para alinear mejor la ejecución de su manejador con otras tareas del sistema y, por lo tanto, ahorrar energía. Su manejador tiene un máximo de 10 segundos para realizar las tareas necesarias y salir. Si no sale antes de que expire el time, la aplicación se suspende.

Los valores y manipuladores de time de espera no se mantienen entre los inicios de la aplicación. Por lo tanto, si su aplicación se cancela por cualquier motivo, debe volver a instalar el controller durante el próximo ciclo de inicio.

Para que las llamadas a este método tengan éxito, la aplicación debe tener el valor voip en la matriz asociada con la key UIBackgroundModes en su file Info.plist. Al llamar a este método, se reemplaza el controller instalado previamente y los valores de time de espera, si corresponde.

Disponibilidad

Disponible en iOS 4.0 y versiones posteriores.

Declarado en

UIApplication.h