現在、iOS 4用に開発しているアプリのバックグラウンドオーディオを設定しようとしています。viewController
ただし、Pandoraなどの他のバックグラウンドオーディオアプリとは異なり、アプリには専用の音楽プレーヤーがありません。紛らわしい。
適切なInfo.plist
設定を正しく設定AVAudioPlayer
し、アプリデリゲートにどこからでもアクセスできるオブジェクトがあります。AVAudioPlayer
ユーザーが曲を再生するときに、曲で初期化された新しい曲に置き換えて再生します。これはすべてうまく機能しますが、リモートコントロールイベントをサポートする方法がわかりません。
Appleのドキュメントに基づいて、私はこれを持っています:
- (void)viewDidAppear:(BOOL)animated {
[super viewDidAppear:animated];
[[UIApplication sharedApplication] beginReceivingRemoteControlEvents];
[self becomeFirstResponder];
}
- (void)viewWillDisappear:(BOOL)animated {
[super viewWillDisappear:animated];
[[UIApplication sharedApplication] endReceivingRemoteControlEvents];
[self resignFirstResponder];
}
- (BOOL)canBecomeFirstResponder {
return YES;
}
- (void)remoteControlReceivedWithEvent:(UIEvent *)event {
switch(event.subtype) {
case UIEventSubtypeRemoteControlTogglePlayPause:
if([iPhoneAppDelegate backgroundAudioPlayer].playing)
[iPhoneAppDelegate pauseBackgroundAudioPlayer];
else
[iPhoneAppDelegate playBackgroundAudioPlayer];
break;
}
}
問題は、これをどこに置くかということです。Appleのドキュメントでは、これはどこかのView Controllerに組み込まれるべきだと示唆されているようですが、私のアプリには多くのViewControllerとNavigationControllerがあります。これをどこに置いても、何らかの理由でマルチタスクトレイのリモコンの[再生/一時停止の切り替え]ボタンをタップすると、曲が一時停止してから一時停止が解除されるか、何らかの理由で曲が2回再生されます。