![](https://help.apple.com/assets/6537FB06A074DBB5E802EA07/6537FB31280588A5490B6E1D/es_419/52d714626638d3391623c853be0c593b.png)
Seguridad de ReplayKit en iOS y iPadOS
ReplayKit es una infraestructura que permite que los desarrolladores agreguen funcionalidades de grabación y transmisión en vivo a sus apps. Además, permite que los usuarios agreguen notas a sus grabaciones y transmisiones en vivo usando la cámara frontal del dispositivo y el micrófono.
Grabación de video
Existen varias capas de seguridad integradas en la grabación de un video:
Cuadro de diálogo de permisos: antes de comenzar la grabación, ReplayKit le presenta al usuario una alerta de consentimiento que le solicita acreditar su intención de grabar con la pantalla, el micrófono y la cámara frontal. El aviso se presenta una vez por cada proceso de app, y se vuelve a presentar si la app se queda en segundo plano por más de 8 minutos.
Captura de audio y pantalla: la captura de audio y pantalla ocurre fuera del proceso de la app en el daemon replayd de ReplayKit. Esto está diseñado para garantizar que el proceso no tenga acceso al contenido grabado.
Captura de audio y pantalla dentro de la app: esto le permite a una app obtener búfers de muestra y video que están protegidos por el cuadro de diálogo de permisos.
Creación y almacenamiento de videos: el archivo de video se escribe en un directorio al que sólo los subsistemas de ReplayKit pueden acceder, mientras que las apps no pueden. Esto ayuda a evitar que terceros usen las grabaciones sin el consentimiento del usuario.
Vista previa y uso compartido del usuario final: el usuario tiene la habilidad de previsualizar y compartir el video con la interfaz de usuario publicada por ReplayKit. La interfaz de usuario se presenta fuera del proceso mediante la infraestructura de extensiones de iOS y tiene acceso al archivo de video generado.
Transmisión de ReplayKit
Existen varias capas de seguridad integradas en la transmisión de un video:
Captura de audio y pantalla: el mecanismo de captura de audio y pantalla durante la transmisión es idéntico al de la grabación de video y ocurre en
replayd
.Extensiones de transmisión: para que los servicios de terceros participen en la transmisión de ReplayKit, deben crear dos nuevas extensiones configuradas con el punto final com.apple.broadcast-services:
Una extensión de interfaz de usuario que permita al usuario configurar su transmisión.
Una extensión de carga que maneje la carga de datos de audio y video en los servidores back-end del servicio.
La arquitectura ayuda a garantizar que las apps de alojamiento no tengan privilegios para transmitir el contenido de audio y video. Sólo ReplayKit y las extensiones de transmisión de terceros tienen acceso.
Selector de transmisión: con el selector de transmisión, los usuarios inician las transmisiones del sistema directamente desde una app utilizando la misma interfaz de usuario definida por el sistema y a la que se puede acceder desde el centro de control. La interfaz se implementa utilizando una API privada, y se trata de una extensión que se encuentra dentro de la infraestructura de ReplayKit. No está incluida en el proceso de la app de alojamiento.
Extensión de carga: la extensión que los servicios de transmisión de terceros implementan para manejar contenido de audio y video durante la transmisión utiliza búfers de muestra decodificados y sin procesar. Durante este modo, los datos de audio y video se serializan y se pasan a la extensión de carga del tercero en tiempo real a través de una conexión XPC directa. Los datos de video se codifican extrayendo el objeto IOSurface del búfer de muestra del video, codificándolo de forma segura como un objeto XPC, enviándolo mediante XPC a la extensión del tercero y decodificándolo nuevamente y de forma segura en un objeto IOSurface.