iOS 5 と iPad 2 または iPhone 4S では、ユーザーは Apple TV と AirPlay で画面ミラーリングを有効にできます。アプリがこのようにミラーリングされないようにするにはどうすればよいですか? このミラーリングが行われていることを検出して、コンテンツがミラーリングされないようにする方法はありますか?
これを行う理由は、テレビ画面に表示することが法的に許可されていないコンテンツがあるためです。
これは本当に悪い考えであり、ユーザーを阻害しているので嫌いです。そうは言っても、AirPlay ミラーリングは VGA/HDMI アダプターを接続するのと同じように機能します。アダプターを接続すると、「セカンド モニター」に必要なものを表示できます。ミラーリングを「ブロック」したい場合は、外部ディスプレイのウィンドウを空白/真っ黒なビューに設定できます。
ほとんどの iOS アプリケーションは、その存続期間中に 1 つのウィンドウのみを作成して使用します。このウィンドウは、デバイスのメイン画面全体に広がり、アプリケーションのライフサイクルの早い段階で、アプリケーションのメインの nib ファイル (またはプログラムで作成) からロードされます。ただし、アプリケーションがビデオ出力用の外部ディスプレイの使用をサポートしている場合、追加のウィンドウを作成して、その外部ディスプレイにコンテンツを表示できます。他のすべてのウィンドウは通常、システムによって作成され、電話の着信などの特定のイベントに応答して作成されます。
View Programming Guide for iOS、特に Windows セクションとDisplaying Content on an External Display を確認してください。
この非常に単純な作業を行うためのコードをここに追加するだけです
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];
}