2011-12-07 10 views
6

iPad 2またはiPhone 4Sを搭載したiOS 5では、Apple TVとAirPlayでスクリーンミラーリングを有効にすることができます。私のアプリがこのようにミラーリングされないようにするにはどうすればよいですか?このミラーリングが行われていることを検出する方法はありますか?私のコンテンツがミラー化されるのを防ぐことができますか?iOS 5のブロックAirPlayミラーリング

これは、テレビの画面に表示することを法的に許可されていないコンテンツがあるためです。

+2

@CarlVeazey I下記の私の答えを持つだろうミラーリングの理由が「動作していない」ことを示すメッセージを表示することを推奨します。 –

答えて

5

これは本当に本当に悪い考えであり、あなたのユーザーを禁止するので嫌です。 AirPlayミラーリングは、VGA/HDMIアダプタを接続するのと同じように動作します。アダプタを接続すると、「第2モニタ」に必要なものを表示することができます。ミラーリングを「ブロック」する場合は、外部ディスプレイのウィンドウを空白/黒の黒いビューに設定することができます。

ほとんどのiOSアプリケーションでは、有効期間中に1つのウィンドウしか作成されず、使用されます。このウィンドウは、デバイスのメイン画面全体に広がっており、アプリケーションの寿命の早い段階で、アプリケーションのメインnibファイルからロードされます(またはプログラムによって作成されます)。ただし、アプリケーションがビデオ出力用の外部ディスプレイの使用をサポートしている場合、その外部ディスプレイにコンテンツを表示するための追加のウィンドウを作成することができます。他のすべてのウィンドウは、通常、システムによって作成され、通常、着信通話などの特定のイベントに応答して作成されます。この場合

ここ

特にWindowsセクションとDisplaying Content on an External Display

+0

Chrisに感謝します。私はあなたのアドバイスで私の目標を達成することができました。 –

+2

@Chrisは必ずしも「本当に本当に悪い」とは限りません。私は今ミラーリングを無効にするのに十分な理由があるアプリケーションを開発しています。 – DuckMaestro

+0

ビジネス上の理由があることは理にかなっています。機能が不自由なユーザーの立場からはちょっとしたことです。 –

2

はちょうどこの非常に単純な作業を行うためのコードを追加し、View Programming Guide for iOSをチェック

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]; 
    } 
関連する問題