バックグラウンド再生を試してみました。
mp3をフォアグラウンドで再生
まずはフォアグラウンドでmp3を再生してみます。
再生したいmp3ファイルをAssets.xcassetsに追加して下さい。
そのあと下のようにmp3再生処理を記述すれば完了です。
import UIKit import AVFoundation class ViewController: UIViewController { var player: AVAudioPlayer? override func viewDidLoad() { if let sound = NSDataAsset(name: "bgm") { player = try? AVAudioPlayer(data: sound.data) player?.play() // → これで音が鳴る } } }
mp3をバックグラウンドで再生
次はアプリをバックグラウンドにしても再生し続ける方法を試します。
まずはCapabilitiesのBackground ModesをONにして、Audio Airplay and Picture in Pictureにチェックを入れます。
その後、AppDelegateなどに下2行を追加すれば完了です。
try? AVAudioSession.sharedInstance().setCategory(AVAudioSessionCategoryPlayback, with: .mixWithOthers) try? AVAudioSession.sharedInstance().setActive(true)
import UIKit import AVFoundation @UIApplicationMain class AppDelegate: UIResponder, UIApplicationDelegate { var window: UIWindow? func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool { try? AVAudioSession.sharedInstance().setCategory(AVAudioSessionCategoryPlayback, with: .mixWithOthers) try? AVAudioSession.sharedInstance().setActive(true) return true } }
これでアプリがバックグラウンドに移動してもbgmが再生されます。
シミュレータでは上の処理を追加してもバックグラウンド再生されないので注意が必要です。