2011-12-07 33 views
6

Su iOS 5 con un iPad 2 o iPhone 4S, gli utenti possono abilitare il mirroring dello schermo con Apple TV e AirPlay. Come posso evitare che la mia app venga specchiata in questo modo? C'è un modo per rilevare che questo mirroring è in atto in modo da impedire il mirroring dei miei contenuti?Blocco Mirroring AirPlay su iOS 5

Il motivo è che ho dei contenuti che non sono legalmente autorizzato a visualizzare su uno schermo televisivo.

+2

@CarlVeazey In questo caso con la mia risposta qui sotto lo farei consiglia di visualizzare un messaggio che indica il motivo per cui il mirroring "non funziona". –

risposta

5

Questa è davvero una pessima idea e la odio mentre inibisci i tuoi utenti. Detto questo, il mirroring di AirPlay funziona allo stesso modo del collegamento dell'adattatore VGA/HDMI, quando si collega un adattatore si ha la possibilità di visualizzare ciò che si desidera sul "secondo monitor". Se si desidera "bloccare" il mirroring, è possibile impostare la finestra del display esterno su una vista bianco/nero fisso.

La maggior parte delle applicazioni iOS crea e utilizza solo una finestra durante il loro ciclo di vita. Questa finestra copre l'intera schermata principale del dispositivo e viene caricata dal file di pennini principale dell'applicazione (o creata a livello di programmazione) nelle prime fasi della vita dell'applicazione. Tuttavia, se un'applicazione supporta l'uso di un display esterno per l'uscita video, può creare una finestra aggiuntiva per visualizzare il contenuto su quel display esterno. Tutte le altre finestre vengono in genere create dal sistema e vengono generalmente create in risposta a eventi specifici, ad esempio una chiamata in arrivo.

Scopri i View Programming Guide for iOS, in particolare la sezione di Windows e Displaying Content on an External Display

+0

Grazie Chris. Sono stato in grado di raggiungere il mio obiettivo con il tuo consiglio. –

+2

@Chris non è necessariamente una "idea veramente pessima". Sto sviluppando un'applicazione in questo momento con una buona ragione per disabilitare il mirroring. – DuckMaestro

+0

Ci sono sempre ragioni di business che hanno senso, fa semplicemente schifo dal punto di vista dell'utente quando la funzionalità è azzoppata. –

2

solo per aggiungere il codice per fare questo lavoro abbastanza semplice Qui

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]; 
    }