-(void)loadAudioFileList
{
audioFileList = [[NSMutableArray alloc] init];
arrAudioList = [[NSMutableArray alloc] init];
NSFileManager *fileManager = [[NSFileManager alloc] init];
NSURL *directoryURL = [NSURL URLWithString:@"/System/Library/Audio/UISounds"];
NSArray *keys = [NSArray arrayWithObject:NSURLIsDirectoryKey];
NSDirectoryEnumerator *enumerator = [fileManager
enumeratorAtURL:directoryURL
includingPropertiesForKeys:keys
options:0
errorHandler:^(NSURL *url, NSError *error) {
// Handle the error.
// Return YES if the enumeration should continue after the error.
return YES;
}];
for (NSURL *url in enumerator)
{
NSError *error;
NSNumber *isDirectory = nil;
if (! [url getResourceValue:&isDirectory forKey:NSURLIsDirectoryKey error:&error])
{
// handle error
}
else if (! [isDirectory boolValue])
{
[audioFileList addObject:url];
[arrAudioList addObject:[url lastPathComponent]];
}
}
}
我使用上面的代码获取可用的系统音频文件。我可以使用以下代码在应用程序处于前台时播放通知声音。
SystemSoundID soundID;
AudioServicesCreateSystemSoundID((__bridge_retained CFURLRef)fileURL,&soundID);
AudioServicesPlaySystemSound(soundID);
但是如果app在后台我无法播放声音。我谷歌的解决方案,但我没有找到任何。据我所知,如果我们将声音文件包含到我们的应用程序包中,即使应用程序处于后台但我们也能够播放通知声音但系统声音我们无法实现相同的效果。 任何帮助将不胜感激。