将音频文件保存到用户友好的位置 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 中的应用程序(在用户的计算机上)启用文件共享。

在应用内启用共享的典型方法是使用UIDocumentInteractionControllerUIActivityViewController

【讨论】:

以上是关于将音频文件保存到用户友好的位置 swift 3 avfoundation的主要内容,如果未能解决你的问题,请参考以下文章

如何从解析swift中检索音频文件

将用户位置发送到服务器(Web文件)甚至应用程序已关闭或终止或终止iOS Swift

将字典保存到文件(numpy 和 Python 2/3 友好)

如何在 Swift 中将位置面包屑保存到 CoreData

将音频文件下载到文件管理器需要从本地路径播放

在 tableview Swift 3 中保存并显示录制的语音笔记