1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

アプリ利用中にバックグラウンド再生中の音楽が小さくならないようにする

Posted at

バックグラウンドで音楽をかけながらiOSアプリを利用中、勝手に音楽が小さくなる現象に遭遇したことはないでしょうか?

バックグラウンドの音楽が小さくなる原因について

音楽が小さくなる原因は、AVAudioSessionの設定にあります。
AVAudioSessioの設定によって、もし起動中のアプリが音を流した場合、バックグラウンドの音楽が小さくなるようになっています。
自分で音を流すような処理を書いていない場合でも、利用しているSDKによっては音に関する処理を行なっていて、その影響で音が小さくなっていることが考えられます。

AVAudioSessionにはCategoryというものがあり、この内容によって再生中の音楽の再生について決定します。
以下にCategoryに関するAppleのリンクがあります。

Category サイレントスイッチで音量オフになるか バックグラウンドの音楽を止めるか
ambient Yes No
soloAmbient(デフォルト) Yes Yes
playback Yes Yes
record Yes Yes
playAndRecord Yes Yes
multiRoute Yes Yes

バックグラウンドの音楽と自分のアプリの音楽をmixして流すのはambientなので、Categoryをambientにしつつ、バックグラウンドの音楽が小さくならないよう、CategoryOptionsを設定します。

対応

CategoryOptionsを追加して音声をコントロールする

バックグラウンド再生中の音楽が小さくなっている原因は、何らかの原因でCategoryOptionsduckOthersになっているが原因と思われます。そこで、AVAudioSessionのOptionをmixWithOthersにすることでバックグラウンドの音楽の音が小さくならないようになります。

CategoryのambientはデフォルトでmixWithOthersが付与されるので、省略しても問題ありません。

        try! AVAudioSession.sharedInstance().setCategory(.ambient)

SDKのドキュメントの確認

自分で音声に関する実装をしていない場合、使っているSDKに原因がある場合があります。
SDKのドキュメントを確認して、SDKごとの対応が必要になる場合もあります。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?