2017-06-05 68 views
1

我發現this question,但有點老。看起來他們推薦的the example app目錄訪問不再可用。如何獲取iOS中可用系統聲音的列表?

The Apple documentation似乎沒有我所需要的。

我需要的是能夠列出內置聲音(不提供我自己的聲音),並允許我的應用程序的用戶選擇一個播放。

聽起來很簡單,呃?

UPDATE:

下面是在示例應用程序的相關代碼如下所述:

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

我還沒有嘗試過的代碼,但這看起來應該給你你想要的:https://github.com/TUNER88/iOSSystemSoundsLibrary – DonMag

+0

謝謝。這是我指出的應用程序。它應該列出庫目錄中的聲音文件,但是當我在iOS 10或更高版本中運行它時,我什麼也得不到。 –

+1

是的,經過多一點閱讀,代碼可能只能在越獄......不知道你可以從系統聲音中得到什麼,基於蘋果公司文檔的註釋:** **注** **系統提供警報聲音和系統提供的用戶界面聲音效果不適用於您的iOS應用程序。例如,使用kSystemSoundID_UserPreferredAlert常量作爲AudioServicesPlayAlertSound函數的參數將不會播放任何內容。' – DonMag

回答

1

閱讀本文,您可以找到獲取系統聲音文件列表的代碼 - 但只能在「越獄」設備上使用。

在此基礎上一份關於蘋果的文檔(link),這聽起來像(抱歉的雙關語)我們不會有多少運氣在試圖訪問「內部」的聲音片段:

系統提供的警報聲音和系統提供的用戶界面聲音效果不適用於您的iOS應用程序。例如,使用kSystemSoundID_UserPreferredAlert常量作爲AudioServicesPlayAlertSound函數的參數將不會播放任何內容。