在Swift中,当我的应用程序打开时,如何让其他应用程序继续播放音频?

Mic*_*rke 5 iphone audio ios swift

我环顾四周,发现了类似的问题,但没有什么相同......如果我在某个地方错过了答案,我会道歉.

我正在使用SpriteKit完成我在Swift中编写的游戏.

我玩过的大多数其他游戏,我可以在背景中播放音乐或者播放音乐,并且在玩游戏时仍能听到它.

在我玩游戏时,我注意到它会自动关闭来自其他应用程序的音频.

我没有使用AVAudioPlayer声音,因为我目前只有少量的音频效果,所以我只是使用SKAction.playsoundfilenamed动作.

我确实有逻辑可以打开和关闭我的声音,但这只是使用一些内部的if/else逻辑.

我想知道是否有一些AVAudio我可以设置的属性,允许其他应用音频在我的开放时继续播放?我在文档中找不到这个.

谢谢!

hel*_*tan 5

将您的AVAudioSession类别设置为Ambient.

import AVFoundation.AVAudioSession

AVAudioSession.sharedInstance().setCategory(AVAudioSessionCategoryAmbient, error: nil)
Run Code Online (Sandbox Code Playgroud)

此类别也适用于“一起演奏”风格的应用程序,例如用户在音乐应用程序播放时演奏的虚拟钢琴。当您使用此类别时,来自其他应用程序的音频会与您的音频混合。您的音频通过屏幕锁定和静音开关(在 iPhone 上称为响铃/静音开关)静音。


Emi*_*old 5

在Xcode 8.2.1,Swift 3(最新语法)中,这对我有用:

import AVFoundation

override func viewDidLoad() {
    super.viewDidLoad()

    let audioSession = AVAudioSession.sharedInstance()
    do {
        try audioSession.setCategory(AVAudioSessionCategoryPlayback, with: [.mixWithOthers])
        try audioSession.setActive(true)
    }catch{
        // handle error
    }

    // the rest of your code
}
Run Code Online (Sandbox Code Playgroud)