私のアプリでは、バックグラウンドとリモートコントロールを再生できるiPodミュージックライブラリのように音楽を再生したいと思います。remoteControlReceivedWithEventがシングルトンクラスを呼び出さない
私のアプリケーションは:メインページにいくつかの項目を持つテーブルビュー、それは音楽ビューを入力し、ダウンロードmusicsユーザーを表示する音楽アイテムを選択します。このページでは、ユーザーが再生する曲を選択することができます。
シングルプレーヤーでカスタムプレーヤークラスを作成して、ミュージックビューページから離れるイベントを再生できるようにします。今私の問題は、リモートコントロールを実装する方法です。私はApple guideを使ってこの方法を試みました。これは、アプリが音楽の閲覧ページに入っているときに実際に機能し、その後背景に移動します。
ただし、アプリが別のページにあり、音楽が再生されている場合、リモコンは失敗し、何も呼び出しません。
私のコードがかなったようなものです:
は[self.navigationController pushViewController:musicViewController animated:YES];
The MusicViewController has a singleton player, which is like:
@interface FWAudioPlayer : UIViewController// I also tried to subclass of UIResponder, and it didn't work either { NSUInteger currectIndex; NSMutableArray *_urlArray; NSMutableArray *randomArray; AVAudioPlayer *_player; id fwDelegate; } @property (nonatomic, retain) NSMutableArray *urlArray; @property (nonatomic, retain) NSMutableArray *randomArray; @property (nonatomic, retain) AVAudioPlayer *audioPlayer; @property (nonatomic, assign) id fwDelegate; @property (nonatomic, assign) NSUInteger currectIndex; @property (nonatomic, assign) BOOL shuffle; + (id)sharedAudioPlayerWithData:(NSData *)data error:(NSError **)error; + (id)sharedAudioPlayer; @end
アプリは、音楽ビューページを残している、私はちなみにここ
- (void)viewWillDisappear:(BOOL)animated { FWAudioPlayer *fwaudioPlayer = [FWAudioPlayer sharedAudioPlayer]; [fwaudioPlayer becomeFirstResponder]; }
かなっやった、私はすでに設定していますAppDelegate:
[[UIApplication sharedApplication] beginReceivingRemoteControlEvents];
アプリが音楽の表示ページを離れると、[FWAudioPlayer canBecomeFirstResponder]
が呼び出されます。次に、リモコンをクリックすると、[FWAudioPlayer remoteControlReceivedWithEvent:]
は呼び出されません。 その後、AppDelegateでリモートコントロールイベントを受信しようとしました。 AppDelegateでイベントを受け取ることができれば、イベント処理をディスパッチしてシングルトンクラスを呼び出すことができます。しかし、それはAppDelegateで決して呼び出されないようです。
私はここで問題が何であるか知りたいと思います。シングルトンクラスFWAudioPlayer
は実際にはUIViewController
ではありません。アプリのビュー階層の下にありません。さらに、アプリケーションがメインページのような他のページに移動すると、MainViewController
が最初のレスポンダーになり、FWAudioPlayer
はリモートイベントを取得できなくなります。
もし私が正しいのであれば、iPod音楽のような同じ機能を備えた音楽プレーヤーを実装するにはどうすればよいですか?
私の推測が間違っている場合、それを(シングルトンクラス)でリモートイベントを受け取る方法は?
ありがとうございます!