4

私はAppDelegate(didFinishLaunching)にこれを持っています:

[[UIApplication sharedApplication] beginReceivingRemoteControlEvents];

関連するView Controllerでイベントを処理しようとしましたが、むらがありました(最初の応答者であっても、一部のView Controllerはイベントを取得し、他のView Controllerは取得しませんでした)。UIApplication をサブクラス化してみました。それはうまくいきませんでした。今、私は UIWindow をサブクラス化し、これを実行しようとしています (コメントを参照してください):

- (void)sendEvent:(UIEvent *)event {
if (event.type == UIEventTypeRemoteControl) {
    NSLog(@"I wish this happened"); //this never happens
}
else
{
    NSLog(@"some other event"); //this does happen on any other interaction
    [super sendEvent:event];
}
}

- (void) remoteControlReceivedWithEvent: (UIEvent *) receivedEvent {

if (receivedEvent.type == UIEventTypeRemoteControl) {
    NSLog(@"got remote event"); // this never happens either
    switch (receivedEvent.subtype) {

        case UIEventSubtypeRemoteControlTogglePlayPause:
        {
            NSLog(@"handle play/pause");
            break;
        }


        default:
            break;
    }
}
}

私は情報plistでこれを使用して、または使用せずに試しました:

<key>UIBackgroundModes</key>
<array>
        <string>audio</string>
</array>

違いはありません。Apple のドキュメントに記載されているように、オーディオ コントロールを使用してリモート コントロール イベントをシミュレートできます (ホーム ボタンを 2 回タップし、下にスクロールします)。再生または一時停止を押すと、iTunes ライブラリからオーディオが再生されます。Appleヘッドフォンのボタンも試しました。何もない。

私がやりたいことは、リモコンの再生/一時停止ボタンを検出し、イベントを処理することだけです。これらのイベントをキャッチするには、他に何をする必要がありますか?

4

1 に答える 1

9

わかりました、Appleのブラックホールに私の人生があと数時間あります。AVAudioPlayer を使用して何らかのオーディオを再生した後、またはオーディオを含むビデオ ファイルを再生した場合にのみ、リモート コントロール イベントをキャプチャできることが判明しました。これはここのどこにも文書化されていません。

したがって、私の場合は、リモート コントロール イベントをキャプチャする前に、ダミーのサイレント オーディオ ファイルを最初に再生する必要があります。これが誰かの助けになることを願っています。

(更新)更新されたドキュメントには、次のように記載されていることに注意してください。

リモート コントロール イベントを受信するには、アプリで次の 3 つのことを行う必要があります。

  • 最初の対応者になりましょう。マルチメディア コンテンツを表示するビューまたはビュー コントローラーは、ファーストレスポンダーでなければなりません。
  • リモート コントロール イベントの配信をオンにします。アプリは、リモート コントロール イベントの受信を開始するように明示的に要求する必要があります。
  • オーディオの再生を開始します。アプリは「Now Playing」アプリである必要があります。言い換えると、アプリがファーストレスポンダーであり、イベント配信をオンにしている場合でも、アプリはオーディオの再生を開始するまでリモート コントロール イベントを受信しません。
于 2012-08-23T03:41:44.373 に答える