このトピックのスレッドはすべて非常に古く(5以上)、明確なMODERNアプローチを形成しているようには見えないので、2020年についてまとめることができれば幸いです(Swift 5、 Xcode 11)。
iOS 1を使用して、iPhone向けの(音楽だけでなく)オーディオプレーヤーアプリを前向きに構築する場合(iOS 14をサポートしないものについては気にしないでください)。 8)未満の場合、要件が次の場合にどのキット/クラスを使用しますか...
それでは、AVAudioPlayerまたはAVPlayerまたはMPMusicPlayerControllerを使用しますか? MPRemoteCommandCenterまたはMPNowPlayingInfoCenter?
おそらくいくつかの要件は相互に排他的であるか、不可能でさえあるかもしれませんが、オーディオ再生を制御する方法が多くあり、ユースケース間に明確な説明がないため、なぜオーディオが音楽か音声かが重要である理由を理解できません、ダウンロードまたはストリーミング。オーディオは明らかにAppleのビデオ、特にスピーチの2番目のクラスの市民ですが、プレイリスト、ポッドキャスト、その他のタイプのオーディオアプリケーションなどの特定のタイプの基本的なアプリケーションには、今のところ方向性があると思います。
私の知る限り、あなたの質問に答えてみます。
アプリはダウンロードされたMP3ファイルをローカルに保存および再生できます(必ずしもストリーミングまたは埋め込まれているとは限りません)。
AVPlayer
またはAVAudioPlayer
を使用できます。 AVPlayer
にはより多くの機能があります。 Appleのドキュメント here でAVPlayer
を確認してください。そして here for AVAudioPlayer
。ユーザーはオーディオ(再生/一時停止/スクラブ/音量)の基本的なプレーヤーコントロールを持っています
AVAudioPlayer
には、再生されるサウンドファイルに対して必要なすべてのコントロールがあります。アプリには、アプリによっていつでも調整できるオーディオキュー(トラック再生の順序)があります。
AVQueuePlayer
を継承するAVPlayer
を使用する必要があります。 Appleのドキュメント here を確認してください。ユーザーは、携帯電話がペアリングされているBluetoothオーディオデバイスでの再生を選択できます。
AVAudioSession
オプション。ドキュメントをチェック ここ 。オーディオはバックグラウンドで再生できます(画面がオフのとき、または別のアプリで)。
BackgroundMode
機能を追加し、オーディオ、エアプレイオプションを確認する必要があります。オーディオはトラックをトリガーし、バックグラウンドでキューを調整できます(ユーザーの操作なし)。
オーディオはネイティブiOSコントロール(RemoteControlEvents)と統合されます。
MPNowPlayingInfoCenter
を使用して情報を更新し、曲のタイトル、アーティスト、アートワークなどを更新できるようにします... Appleのドキュメント here 。MPRemoteCommandCenter
に加えて、イベントをリッスンし、それに応じてプレーヤーを更新します docs 。
アプリのオーディオは、ルートアプリと同じように音楽の再生をオーバーレイできます(これにより、バックグラウンドと「現在再生中」の機能が無効になることを理解していますが、より明確な理由でディスカッションに役立ちますアプリ開発者向けのメソッドを選択する方法
AVAudioSession's
カテゴリオプションで、.mixWithOthers
オプションを追加します。では、AVAudioPlayerまたはAVPlayerまたはMPMusicPlayerControllerを使用しますか? MPRemoteCommandCenterまたはMPNowPlayingInfoCenter?
デバイスライブラリから再生する場合は、MPMusicPlayerController
を使用します。
上記はそのハイライトをまとめたものだと思います。たとえば、これらすべてを一緒に使用するときに気を付けなければならないことがたくさんあります。たとえば、すべてのオプションがすべてのAVAudioSession's
モードで機能するわけではありません。プレーヤーには多くのプロパティがあり、間違ったセットを設定するとプレーヤーが機能しなくなる可能性があります。