2011-12-07 29 views
6

En iOS 5 con un iPad 2 o iPhone 4S, los usuarios pueden habilitar la duplicación de pantalla con su Apple TV y AirPlay. ¿Cómo puedo evitar que mi aplicación se refleje de esta manera? ¿Hay alguna manera de detectar que esta duplicación se está llevando a cabo para que pueda evitar que mi contenido se refleje?Block AirPlay Mirroring en iOS 5

La razón para hacer esto es porque tengo contenido que legalmente no tengo permitido mostrar en una pantalla de televisión.

+2

@CarlVeazey En este caso con mi respuesta a continuación lo haría recomendamos mostrar un mensaje que indique que el reflejo de la razón "no funciona". –

Respuesta

5

Esta es una muy mala idea y la odio ya que está inhibiendo a sus usuarios. Dicho esto, la duplicación AirPlay funciona de la misma manera que la conexión del adaptador VGA/HDMI, cuando conectas un adaptador, tienes la posibilidad de mostrar lo que quieras en el "segundo monitor". Si desea "bloquear" la duplicación, puede configurar la ventana de la pantalla externa en una vista en blanco/negro sólido.

La mayoría de las aplicaciones de iOS crean y usan solo una ventana durante su vida útil. Esta ventana abarca toda la pantalla principal del dispositivo y se carga desde el archivo de punta principal de la aplicación (o se crea mediante programación) al principio de la vida de la aplicación. Sin embargo, si una aplicación admite el uso de una pantalla externa para la salida de video, puede crear una ventana adicional para mostrar el contenido en esa pantalla externa. El resto de las ventanas generalmente las crea el sistema y generalmente se crean en respuesta a eventos específicos, como una llamada telefónica entrante.

Mira la View Programming Guide for iOS, específicamente la sección de Windows y Displaying Content on an External Display

+0

Gracias Chris. Pude lograr mi objetivo con su consejo. –

+2

@Chris no necesariamente una "muy mala idea". Estoy desarrollando una aplicación en este momento con una buena razón para deshabilitar la duplicación. – DuckMaestro

+0

Siempre hay razones comerciales que tienen sentido, simplemente apesta desde el punto de vista del usuario cuando la funcionalidad está paralizada. –

2

sólo para añadir el código para hacer este trabajo bastante simple Aquí

if ([[UIScreen screens] count] > 1) 
    { 
     UIScreen *secondScreen = [[UIScreen screens] objectAtIndex:1]; 
     CGRect screenBounds = secondScreen.bounds; 
     UIWindow *secondWindow = [[UIWindow alloc]initWithFrame:screenBounds]; 
     secondWindow.screen = secondScreen; 
     UIView *anyView= [[UIView alloc]initWithFrame:screenBounds]; 
     anyView.backgroundColor= [UIColor blackColor]; 
     [secondWindow addSubview:anyView]; 
    }