私は、ユーザーの iPod ライブラリから音楽を再生することを組み込んだ iPhone iOS4 アプリケーションに取り組んでいます。また、再生された曲を追跡し、バックグラウンドでもランダムに曲を変更できるようにしたいと考えています。そこで、次を使用して音楽プレーヤーを設定しました。
[self setMusicPlayer: [MPMusicPlayerController iPodMusicPlayer]];
ここで、このアプリケーションを引き続き実行し、バックグラウンドで音楽を再生したいので、次のように設定しました。
Required background modes: App plays audio
私が抱えている問題は、アプリケーションがバックグラウンドに移動したとき (applicationDidEnterBackground が呼び出されたとき、つまりアプリの切り替え時) にアプリケーションが制御を失うことです。私は iPodMusicPlayer を使用しているため、音楽は引き続き再生されますが、私のアプリは制御できないため、曲を追跡または変更できません。
現在、Apple のドキュメントには、この必須のバックグラウンド モード タグを使用してアプリケーションをバックグラウンドで実行し続ける必要があると記載されていますが、私の場合はそうではありません。MPMusicPlayerを使っているからでしょうか?それを回避する方法はありますか?何か案は?
PS。また、リモートでロックされたマルチタスクの iPod コントローラをアプリケーションで動作させることも試みています。以下のコードを使用していますが、remoteControlReceivedWithEvent が呼び出されることはありません。MPMusicPlayerで動作しますか? 私は AVAudioPlayer でしか見たことがありません。
- (void)remoteControlReceivedWithEvent:(UIEvent *)event {
NSLog(@"remoteControlReceivedWithEvent");
switch (event.subtype) {
case UIEventSubtypeRemoteControlTogglePlayPause:
NSLog(@"Play Pause");
break;
case UIEventSubtypeRemoteControlNextTrack:
NSLog(@"Next");
break;
default:
break;
}
}
- (BOOL)canBecomeFirstResponder {
NSLog(@"canBecomeFirstResponder");
return YES;
}
- (void) viewWillAppear:(BOOL)animated{
[[UIApplication sharedApplication] beginReceivingRemoteControlEvents];
[self becomeFirstResponder];
}