しょぼしょぼプログラマ雑記

自分のための備忘録。 開発記録など掲載してます。 質問・ご意見・ご感想等はTwitter ( https://twitter.com/yun_hokuto ) までお気軽にどうぞ。

アプリの音声再生をバックグラウンドで再生させ続ける設定など

アプリで音声を再生させることは割りとあります

アプリがホームボタン押下によってバックグラウンドに行った際にも再生を続けたい場合等があると思います
(主にミュージックアプリなど)

iOS8からは正しく設定しないと起動しない or 予期せぬ挙動をする ということが出てきます

その際に設定する項目に「info.plist」があります

このファイルに設定するキー項目を下記の画像でご説明します

f:id:yun_hokuto:20150106155255j:plain

画像に記載してありますが、下記のような感じになります

キー項目Required background modes
App plays audio or streams audio/video using AirPlay

この値は音楽以外に動画(ムービー)をバックグラウンド再生させる場合も使うようです

他のキー項目については、こちらのサイト様が参考になるかと思います

ただし、これには注意が必要です。

まず1つ、オーディオセッションにバックグラウンドを設定する ということです

具体的には下記の方な感じです

// オーディオセッションのアクティベート
AVAudioSession *audioSession = [AVAudioSession sharedInstance];
[audioSession setActive:YES error:nil];
// オーディオセッションカテゴリを設定
[audioSession setCategory:AVAudioSessionCategoryPlayback error:nil];

いつもの如く、エラー処理はすっ飛ばしてますので各自で入れてください

もう1つ、シミュレータではinfo.plistを設定して居なくてもバックグラウンドで音がなる ということです

音声系はシミュレータでできることがかなり限られています

こちらは下記のようなことができません

  • 割り込みを起こす
  • サイレントスイッチの設定を変更する
  • 画面のロックをシミュレートする
  • ヘッドセットの抜き差しをシミュレートする
  • 音声信号の経路情報を問い合わせる、あるいはオーディオセッションのカテゴリに応じた振る舞いを確認する
  • 音声合成の動作をテストする - たとえば、「ミュージック(Music)」など他のアプリケーションの 音声を合成して再生する

出展:Apple Audio Sessionプログラミングガイド

音声系のアプリを作る際は、システムなどの割込を考慮した作りが必要になりますが、シミュレータでは検証できません

ですのでアプリを実機にいれての検証が必要になってくるかと思います。

今回はこんなかんじで。