根据Apple's documentation,〜/ Library / Sounds中的声音文件将在尝试播放声音时由系统搜索。如何将声音文件添加到此文件夹?
我试图在运行时写入该文件夹,但没有权限。我在xcode中添加了一个Library / Sounds文件夹,但它似乎没有复制过来。
xcode - >窗口 - >设备,选择我的应用程序和显示容器,文件夹不存在
要添加一些上下文,我正在为解析推送通知执行自定义声音。服务器人告诉我,当向许多用户广播时,为每个用户在有效载荷中发送自定义声音字符串将非常困难。作为一种解决方法,我试图使用单个声音文件,每次用户选择新声音时都会被动态覆盖。
因此,声音文件需要由系统自动检测,并且可以在应用程序的运行时进行修改。将文件添加到主包不起作用,因为它是只读的。我希望〜/ Library / Sound中的文件可以编辑。
我不知道如何继续这一点。任何帮助将不胜感激。
更新: 我错误地尝试使用
在运行时创建目录 try fileManager.createDirectoryAtPath("Library/Sounds", withIntermediateDirectories: true, attributes: nil)
正确的代码应该是
let libraryDir = NSSearchPathForDirectoriesInDomains(NSSearchPathDirectory.LibraryDirectory, NSSearchPathDomainMask.UserDomainMask, true)
let directoryPath = "\(libraryDir.first!)/Sounds"
try fileManager.createDirectoryAtPath(directoryPath, withIntermediateDirectories: true, attributes: nil)
答案 0 :(得分:5)
您拥有的链接适用于Mac!适用于iOS的正确文档应为here
总之,您只需将声音文件作为应用程序包的非本地化资源添加到项目中。
答案 1 :(得分:2)
我也在努力解决这个问题。您必须以编程方式创建Library / Sounds目录并将自定义声音移入其中。
let soundsDirectoryURL = fileManager.urls(for: .libraryDirectory, in: .userDomainMask).first!.appendingPathComponent("Sounds")
//attempt to create the folder
do {
try fileManager.createDirectory(atPath: soundsDirectoryURL.path,
withIntermediateDirectories: true, attributes: nil)
} catch let error as NSError {
print("Error: \(error.localizedDescription)")
}
答案 2 :(得分:0)
我在工作中遇到了完全相同的问题。我建议 -