Swift 4 音频与 Whatsapp 共享

Posted

技术标签:

【中文标题】Swift 4 音频与 Whatsapp 共享【英文标题】:Swift 4 Audio share with Whatsapp 【发布时间】:2017-10-24 12:36:42 【问题描述】:

我想通过 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()

谢谢。

【问题讨论】:

您需要先下载您的 mp3 数据,将其保存在您的应用本地,然后使用 UIDocumentInteractionController 将其分享到 WhatsApp 嗯,如何下载mp3数据? 这里有完整的例子***.com/a/46457518/2303865 【参考方案1】:

在您的paylas 函数中,您尝试共享String,但它实际上应该是URL。问题也在这里得到解答:How do I share an Audio File in an App using Swift 3?

@IBAction func paylas(_ sender: Any) 
    let url: [Any] = [audioFileURL]
    let avc = UIActivityViewController(activityItems: url, applicationActivities: nil)
    self.present(avc, animated: true)

更新

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

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

【讨论】:

我试过但同样的问题。它再次发送链接。 您至少应该提及添加到您的答案中的此信息来自何处 直到现在我才看到你的评论。我不是故意用你的评论来回答我的,对不起。 :) 我应该提到你还是你会创建自己的答案? @Yannick 那不是真的我已经删除了我的评论与那个链接 顺便说一句,你需要告诉 OP 在异步下载数据后他需要从主线程共享它

以上是关于Swift 4 音频与 Whatsapp 共享的主要内容,如果未能解决你的问题,请参考以下文章

Swift中的WhatsApp等音频消息播放器[关闭]

如何在 iOS Swift 中与 UIActivityViewController 共享的 WhatsApp 中设置不同的参数?

如何在 iOS 中使用 swift 共享远程音频文件

通过 UIActivityViewController 与 WhatsApp 共享时按钮中的文本颜色错误

实现共享位置地点选择器,与没有地点选择器的 WhatsApp 相同,因为它已被弃用

关闭并重新打开我的应用程序后无法从 URI 播放音频