SDK para iOS

Visión general

El SDK para iOS te permite usar sesiones de video con Vonage Video API en aplicaciones creadas para dispositivos iPad, iPhone y iPod touch.

Puedes encontrar la referencia del SDK de iOS de la API de Video de Vonage aquí.

Notas importantes:

  • La versión 2.33.0+ del SDK es compatible con los Mac de silicona de Apple que ejecuten macOS 14 o posterior.. Véase Compatibilidad con macOS para conocer las consideraciones y limitaciones específicas de cada plataforma.
  • La versión 2.29.0+ del SDK es compatible con iOS 15 o superior
  • Cambios en la red de iOS 14 que afectan a las sesiones retransmitidas - consulte la lista de problemas conocidos en las notas de la versión
  • Problemas al utilizar Simulator para previsualizar la aplicación en un Mac con un chip M1 - consulte la lista de problemas conocidos en las notas de la versión
  • Compartir pantalla en macOS se limita a la propia ventana de la aplicación - No es posible capturar el escritorio completo. Consulte este problema conocido para más detalles

Todas las Applications que usan la Video API de Vonage están compuestas por dos partes:

El Client SDK de iOS proporciona la mayor parte de las funciones básicas para tu aplicación, entre las que se incluyen:

  • Conexión a la sesión
  • Publicación de flujos en una sesión
  • Suscripción a flujos en una sesión

Los SDK de cliente también están disponibles para web, Android, iOS, Windows, macOS, Linux y React Native. Todos los SDK de cliente pueden interactuar entre sí.

Puede obtener más información sobre los conceptos básicos de clientes, servidores, sesiones, etc. en la página Página básica de la Video API.

Aprender a crear con el SDK de iOS

La mejor manera de aprender a utilizar el SDK de iOS es seguir las instrucciones de Tutorial básico de videoconferencia.

Una vez que comprendas los aspectos básicos de la creación con el SDK para iOS de Vonage, podrás obtener información más detallada y aprender a personalizar tu aplicación con la función Guías para desarrolladores de Vonage. Para investigar clases y métodos específicos de la API, consulte la sección Guía de referencia de la API del SDK para iOS de Vonage.

Interoperabilidad

Las aplicaciones escritas con el SDK de Vonage para iOS 2.33.0 pueden interoperar con las aplicaciones de Vonage escritas con la versión 2.31+ de los SDK de cliente de Vonage:

  • SDK web (OpenTok.js)
  • SDK para Android
  • SDK para Windows
  • SDK para macOS
  • SDK para Linux
  • SDK de React Native

Los SDK de cliente también están disponibles para web, Android, Windows, macOS, Linux y React Native. Todos los SDK de cliente pueden interactuar entre sí. Puedes obtener más información sobre los aspectos básicos de los clientes, servidores, sesiones y más de Vonage Video en la página web Conceptos básicos de la Video API página.

Uso del SDK

El SDK de iOS es compatible con iOS 15 o superior.

El SDK de iOS es compatible con conexiones Wi-Fi, 4G/LTE y 5G.

El SDK de iOS está disponible como CocoaPods Pod OTXCFrameworkque se distribuye como XCFramework. Si no puede utilizar un XCFramework, el OpenTok pod se distribuía como un framework FAT universal, pero ya no recibe actualizaciones. El SDK de iOS también está disponible como Gestor de paquetes Swift paquete, VonageClientSDKVideo. Puede instalar el paquete añadiendo el archivo https://github.com/vonage/vonage-video-client-sdk-swift.git como dependencia de un paquete Swift.

La versión actual del SDK de iOS requiere Xcode 10 o superior. El SDK de iOS requiere los siguientes frameworks y bibliotecas:

  • AudioToolbox.framework
  • AVFoundation.framework
  • CoreGraphics.framework
  • CoreMedia.framework
  • CoreTelephony.framework
  • CoreVideo.framework
  • Foundation.framework
  • GLKit.framework
  • libc++.tbd (libc++.dylib antes de Xcode 7)
  • libsqlite3++.tbd (libsqlite3.dylib anterior a Xcode 7)
  • Metal.framework
  • MetalKit.framework
  • MetalPerformanceShaders.framework
  • OpenGLES.framework
  • QuartzCore.framework
  • SystemConfiguration.framework
  • UIKit.framework
  • VideoToolbox.framework

Utiliza el -force_load para cargar bibliotecas específicas que lo requieran, esto es manejado por usted si está agregando el SDK a través de CocoaPods o Swift Package Manager.

El SDK de iOS enlaza con la biblioteca estándar libc++. Si se compiló otra biblioteca que enlaza con la biblioteca estándar libc++ en una versión de Xcode anterior a la 6.0.0, pueden producirse fallos de seguridad en tiempo de ejecución al utilizarla con el SDK de iOS. Las bibliotecas incompatibles conocidas son, entre otras, Firebase (versiones anteriores a la 2.1.2, véase https://code.google.com/p/webrtc/issues/detail?id=3992 y Google Maps (versiones anteriores a la 1.9.0). Para solucionar este problema, descarga una versión de la otra biblioteca que se haya compilado con Xcode 6.0.0 o posterior. Consulta la página notas de la versión para obtener información sobre la última versión del SDK y una lista de los problemas conocidos.

Para poder acceder a la cámara y al micrófono, iOS 10 requiere que establezcas valores para los parámetros NSCameraUsageDescription y NSMicrophoneUsageDescription en el archivo Info.plist. Estas definen cadenas que aparecen en el instalador de la app para informar al usuario de por qué tu app utiliza la cámara y el micrófono.

Para más información la documentación de Apple sobre las teclas Cocoa.

Véase este documento para obtener información sobre el uso del SDK en aplicaciones que se ejecutan en segundo plano.

Requisitos del sistema

Para una transmisión de vídeo fiable, asegúrate de que tu dispositivo cumple estas especificaciones recomendadas:

  • CPU: Apple A12 Bionic o superior.
  • RAM: Al menos 4 GB de RAM para llamadas en grupo y multitarea.
  • Pantalla: 5,4"+ para iPhone, 10,2"+ para iPad.
  • Capacidad de la batería: 3000+ mAh para iPhone, 7000+ mAh para iPad.
  • Red: Conectividad fiable a Internet; funciona por Wi-Fi o móvil.

Estas recomendaciones garantizan una reproducción estable, un menor uso de la CPU y un rendimiento fluido al transmitir vídeo.

Ejemplos de dispositivos: iPhone XS o posterior (2018+), iPad Pro (cualquier generación), iPad Air 3 o posterior, iPad mini 5 o posterior.

Configuración del manifiesto de privacidad

Las versiones 2.25.5 y posteriores del SDK son compatibles con la función manifiesto de privacidad requerido por la tienda de aplicaciones de Apple. Al utilizar estas versiones del SDK, la configuración de privacidad necesaria se añade automáticamente cuando usted crea el informe de privacidad de tu aplicación. Si necesita utilizar una versión anterior del SDK, puede añadir manualmente la configuración de privacidad necesaria basándose en los ajustes de este archivo al archivo de manifiesto de privacidad de tu aplicación.

CallKit

CallKit es un framework que permite a las apps de iOS mejorar su integración con el sistema operativo, permitiendo a la app:

  • Notificación de llamadas entrantes o salientes al sistema operativo
  • Inicie la aplicación con una notificación push de VoIP (sólo si desea mostrar la interfaz de usuario de llamada entrante).
  • Enrutamiento de audio
  • Coordinar las sesiones de audio entre todas las aplicaciones en curso
  • Aumenta los niveles de salida de audio
  • Mostrar controles de llamada en una notificación y en una interfaz de llamada nativa

El vídeo de Vonage ofrece dos formas de integrarse con CallKit:

  1. Establezca un CustomAudioDevice que controla el AudioSession activaciones. Véase esta muestra.
  2. Activar el modo de servicios de llamada mediante OTAudioDeviceManager.currentAudioSessionManager(). La instancia devuelta por el gestor de sesiones de audio debe utilizarse para configurar la sesión de audio y notificar al SDK las activaciones y desactivaciones de la sesión de audio. Véase esta muestra.

Si tu aplicación necesita recibir notificaciones de eventos de la aplicación, como llamadas entrantes, el desarrollador es responsable de implementarlo. Recomendamos utilizar la función PushKit marco y Notificaciones push de VoIP. Como referencia, véase esta muestra.

La integración nativa de Vonage Video requiere que el desarrollador habilite el modo de servicios de llamada al principio del lanzamiento de la aplicación. Las notificaciones push de VoIP requieren una llamada a CXProvider.reportNewIncomingCall antes de 3 segundos; de lo contrario, la aplicación puede bloquearse. En ese intervalo de tiempo, la aplicación debe configurar el soporte de CallKit del SDK antes de que se ejecute el comando CXAnswerCallAction se ejecuta la llamada de retorno.

Para activar el modo de servicios de llamada, ejecute el siguiente código en la aplicación application:didFinishLaunchingWithOptions: método.

let sessionManager = OTAudioDeviceManager.currentSessionManager()
sessionManager?.enableCallingServicesMode()

Configure el AVAudioSession en el CXStartCallAction o CXAnswerCallAction CXProvider devoluciones de llamada. Utiliza el modo de chat de vídeo para las videollamadas, o el chat de voz para las llamadas sólo de audio.

sessionManager?.preconfigureAudioSessionForCall(withMode: .videoChat)
sessionManager?.preconfigureAudioSessionForCall(withMode: .voiceChat)

Notificar al gestor de sesiones las activaciones y desactivaciones de sesiones de audio.

func provider(_ provider: CXProvider, didActivate audioSession: AVAudioSession) {
   sessionManager?.audioSessionDidActivate(audioSession)
}
func provider(_ provider: CXProvider, didDeactivate audioSession: AVAudioSession) {
   sessionManager?.audioSessionDidDeactivate(audioSession)
}

Compruebe el Documentación para desarrolladores de CallKit para más información.

Cambios en la red de iOS 14 que afectan a las sesiones retransmitidas

Con iOS 14, Apple introduce la privacidad de la red local (véase este vídeo).

A partir de iOS 14, el sistema operativo pedirá permiso al usuario cuando una aplicación intente suscribirse a clientes de la misma red local en una sesión retransmitida. El texto predeterminado de la notificación dice que a la aplicación "le gustaría encontrar y conectarse a dispositivos de tu red local".

En una sesión retransmitida, la Video API de Vonage utiliza la red local para descubrir y conectarse a los participantes de video en tu red local cuando sea posible. Si los clientes no pueden conectarse en la red local, una aplicación utilizará el servidor OpenTok TURN para retransmitir flujos de audio y video.

Si el usuario rechaza el permiso, el intento de suscripción puede fallar si el cliente no puede conectarse al servidor OpenTok TURN. En este caso después de que el permiso es rechazado, cualquier futuro intento de suscribirse a los clientes en la misma red también fallará a menos que el usuario cambie el permiso en Ajustes. Desafortunadamente, iOS no proporciona una API para que una aplicación determine si el usuario ha aceptado o rechazado este permiso.

Es importante tener en cuenta que esto no se aplica a las sesiones de vídeo que utilizan la función Router multimedia, ya que los medios se envían a través de Internet y no de la red local.

Si su aplicación utiliza una sesión retransmitida, le animamos a que añada una cadena de uso personalizada descriptiva para informar al usuario de por qué la aplicación necesita este permiso:

  1. En Xcode, abre el archivo info.plist de tu aplicación.

  2. En el editor info.plist, haga clic con el botón derecho del ratón en la columna de la izquierda y seleccione Añadir fila (o haga clic en +) para añadir un ajuste para Privacidad - Descripción del uso de la red local.

  3. Edita el valor de esta cadena para describir cómo utiliza tu aplicación este permiso. Por ejemplo, añada "Esta app utiliza la red local para descubrir y conectarse a participantes de vídeo en la misma red cuando sea posible".

El mensaje al usuario incluirá esta descripción.

Para las Applications que no pueden utilizar sesiones enrutadas y no desean que el usuario acceso a la red local, puede utilizar cualquiera de las opciones de las secciones siguientes. siguientes secciones.

Omitir las comprobaciones de la red local para establecer la conectividad de los medios

Puede ajustar el OTSessionICEConfig.filterOutLanCandidates para forzar a la aplicación a no utilizar la red local red local para establecer la conectividad, como en el siguiente código.

let settings = OTSessionSettings()
let myICEServerConfiguration = OTSessionICEConfig()
myICEServerConfiguration.filterOutLanCandidates = true
settings.iceConfig = myICEServerConfiguration
let session = OTSession(applicationId: applicationId, sessionId: sessionId, delegate: self,
                        settings: settings)

Nota: En OTSessionICEConfig.filterOutLanCandidates está disponible en el SDK de Vonage Video para iOS versión 2.30.0 y posteriores.

Utilizar servidores TURN

Puede ajustar el OTSessionICEConfig.transportPolicy para forzar a la aplicación a utilizar servidores TURN para establecer la conectividad, como en el siguiente código.

let settings = OTSessionSettings()
let myICEServerConfiguration = OTSessionICEConfig()
myICEServerConfiguration.transportPolicy = .relay
settings.iceConfig = myICEServerConfiguration
let session = OTSession(applicationId: applicationId, sessionId: sessionId, delegate: self,
                        settings: settings)

Requisitos del sistema

El SDK para iOS de Vonage es compatible con iOS 15 o superior. Consulta la lista de dispositivos compatibles con iOS 15 aquí

El SDK de iOS 2.33.0+ es compatible con los Mac de silicona de Apple (M1, M2, M3 y posteriores) que ejecuten macOS 14 o posterior, mediante la función de aplicaciones de iOS en Mac. Los Mac basados en Intel no son compatibles.

El SDK para iOS de Vonage es compatible con conexiones Wi-Fi, 4G/LTE y 5G.

Compatibilidad con macOS

El SDK de iOS 2.33.0+ es compatible con los Mac de silicona de Apple (M1, M2, M3 y posteriores) que ejecuten macOS 14 o posterior. En macOS, el SDK ofrece la mayoría de las mismas funciones disponibles en dispositivos iOS, aunque hay algunas diferencias y limitaciones específicas de la plataforma que debes tener en cuenta.

Comportamiento de la cámara en macOS

Los dispositivos macOS suelen tener una única cámara integrada (la cámara FaceTime), que siempre se asigna como cámara frontal (AVCaptureDevicePositionFront). Las cámaras externas conectadas al Mac también se tratan como cámaras frontales.

Consideraciones importantes:

  • A diferencia de los dispositivos iOS, los Mac no tienen el concepto de "cámara trasera"
  • En cameraPosition la propiedad siempre se resolverá a la cámara frontal en macOS
  • Para alternar entre varias cámaras (por ejemplo, integrada frente a externa) en macOS, puedes implementar una capturadora de vídeo personalizada. Para obtener más información, consulta la página Captura de vídeo personalizada guía.

Manejo de la rotación

Los dispositivos macOS no admiten la rotación automática de la orientación como los dispositivos móviles iOS.

  • El vídeo se publica siempre en orientación horizontal
  • Los eventos de rotación de dispositivos no se producen en macOS
  • Applications deben manejar la orientación manualmente si se necesitan ajustes específicos de diseño

Limitación de la linterna

La función de linterna de la cámara no está disponible en macOS.

  • Ajuste del cameraTorch propiedad a true no tendrá ningún efecto en macOS
  • Las cámaras del Mac (integradas o externas) no admiten la función de linterna.
  • Esta función es específica de los dispositivos móviles iOS

Ejemplos de aplicaciones

Para ver muestras, visite nuestro Repo de aplicaciones de ejemplo Swift o Repo de aplicaciones de ejemplo Objective-C en GitHub.

Documentación

Encontrará documentación detallada sobre cada método de iOS en la sección guía de referencia.

Más información

Para obtener una lista de las nuevas funciones y los problemas conocidos, consulte la página notas de la versión.

Funcionamiento en segundo plano

Véase Gestión del estado de fondo.