アプリ内の AirPlay 経験値を豊かに


あなたのアプリで AirPlay を使用している場合、ユーザーのために豊かな経験値を提供することができるいくつかの方法があります。



AirPlay のピッカーを提供


ユーザーは、図3-1 に示すように、AirPlay の出力を選択できるように iOS のマルチタスクインタフェースで、システムの AirPlay ピッカーを選ぶことができます。AirPlay の出力デバイスを使用できる場合は、AirPlay のボタンが音量スライダの横に表示され、ボタンをタップすると使用可能なデバイスのリストが表示されます。


図3−1 システム AirPlay ピッカー


airplaypicker_2x


アプリがメディアを再生する場合は、ユーザーがフォーカスを変更する必要がないように、アプリ内での AirPlay 出力ピッカーを提供することをお勧めします。次のコードスニペットに示すように、MPVolumeView を使用して、メディア再生コントロールに AirPlay のピッカーを追加することができます。



MPVolumeView *volumeView = [ [MPVolumeView alloc] init] ;
[view addSubview:volumeView];



カスタムメディアコントローラを持っていて標準のボリューム·コントローラーを使用したくない場合は、次のコードスニペットを使用するだけで AirPlay ピッカーを追加することができます。



MPVolumeView *volumeView = [ [MPVolumeView alloc] init] ;
[volumeView setShowsVolumeSlider:NO];
[volumeView sizeToFit];
[view addSubview:volumeView];



利用可能な AirPlay の出力デバイスがある場合にのみピッカーが表示されます。


オーディオをあるべき場所に送信


アプリは、典型的には、2つのタイプの音ーアプリの音(周囲の音や、背景音、および付随的雑音) およびシステムサウンド (キークリックや警告音など) を使用しています。 AirPlay は、サウンドシステムがホスト上にとどめようとするのに対しアプリの音を遠隔サウンドシステム上に配信しようとしますが、フィードバックサウンドシステムは入力デバイスに対しローカルなままにとどまります。


アプリがアプリ・オーディオ用のシステムサウンド API を使用している場合は、AirPlay に対応のサウンドシステムには AirPlay はリダイレクトしません。結果は最適とはほど遠いユーザーの経験値をもたらします。システム·サウンドで のみ システム・サウンド API を使用することが重要な点です。アプリのオーディオの場合、 AVAudioPlayer などのAPIを使用して下さい。


オーディオメタデータを提供


お使いのオーディオは、LCD ディスプレイと大画面のホームシアター·システムまたはサウンドシステム上で再生しているでしょうか。アーティスト名、曲名、アルバムアートなどの AirPlay デバイスのディスプレイに表示可能なメタデータを提供して、あなたのアプリは、より良いユーザー経験値を提供します。


MPNowPlayingInfoCentersetNowPlayingInfo メソッドに辞書を渡すことで、メタデータを追加します。 MPNowPlayingInfoCenter クラスは MediaPlayer のフレームワークの一部ですが、 MediaPlayer、AVFoundation、 および AudioQueue を含むすべての再生フレームワークに対応しています。


通常の曲情報文字列を提供することに加えて、また、再生速度、経過時間、メディアアイテムの持続時間を渡すべきです。再生装置はプログレスバーを作成するため経過時間と再生速度を使用することができます。再生速度が変更した時に経過時間と再生速度を更新して下さい。


リモートイベントに応答


AirPlay が使用されている場合、あなたのメディアは、ホスト·デバイスとは別の部屋で再生している可能性があります。AirPlay の出力デバイスは、独自のコントロールを持っているか、または Apple のリモコンに反応するかもしれません。最高のユーザー経験値のためには、あなたのアプリは、再生、一時停止、早送りなどの要求のリモートイベントに耳を澄まし、応答して下さい。リモートイベントを有効にすると、アプリはヘッドホンやホストデバイスにプラグインされたイヤホンのコントロールに対応することができます。


リモートイベントを受信するためには、次のコードスニペットを使用して下さい。



- (BOOL) canBecomeFirstResponder {return YES;}
- (void) viewDidAppear: (BOOL) animated {
    [super viewDidAppear:animated];
    [ [UIApplication sharedApplication] beginReceivingRemoteControlEvents];
    [self becomeFirstResponder];
}



あなたのアプリがメディアの再生を終了すると、システムに、あなたがもはやリモートのイベントの受信者ではない事を、以下のコード・スニペットで通知しましょう。



- (void) viewWillDisappear: (BOOL) animated {
    [super viewWillDisappear:animated];
    [ [UIApplication sharedApplication] endReceivingRemoteControlEvents];
    [self resignFirstResponder];
}



UIEventTypeRemoteControl 型のイベントや、あなたのアプリ用の適切なサブタイプのイベントに対応しましょう。次のコードスニペットで、例を示します。



- (void) remoteControlReceivedWithEvent: (UIEvent *) receivedEvent {
    if (receivedEvent.type == UIEventTypeRemoteControl) {
        switch (receivedEvent.subtype) {
            case UIEventSubtypeRemoteControlTogglePlayPause:
                [self playPauseToggle: nil]
                break;
            case UIEventSubtypeRemoteControlNextTrack:
                [self nextTrack: nil]
                break;
...



イベントサブタイプの列挙については UIEvent.h を参照してください。




AirPlay の選択と除外

暗号化と認証
目次
Xcode の新機能
AVCam(サンプルコード)

AirPlay 序文
  • AirPlay のためのメディアとサ
        ーバの準備
    メディアの準備
    AC3 オーディオと高解像度映像を
        提供
    サーバーの構成
  • AirPlay の選択と除外
  • ウェブサイトで AirPlay 有効化ま
        たは無効化 
    アプリ内で AirPlay 有効化また
        は無効化
    アプリが AVPlayer を使用してい
        る場合
    アプリが MPMoviePlayerControlle
        を使用している場合
    アプリが UIWebView を使用してい
    る場合
  • アプリ内で AirPlay 経験値を豊
        かに
  • AirPlay のピッカーを提供
    オーディオをあるべき場所に送信
    オーディオメタデータを提供
    リモートイベントに応答
  • 暗号化と認証
  • メディアダウンロードの暗号化
    暗号化キーダウンロードのための
        認証
  • 文書改定履歴











  • トップへ












    トップへ












    トップへ












    トップへ












    トップへ












    トップへ












    トップへ












    トップへ












    トップへ












    トップへ












    トップへ