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.

La guía de referencia del SDK para iOS de la Video API de Vonage se puede consultar en 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 Asistencia técnica para macOS Consulta la sección siguiente 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 el Simulador para previsualizar tu aplicación en un Mac con chip M1 - consulta 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 se admite la captura completa del escritorio. Consulta este problema conocido Para más información

Todas las aplicaciones que utilizan la Video API de Vonage constan de 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

También hay SDK de cliente disponibles para web, Android, iOS, Windows, macOS, Linux y React. Todos los SDK de cliente pueden interactuar entre sí.

Puedes obtener más información sobre los conceptos básicos de clientes, servidores, sesiones y otros temas en la Página básica de la Video API.

Aprender a desarrollar con el SDK de iOS

La mejor manera de aprender a utilizar el SDK de iOS es seguir las instrucciones de Tutorial básico sobre el chat de vídeo.

Una vez que comprendas los conceptos básicos para desarrollar con el SDK de Vonage para iOS, podrás obtener información más detallada y aprender a personalizar tu aplicación con el 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 desarrolladas con el SDK de Vonage para iOS 2.34.1 pueden interoperar con las aplicaciones de Vonage desarrolladas con la versión 2.32 o posterior del Vonage Client SDK:

  • SDK web (OpenTok.js)
  • SDK de Android
  • SDK de Windows
  • SDK de 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 una versión posterior. El SDK de iOS requiere los siguientes marcos y bibliotecas:

  • AudioToolbox.framework
  • AVFoundation.framework
  • CoreGraphics.framework
  • CoreMedia.framework
  • CoreTelephony.framework
  • CoreVideo.framework
  • Foundation.framework
  • GLKit.framework
  • libc++.tbd (libc++.dylib en versiones anteriores a 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 se vincula a la biblioteca estándar libc++. Si otra biblioteca que se vincula a la biblioteca estándar libc++ se ha compilado en una versión de Xcode anterior a la 6.0.0, puede provocar errores de segmentación (segfaults) en tiempo de ejecución al utilizarla con el SDK de iOS. Entre las bibliotecas incompatibles conocidas se incluyen, 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 claves del archivo Info.plist. Estas definen las cadenas de texto que aparecen en el instalador de la aplicación para informar al usuario de por qué tu aplicación 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 disfrutar de una transmisión de vídeo fluida, asegúrate de que tu dispositivo cumpla con 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 consumo de CPU y un rendimiento fluido al reproducir vídeo en streaming.

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

La versión 2.25.5 y posteriores del SDK son compatibles con el manifiesto de privacidad requeridas por la App Store de Apple. Al utilizar estas versiones del SDK, los ajustes necesarios relacionados con la privacidad se añaden automáticamente cuando crea el informe de privacidad de tu aplicación. Si necesitas utilizar una versión anterior del SDK, puedes añadir manualmente la configuración de privacidad necesaria siguiendo las instrucciones que se indican en 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).
  • Gestionar el enrutamiento de audio
  • Coordinar las sesiones de audio entre todas las aplicaciones en curso
  • Aumentar 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. Activa 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 sobre eventos de la aplicación, como llamadas entrantes, el desarrollador es el responsable de implementarlo. Recomendamos utilizar el PushKit marco y Notificaciones push de VoIP. Como referencia, véase esta muestra.

La integración nativa de Vonage Video requiere que el desarrollador active el modo de servicios de llamadas en las primeras fases del inicio 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 función de devolución de llamada.

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 obtener más información.

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

Con iOS 14, Apple introduce la privacidad en 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 dispositivos multimedia

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)
OTSessionSettings *settings = [[OTSessionSettings alloc] init];
OTSessionICEConfig *myICEServerConfiguration = [[OTSessionICEConfig alloc] init];
myICEServerConfiguration.filterOutLanCandidates = YES;
settings.iceConfig = myICEServerConfiguration;
session = [[OTSession alloc] initWithApiKey:kApplicationId
                                   sessionId:kSessionId
                                    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)
OTSessionSettings *settings = [[OTSessionSettings alloc] init];
OTSessionICEConfig *myICEServerConfiguration = [[OTSessionICEConfig alloc] init];
myICEServerConfiguration.transportPolicy = OTSessionICETransportRelay;
settings.iceConfig = myICEServerConfiguration;
session = [[OTSession alloc] initWithApiKey:kApplicationId
                                   sessionId:kSessionId
                                    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.

Asistencia técnica para 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 de FaceTime), que siempre se asigna como cámara frontal (AVCaptureDevicePositionFront). Las cámaras externas conectadas al Mac también se consideran cámaras frontales.

Aspectos importantes a tener en cuenta:

  • A diferencia de los dispositivos iOS, los Mac no cuentan con el concepto de «cámara trasera».
  • El 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 del dispositivo 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 exclusiva de los dispositivos móviles con iOS

Ejemplos de aplicaciones

Para ver ejemplos, visita nuestra Repositorio de una aplicación de ejemplo en Swift o Repo de aplicaciones de ejemplo Objective-C en GitHub.

Documentación

Puedes encontrar documentación detallada sobre cada método de iOS en el guía de referencia.

Más información

Para consultar la lista de nuevas funciones y problemas conocidos, consulta el notas de la versión.

Funcionamiento en segundo plano

Véase Gestión del estado de fondo.