iPhone バックグラウンドでオーディオを再生する

インターネットラジオ用のiPhoneクライアントの作成に関するこの小さなガイドを誰かが手伝ってくれることを願っています。 最近、私はこれを書く必要がありました。 自己教育目的のため。 将来的にはこのトピックをできる限り幅広くカバーするようにしますが、今は、現在よりも困難になった特定のポイント、つまりバックグラウンドでラジオを流すことに焦点を当てたいと思います。

これを行うには、いくつかの簡単な操作が必要です。
まず、「ホーム」をクリックした後でも音楽を再生する必要があることをアプリケーションに通知する必要があります
これは、プロジェクトのInfo.plistファイルで行われます。

Project Navigatorでファイルを選択します
画像

空の場所を右クリックして、「行を追加」を選択します
画像

[キー]フィールドに「必須のバックグラウンドモード」と入力し、
画像

これにより、配列が作成されます。最初の要素の値として「App plays audio」を追加します。
画像

すべて、私たちのプログラムは、バックグラウンドで完全に眠ってはならないが、音楽を再生し続ける必要があることを知っています。
同じことを行う別の簡単な方法は、Info.plistを通常のエディター(実際には単なるXMLファイル)で開き、追加することです。
<key>UIBackgroundModes</key> <array> <string>audio</string> </array> 


プレーヤーを初期化します。
一般に、iOS SDKにはサウンドを操作するためのいくつかの異なるクラスがあります。 最初はAVQueuePlayerを使用し、その後、 AVPlayerを最も柔軟なものとして優先することにしました。
いずれにせよ、 AVFoundationはオーディオを扱うのに役立ちます。

 - (void)viewDidLoad { [super viewDidLoad]; // Convert the file path to a URL. NSString *urlAddress = @"http://www.example.com/stream"; //Create a URL object. NSURL *urlStream = [NSURL URLWithString:urlAddress]; AVPlayer *player = [[AVPlayer alloc] initWithURL:urlStream]; //Starts playback [player play]; } 


セッションを作成します:
  //   ,      . [[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayback error:nil]; 


基本的にこれですべてです。プレーヤーはバックグラウンドで作業できます。 「ホーム」をクリックすると、プログラムを最小化できます。音楽は停止しません。

そして最も重要な点:何らかの理由で、バックグラウンドオーディオの再生はシミュレーターでは機能しないため、デバイスで実行してテストすることが必須です。

Source: https://habr.com/ru/post/J121186/


All Articles