iOS - 系统提醒短音频

时间:2023-03-08 17:38:14

Demo下载地址

iPhone端系统Audio资源路径:/System/Library/Audio/UISounds

首先,通过 NSFileManager 获取资源路径下的所有路径(文件夹/文件)

    NSFileManager * fileManager = [NSFileManager defaultManager];
NSURL * _soundDataURL = [NSURL URLWithString:@"/System/Library/Audio/UISounds"];
NSDirectoryEnumerator * _soundDirectoryEnum = [fileManager enumeratorAtURL:_soundDataURL
includingPropertiesForKeys:@[NSURLIsDirectoryKey]
options:0
errorHandler:^BOOL(NSURL * _Nonnull url, NSError * _Nonnull error) {
return YES;
}];

接着遍历枚举,然后获取系统音频的SoundID:

/*!
@typedef SystemSoundID
@abstract SystemSoundIDs are created by the System Sound client application
for playback of a provided AudioFile.
*/
typedef UInt32 SystemSoundID;

通过使用 AudioServicesCreateSystemSoundID 方法:

/*!
@function AudioServicesCreateSystemSoundID
@abstract Allows the application to designate an audio file for playback by the System Sound server.
@discussion SystemSoundIDs are used passed to
AudioServicesPlayAlertSound() & AudioServicesPlaySystemSound(),
designating the audio data to be played by the System Sound server.
@param inFileURL
A CFURLRef for an AudioFile.
@param outSystemSoundID
Returns a SystemSoundID.
*/
extern OSStatus
AudioServicesCreateSystemSoundID( CFURLRef inFileURL,
SystemSoundID* outSystemSoundID)

获取SoundID后,最后,使用 AudioServicesPlaySystemSound 播放这个SoundID 音频:

AudioServicesPlaySystemSound(SystemSoundID inSystemSoundID)