4
0

More than 3 years have passed since last update.

iOSで広告を実装すると、ミュージックアプリのBGMが止まってしまう場合の対処法

Posted at

概要

広告を実装したアプリを使っていると、裏でミュージックアプリで流している音楽が止まる場合があります。
その対処法になります。

音楽が止まる理由

iOSでアプリが音声を発する場合、デフォルトではアプリが音声を発した場合に他の音声を中断する となっています。
そのため、広告を実装したことにより、何かの拍子で広告側が音楽をコントロールしようとして、その結果ミュージックアプリが流す音楽が止まるといったことが考えられます。

音楽が止まる問題の対処

自分のアプリで音声再生を行ったとしても中断しないようにします。
一番簡単な方法はCategoryの変更です。

iOSには AudioSessionというものがあり、アプリやOS間での音声のコントロールをしています。
AudioSessionにはCategoryというものがあり、ここでサイレントスイッチONで無音になるか他の音声の中断をするか、が決定されます。
このCategoryを、アプリが音声を発した場合に他の音声を中断しないように設定することでミュージックアプリの音声の中断を行わないようにします。

このCategoryのデフォルト値は .soloAmbient となっており、他の音楽を中断するものになっています。

ですので、このカテゴリを音声を中断しないものに変更すればいいわけです。
以下、簡単な表になりますが、他の音声を中断しないものは .ambient になるので、Categoryを.ambientに変更します。

AVAudioSession.Category サイレントスイッチONで無音になるか 他の音声の中断をするか
.ambient Yes No
.soloAmbient (Default) Yes Yes
.playback No Yes
.record No Yes
.playAndRecord No Yes
.multiRoute No Yes

公式のカテゴリの一覧はこちらです。

Categoryの変更

以下のコードでCategoryを変更すると、アプリの音声再生でミュージックアプリの音楽が中断するのを防げます。

        do {
            try AVAudioSession.sharedInstance().setCategory(.ambient)
            try AVAudioSession.sharedInstance().setActive(true, options: [])
        } catch {
        }
4
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
4
0