将音频文件保存到用户友好的位置 swift 3 avfoundation
Posted
技术标签:
【中文标题】将音频文件保存到用户友好的位置 swift 3 avfoundation【英文标题】:Save audio file to a user-friendly location swift 3 avfoundation 【发布时间】:2017-03-06 22:23:19 【问题描述】:我正在编写一个简单的录音机应用程序,它可以录制/播放音频(通过 AVFoundation)并将其本地保存到 ios 设备。我找到了几个来源
最初,我希望通过电子邮件 (MessageUI) 发送多个这些保存的音频文件,例如这个简单的示例:https://gist.github.com/kellyegan/49e3e11fe68b5e6b5360 - 虽然最近我觉得也许我应该放弃这个,而只是简单地保存到设备并允许用户以某种方式发送文件。
考虑到这一点,我觉得最好尝试将音频文件保存到对用户更友好的位置。有什么方法可以将这些文件保存在本地,允许用户通过 iOS(在我的应用程序之外)“共享”它们?甚至可能是他们的 iTunes 资料库?这看起来很有希望:iOS - Save audio files to iTunes music library - 但看起来提供的解决方案实际上是用于将图像保存到“相册”
当我打印音频文件的 URL 时,我得到类似的东西
'file:///var/mobile/Containers/Data/Application/AA3E5177-A8C8-4FFA-8EBC-85A2A6844A88/Documents/recording-2017-03-06-12-54.m4a'
我是一个使用 Swift 3 的认真菜鸟,并且肯定使用 AVFoundation - 我非常感谢任何和所有的帮助/建议。提前致谢!
【问题讨论】:
【参考方案1】:'file:///var/mobile/Containers/Data/Application/AA3E5177-A8C8-4FFA-8EBC-85A2A6844A88/Documents/recording-2017-03-06-12-54.m4a'
的 URL 对您来说可能看起来很复杂,但实际上它完全是“用户友好的”。它是应用程序 Documents 文件夹中的一个文件!没有比这更简单的了。
用户永远不会看到有问题的 URL;事实上,在你的应用程序运行之间它甚至不会是相同的。
您的应用程序当然可以为用户提供选择一个或多个文件的界面,并且可以通过 UIActivityViewController 或 UIDocumentInteractionController 使它们可用于共享。
您可能还想查看 UIDocumentPickerViewController 甚至 https://developer.apple.com/library/content/documentation/General/Conceptual/ExtensibilityPG/FileProvider.html
【讨论】:
【参考方案2】:iOS 应用被大量沙盒化。应用程序的 Documents 目录(在您发布的路径上)是此类文件的典型位置。您可以通过在您的Info.plist
文件中添加UIFileSharingEnabled
密钥(应用程序支持iTunes 文件共享)在iTunes 中的应用程序(在用户的计算机上)启用文件共享。
在应用内启用共享的典型方法是使用UIDocumentInteractionController
或UIActivityViewController
。
【讨论】:
以上是关于将音频文件保存到用户友好的位置 swift 3 avfoundation的主要内容,如果未能解决你的问题,请参考以下文章
将用户位置发送到服务器(Web文件)甚至应用程序已关闭或终止或终止iOS Swift