音楽をストリーミングするアプリを書いていますが、音楽コントロール ドック画面 (ホーム ボタンをダブルクリックして左にスワイプしたとき) にアイコンを設定するのに非常に苦労しています。すべてのドキュメントはこのようなことをするように言っていますが、アイコンは表示されず、イベント通知も受け取りません。このコードはすべて、私のプレーヤー ビュー コントローラーにあります。_radioPlayer は、AVQueuePlayer のインスタンスです。ここで何が間違っていますか?
- (void)viewWillAppear:(BOOL)animated
{
UIApplication *application = [UIApplication sharedApplication];
if([application respondsToSelector:@selector(beginReceivingRemoteControlEvents)])
[application beginReceivingRemoteControlEvents];
[self becomeFirstResponder];
}
- (BOOL)canBecomeFirstResponder
{
return YES;
}
- (void)remoteControlReceivedWithEvent:(UIEvent *)event {
switch (event.subtype) {
case UIEventSubtypeRemoteControlTogglePlayPause:
[_radioPlayer pause];
break;
case UIEventSubtypeRemoteControlPlay:
[_radioPlayer play];
break;
case UIEventSubtypeRemoteControlPause:
[_radioPlayer pause];
break;
default:
break;
}
}
編集:ドキュメントを読み、手順に従いましたが、まだ機能していません。私が思いついた考えられる理由のいくつかを次に示します。
A. viewDidAppear が呼び出されたとき、私の音楽はまだ再生されていません。ドキュメントには、次のように記載されています
「アプリは「Now Playing」アプリである必要があります。繰り返しますが、アプリがファーストレスポンダーであり、イベント配信をオンにしている場合でも、アプリはオーディオの再生を開始するまでリモート コントロール イベントを受信しません。」
beginReceivingRemoteControlEvents:
電話をかけてみbecomeFirstResponder:
ましたが、音楽の再生が開始された後、これも機能しません。これらは でのみ呼び出すことができますviewDidAppear:
か? iOS は音楽の再生開始を自動的に検出するので、これは必要ありませんか?
B. AVQueuePlayer の使用には奇妙な点があります。イベントメッセージはプレイヤー自体ではなくビューコントローラーによって処理されるため、これはそうではないとほぼ確信しています。