8

私はこれに2日間費やしましたが、どこにも行きませんでした。[MPMusicPlayerController applicationMusicPlayer] を使用して、ユーザーの iPod ライブラリから選択したオーディオを再生し、バックグラウンドで実行し、リモート イベントをサポートしようとしています。実際に音楽を再生するのは簡単です。インスタンスを取得し、曲を選択し、ミュージック キューを割り当てて再生します。やった、やった。しかし... a) バックグラウンドで再生することができず、b) フォアグラウンドにいても、リモート コントロール イベントをまったく動作させることができません!

そして、あなたが尋ねる前に、はい、私は plist エントリ、オーディオ セッション カテゴリ、リモート イベントの取得に興味があることを伝える呼び出しを設定し、それらをリッスンする最初の応答者を設定しました。私が見つけることができた主題に関するすべてのドキュメントを読みました* (*このトピックについてまったく明確ではなく、サンプルコードがないことでAppleを責めます!)それに関連する WWDC ビデオ (サンプルからコードを正確にコピーするために画面をフリーズすることさえあります...) したがって、このリストにないものを見逃していない限り、これらの回答のいずれかを返信しても役に立ちません。

もう1つ...ドキュメントによると、アプリケーションセッションを使用しないMPMusicPlayerControllerの使用について明示的に話しています。常にシステム セッションを使用します。(それ自体が私の質問に答えるかもしれませんが、ドキュメントはそれを明確に言っていないので、よくわかりません。したがって、この質問です。)

そうは言っても、2日経った私の考えは次のとおりです。

  1. MPMusicPlayerController を使用する場合、呼び出すメソッドや設定する plist エントリに関係なく、アプリがバックグラウンドで実行されることはありません。限目。ipodMusicPlayer インスタンスを使用すると、音楽が再生され続けますが、これは再生しているのはアプリではなく iPod であるためです。代わりに applicationMusicPlayer インスタンスを使用すると、バックグラウンドに移行すると音楽が停止します。どちらの場合も、アプリは中断されています。

  2. ipodMusicPlayer インスタンスまたは applicationMusicPlayer インスタンスの使用に関係なく、すべてのリモート イベントは、明示的に要求した場合でも、iPod アプリケーションではなく、iPod アプリケーション自体に送信されます。applicationMusicPlayer インスタンスを使用していて、リモコンを使用して「再生」を選択すると、iPod アプリがコマンドを受信するため、オーディオがダックアウトして中断され、iPod アプリで再生が開始されます。代わりに ipodMusicPlayer を選択した場合は、基本的にリモート イベントを実際に受信する iPod アプリをリモートで制御することに関心があるだけであると明示的に述べているため、もちろん問題ではありません。

  3. 下部にあるクイック スイッチ コントロールのアイコンがアプリのアイコンに変わることはありません。これは、アプリが実際にイベントを受信するように設定されていないためです。iPod アプリケーションは、そのアイコンがそこに表示される理由です。

だから私が知りたいのは... 私はここで間違っていますか? MPMusicPlayerController の使用に成功し、リモート イベントを傍受できた人はいますか? バックグラウンド ミュージックをサポートする applicationMusicPlayer を使用して、ユーザーの iPod をいじらないようにしたいのですが、より大きな問題はリモート コントロール通知です。つまり、ipodMusicControl を使用し、アプリをフォアグラウンドに保持してそれらをインターセプトする必要がある場合です。メッセージ、それでいいです。それは醜いですが、少なくともそれは何かです。

コード例、または少なくとも組み込みのアプリ テンプレートの 1 つに対する明示的な手順は、非常に高く評価されます。(実装さえ必要ありません...ただの手順です。うまくいけば、人々が質問に答え続ける避けられない「それはまだNDAの下にあります」ということをなだめるでしょう。)

マーク

4

2 に答える 2

8

私はそれを解決しました。情報はここにある私の他の質問にあります...

Stack Overflow:リモコンイベントを受信しながらiPodの音楽を再生する

...しかし、短いバージョンでは、ライブラリから取得したMPMediaItemのアセットURLでAVPlayer(AVAudioPlayerではありません。理由はわかりません!)を使用してから、オーディオセッションのカテゴリを再生可能に設定する必要があります(有効にしないでください)。混合可能です!)そして、適切なキーをinfo.plistファイルに追加して、アプリがバックグラウンドオーディオをサポートすることをOSに通知します。

これにより、iPodライブラリからアイテムを再生し(何らかの理由でAudible.comファイルを除く!)、リモートイベントを取得できます。確かに、さらに作業を行う必要があります。これは、iPodアプリとは別のオーディオプレーヤーであり、iPodアプリを中断するためです(これは望ましい場合と望ましくない場合があります。また、ミキシングを有効にしないでください。有効にしないと、iPodアプリがハイジャックします。リモートコントロールイベント)が、それらは休憩です!

于 2010-07-09T06:33:33.503 に答える
2

知りたい人のために、バックグラウンドでオーディオを再生することがわかりました。オーディオセッションのカテゴリを再生可能に設定する必要があり、バックグラウンドオーディオは問題なく機能します。同時に独自のサウンドも再生したい場合は、カテゴリをミックス可能としてマークする必要があります。これでBGMの部分は解決しました。しかし、iPod の再生中はいつでも、リモート通知を受け取ることができないようです。

これが更新されたスレッドです...

アプリでリモート コントロール イベントを受信しながら、iPod アプリから音楽を再生するにはどうすればよいでしょうか?

M

于 2010-07-07T02:55:13.617 に答える