Как поделиться аудио-файлом в приложении, используя Swift 3?

Совместное использование аудиофайла в Swift

Как поделиться аудиофайлом, который существует в каталоге документов моих приложений, с другими приложениями?

Чтобы прояснить этот вопрос, я имею в виду, что когда пользователь нажимает кнопку " Поделиться" в приложении, он должен иметь возможность отправить записанную аудиодорожку по электронной почте другому лицу или, в качестве альтернативы, отправить ее в другие приложения, которые может обрабатывать аудио, как, возможно, Soundcloud.

Исследуя тему, я нашел:

  • UIActivityViewController
  • UIDocumentInteractionController

Поскольку мое приложение делает аудиозапись голоса человека, которым он должен поделиться, и, несмотря на поиск через переполнение стека, я не смог найти пример кода того, как именно эта опция может быть реализована в приложении Swift. Могу ли я запросить предложения и пример кода о том, как это можно сделать. Большое спасибо,

2 ответа

Swift 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)

Мой ответ использует для этого с UIDocumentInteractionController.

Я начинаю с создания экземпляра UIDocumentInteractionController в верхней части моего класса

var controller = UIDocumentInteractionController()

Затем я связываю IBAction с кнопкой "Поделиться" на моем перо или раскадровке:

@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)     
}
Другие вопросы по тегам