Apple音效框架AudioToolbox
Apple音效框架AudioToolbox

Apple音效框架AudioToolbox

AudioToolbox 是 Apple 提供的音频框架,用于在 iOS、macOS、watchOS 和 tvOS 设备上进行音频处理。它提供了底层 API 以处理音频流、音效、音乐播放等功能。

AudioToolbox 的主要功能

1、播放系统音效

例如震动、UI 按键点击音、提示音等:

import AudioToolbox

AudioServicesPlaySystemSound(1000) // 播放系统音效(1000是音效 ID)

常见系统音效 ID

1000:新邮件提示音

1304:相机快门音

4095:震动

2、播放短音效

AudioServicesPlaySystemSound 适用于短时间音效:

var soundID: SystemSoundID = 0
let soundURL = Bundle.main.url(forResource: "click", withExtension: "wav")!
AudioServicesCreateSystemSoundID(soundURL as CFURL, &soundID)
AudioServicesPlaySystemSound(soundID)

3、播放长音频文件

用于背景音乐或较长的音频播放,需使用 AVAudioPlayer(推荐):

import AVFoundation

var player: AVAudioPlayer?

func playSound() {
    if let url = Bundle.main.url(forResource: "music", withExtension: "mp3") {
        player = try? AVAudioPlayer(contentsOf: url)
        player?.play()
    }
}

4、录音功能

需要 AVAudioRecorder 进行录音:

import AVFoundation

let settings = [
    AVFormatIDKey: kAudioFormatMPEG4AAC,
    AVSampleRateKey: 44100,
    AVNumberOfChannelsKey: 2
]

let url = FileManager.default.temporaryDirectory.appendingPathComponent("recording.m4a")
let recorder = try AVAudioRecorder(url: url, settings: settings)
recorder.record()

什么时候用 AudioToolbox?

短音效(如 UI 按键、警告音):用 AudioServicesPlaySystemSound

震动反馈:用 AudioServicesPlaySystemSound(4095)

背景音乐、长音频:推荐用 AVAudioPlayer

录音:用 AVAudioRecorder

AudioToolbox 相关问题

AudioServicesPlaySystemSound 无效?

1、检查设备静音(iPhone 物理静音开关)

2、检查音量

3、确保使用的是 .caf / .wav / .aiff 格式

4、使用物理设备测试(模拟器可能无效)

AudioToolbox 崩溃?

如果遇到 AudioToolbox 相关的 EXC_BAD_ACCESS 或 SIGABRT,可能是:

SystemSoundID 释放前被调用

AudioSession 没有正确初始化

总结

AudioToolbox 主要用于短音效和系统音

对于长音频播放或录音,推荐用 AVFoundation

震动反馈也可以通过 AudioToolbox 处理

如果崩溃日志和 AudioToolbox 无关,那它可能只是加载的一个系统库,实际崩溃点应该还是 clearFullRowsAndColumns() 方法。

相关文章

Apple播放音频的AVAudioPlayer:https://fangjunyu.com/2025/03/09/apple%e6%92%ad%e6%94%be%e9%9f%b3%e9%a2%91%e7%9a%84avaudioplayer/

扩展知识

常见系统音效ID

在 iOS/macOS 开发中,使用 AudioToolbox 框架的 SystemSoundID 可以播放系统提供的内置音效。常见的系统音效 ID 包括:

如果您认为这篇文章给您带来了帮助,您可以在此通过支付宝或者微信打赏网站开放者。

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注