Ios 与Whatsapp共享Swift 4音频

Ios 与Whatsapp共享Swift 4音频,ios,swift,whatsapp,Ios,Swift,Whatsapp,我想通过WhatsApp共享音频(.mp3)文件。我使用UIActivityViewController,但它只是共享mp3文件链接,而不是文件。如何将文件共享给WhatsApp? 这是我的代码: @IBAction func playTusu(_ sender: Any) { let url = URL(string: "https://freesound.org/data/previews/405/405511_2731495-lq.mp3")! let playerIte

我想通过WhatsApp共享音频(.mp3)文件。我使用UIActivityViewController,但它只是共享mp3文件链接,而不是文件。如何将文件共享给WhatsApp? 这是我的代码:

 @IBAction func playTusu(_ sender: Any) {
    let url = URL(string: "https://freesound.org/data/previews/405/405511_2731495-lq.mp3")!
    let playerItem = CachingPlayerItem(url: url)

    playerItem.delegate = self

    player = AVPlayer(playerItem: playerItem)
    player.automaticallyWaitsToMinimizeStalling = false
    player.play()

}

@IBAction func paylas(_ sender: Any) {
    let url: [Any] = ["https://freesound.org/data/previews/405/405511_2731495-lq.mp3"]
    let avc = UIActivityViewController(activityItems: url, applicationActivities: nil)
    self.present(avc, animated: true)
}


override func didReceiveMemoryWarning() {
    super.didReceiveMemoryWarning()

谢谢。

在您的
paylas
函数中,您试图共享一个
字符串
,但实际上它应该是一个
URL
。这里也回答了这个问题:

更新

问题是你有一个文件,但你只有音频的URL


正如@Leo Dabus在评论中提到的,您必须先下载音频并创建一个文件。看看这个问题。您还必须等待音频下载完成。然后,您可以共享该文件。确保在UI/主线程上执行此操作。

我尝试过,但遇到了相同的问题。它再次发送了just链接。您至少应该提到添加到您答案中的信息来自何处。我直到现在才看到您的评论。我不是想用你的评论来回答我的问题,对不起我应该提到你还是你会创造你自己的答案?@Yannick那不是真的,我已经用链接删除了我的评论。顺便说一下,你需要告诉OP,在异步下载数据后,他需要从主线程共享数据。你需要先下载mp3数据,将其保存在您的应用程序本地,并使用UIDocumentInteractionController将其共享给WhatsApp。嗯,我如何下载mp3数据?请在此完成示例
@IBAction func paylas(_ sender: Any) {
    let url: [Any] = [audioFileURL]
    let avc = UIActivityViewController(activityItems: url, applicationActivities: nil)
    self.present(avc, animated: true)
}