如何在iOS中获取可用系统声音列表?

时间:2017-06-05 13:01:37

标签: ios swift audio

我找到this question,但它有点老了。看起来他们推荐的the example app目录访问不再可用。

The Apple documentation似乎也没有我需要的东西。

我需要的是能够列出内置声音(不提供我自己的声音),并允许我的应用的用户选择一个播放。

听起来很简单,嗯?

更新:

以下是下面提到的示例应用中的相关代码:

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];
    }
}

问题是枚举器总是空的。我怀疑这可能是安全/沙箱问题。

1 个答案:

答案 0 :(得分:3)

阅读此内容,您可以找到获取系统声音文件列表的代码 - 但仅限于“越狱”设备。

根据关于A​​pple文档(link)的这一说明,听起来像(对不起双关语)我们在尝试访问“内部”声音片段时不会有太多运气:

  

注意您的iOS应用程序无法使用系统提供的警报声和系统提供的用户界面声音效果。例如,使用kSystemSoundID_UserPreferredAlert常量作为AudioServicesPlayAlertSound函数的参数将不会播放任何内容。