3

在 Swift 中共享音频文件

如何将我的应用程序文档目录中存在的音频文件共享给其他应用程序?

为了详细说明这个问题,我的意思是当用户点击应用程序中的共享按钮时,他们应该能够将他们录制的音轨通过电子邮件发送给另一个人,或者能够将其发送到一系列其他应用程序可以像 soundcloud 一样处理音频。

研究这个话题,我发现:

  • UIActivityViewController
  • UIDocumentInteractionController

由于我的应用程序录制了一个人的声音,他们应该能够分享,并且尽管通过堆栈溢出进行搜索,但我无法找到一个代码示例,说明如何在 Swift 应用程序中实现此选项。我可以请求有关如何完成此操作的建议和示例代码吗?非常感谢,

4

2 回答 2

8

斯威夫特 3.x:

        let activityItem = URL.init(fileURLWithPath: Bundle.main.path(forResource: "fileName", ofType: "mp3")!)

        let activityVC = UIActivityViewController(activityItems: [activityItem],applicationActivities: nil)
        activityVC.popoverPresentationController?.sourceView = self.view

        self.present(activityVC, animated: true, completion: nil)
于 2017-06-23T22:25:21.460 回答
0

我的答案是使用 UIDocumentInteractionController 来执行此操作。

我首先在班级顶部实例化一个 UIDocumentInteractionController

var controller = UIDocumentInteractionController()

然后我将 IBAction 链接到我的 nib 或 Storyboard 上的共享按钮:

@IBAction func SHARE(_ sender: Any) {
    let dirPath: String = NSSearchPathForDirectoriesInDomains(.documentDirectory,
                                                      .userDomainMask,
                                                      true)[0]
    let recordingName = UserDefaults.standard.string(forKey: "recordingName")
    let pathArray: [String] = [dirPath, recordingName!]
    let filePathString: String = pathArray.joined(separator: "/")
    controller = UIDocumentInteractionController(url: NSURL(fileURLWithPath: filePathString) as URL)
    controller.presentOpenInMenu(from: CGRect.zero,
                                 in: self.view,
                                 animated: true)     
}
于 2017-01-13T16:41:34.777 回答