SwiftUI 播放声音的正确方法

问题描述 投票:0回答:1

我的IOS应用程序在项目中有mp3文件。我使用 AVAudioPlayer 来播放声音。 对于大多数用户和我们所有的测试手机来说,它工作得很好。但一些用户抱怨他们听不到任何声音。我已要求他们确认音量已调高并且设备未静音,他们已经确认了这一点。我还通过试飞向他们发布了一个调试版本,当声音应该播放时打印出一条消息,告诉我是否出现问题。它打印出播放的声音。

我不确定为什么它可以在大多数 IOS 设备上运行,但不能在其他设备上运行。我已经在相同的 IOS 18 版本和 iPhone 版本上进行了测试,其中一位用户看到了它,但我无法重现它。

这是我的播放声音方法。当他们运行调试版本时,他们会看到“声音已播放”。所以我知道它正在找到该文件,并且没有生成异常并且找到了声音文件。 不知道接下来要看什么。

声音文件为mp3,存储在项目根目录中。但我无法想象位置是问题所在,否则我会看到“找不到声音文件”打印出来。

进口粉底 导入AVFoundation 导入 UIKit

public var muteSounds: Bool = false var audioPlayer:AVAudioPlayer?

结构 SoundService {

func playSound(soundfile: String) -> String{
    
    if (!muteSounds) {
        
        if let path = Bundle.main.path(forResource: soundfile, ofType: nil){
            do{
                audioPlayer = try AVAudioPlayer(contentsOf: URL(fileURLWithPath: path))
                audioPlayer?.prepareToPlay()
                audioPlayer?.play()
                return "Sound was played"
            }catch {
                print("Error trying to play sound")
                return("Error trying to play sound")
            }
        } else {
            return "Sound File could not be found"
        }
        
    } else {
        return "Sounds are muted"
    }
 }

}

ios swiftui avaudioplayer
1个回答
0
投票

您可以使用 Subsonic 包代替 AVAudioPlayer,它比 AVAudioPlayer 更容易。您所要做的就是添加包并使用它。

struct ContentView: View {
@StateObject private var sound = SubsonicPlayer(sound: "example.mp3")

var body: some View {
    VStack {
        Button("Start") {
            sound.play()
        }

        Button("Stop") {
            sound.stop()
        }

        Slider(value: $sound.volume)
    }
}

}

有关更多信息,请查看亚音速GitHub页面

© www.soinside.com 2019 - 2024. All rights reserved.