Как поделиться аудио-файлом в приложении, используя 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)
}