2011-12-07 61 views
6

在具有iPad 2或iPhone 4S的iOS 5上,用戶可以使用Apple TV和AirPlay啓用屏幕鏡像。我怎樣才能防止我的應用程序被鏡像呢?有什麼辦法可以檢測到這個鏡像正在發生,所以我可以防止我的內容被鏡像?在iOS 5上阻止AirPlay鏡像

這樣做的原因是因爲我有法律允許在電視屏幕上顯示的內容。

+2

@CarlVeazey在這種情況下,我的回答下面我願意建議顯示一條消息,指出鏡像「不能正常工作」的原因。 –

回答

5

這是一個非常糟糕的主意,我討厭它,因爲你禁止你的用戶。據說,AirPlay鏡像與連接VGA/HDMI適配器的方式相同,當您連接一個適配器時,您可以在「第二臺顯示器」上顯示任何您想要的內容。如果您想「阻止」鏡像,您可以將外部顯示器的窗口設置爲空白/純黑色視圖。

大多數iOS應用程序在其生命週期中只創建並使用一個窗口。該窗口橫跨設備的整個主屏幕,並在應用程序生命週期的早期從應用程序的主要nib文件(或以編程方式創建)加載。但是,如果應用程序支持使用外部顯示器進行視頻輸出,則可以創建一個額外的窗口來在該外部顯示器上顯示內容。所有其他窗口通常由系統創建,並且通常是針對特定事件(例如來電)創建的。

退房的View Programming Guide for iOS,特別是Windows的部分和Displaying Content on an External Display

+0

謝謝克里斯。我已經能夠用你的建議完成我的目標。 –

+2

@Chris不一定是「真的很糟糕的主意」。我正在開發一個應用程序,並有一個很好的禁用鏡像的理由。 – DuckMaestro

+0

總是有商業上的理由是有道理的,當功能被癱瘓時,從用戶的角度來看,這只是糟糕透頂。 –

2

只需添加代碼這樣做很簡單的工作,在這裏

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