Ios 通过xcode(swift)中的iMessage应用程序发送音频文件

Ios 通过xcode(swift)中的iMessage应用程序发送音频文件,ios,swift,xcode,imessage-extension,Ios,Swift,Xcode,Imessage Extension,我一直在搜索,没有找到很多关于通过iMessage应用程序发送音频文件的问题或答案。我一直在努力,只是不知道该怎么做。以下是我的代码片段: @IBAction func pressSend(_ sender: Any) { let filePath = Bundle.main.path(forResource: "yaddadi", ofType: "m4a") let fileURL = NSURL(string: filePath!) if

我一直在搜索,没有找到很多关于通过iMessage应用程序发送音频文件的问题或答案。我一直在努力,只是不知道该怎么做。以下是我的代码片段:

@IBAction func pressSend(_ sender: Any) {
        let filePath = Bundle.main.path(forResource: "yaddadi", ofType: "m4a")
        let fileURL = NSURL(string: filePath!)

        if let conversation = activeConversation
        {
            conversation.insertAttachment(fileURL as! URL, withAlternateFilename: nil, completionHandler: nil)
        }
    }

当我运行应用程序并点击附加到该功能上的按钮时,它会插入一张看起来什么都没有的小图片,我甚至无法通过消息发送它。请帮忙

你就快到了。也许您只是缺少URL方案。您是否在控制台中看到此错误

cfurlCopyResourcePropertyWorkey失败,因为它被传递了一个URL 没有计划

尝试:


你快到了。也许您只是缺少URL方案。您是否在控制台中看到此错误

cfurlCopyResourcePropertyWorkey失败,因为它被传递了一个URL 没有计划

尝试:


当我尝试这样做时,我得到一个错误,上面写着“致命错误:在展开可选值2017-01-16 10:29:08.647001 MessagesExtension[7847:3394193]致命错误:在展开可选值时意外发现零”设置断点以确定
nil
值的位置。在我的示例中,我之所以强制展开,是因为我确信
路径
url
不会是
——您可能不需要这样做。由于在您的示例中也强制展开
filePath
,因此我假设
nil
值为
fileURL
。它指向fileURL声明说EXC\u BAD\u指令,但在我添加“file://(filePath)”之前它没有这样做!我知道文件路径是正确的,因为我在AVAudioPlayer中使用的路径与正常工作的路径相同。您可能没有与iMessage应用程序扩展名共享该文件。请确保该文件的目标成员身份已更新,因此,必要的目标可以访问它。Messages extension在target membership(目标成员身份)下进行了检查。当我尝试此操作时,得到一个错误,上面写着“致命错误:在展开可选值时意外地发现了nil 2017-01-16 10:29:08.647001 MessagesExtension[7847:3394193]致命错误:在展开可选值时意外地发现了nil”设置断点以确定
nil
值的位置。在我的示例中,我之所以强制展开,是因为我确信
路径
url
不会是
——您可能不需要这样做。由于在您的示例中也强制展开
filePath
,因此我假设
nil
值为
fileURL
。它指向fileURL声明说EXC\u BAD\u指令,但在我添加“file://(filePath)”之前它没有这样做!我知道文件路径是正确的,因为我在AVAudioPlayer中使用的路径与正常工作的AVAudioPlayer中使用的路径相同。您可能没有与iMessage应用程序扩展名共享该文件。请确保已更新该文件的目标成员身份,以便必要的目标可以访问该文件。已在目标成员身份下检查消息扩展名。
let path = Bundle.main.path(forResource: "yaddadi", ofType: "m4a")!
let url = URL(string: "file://\(path)")! // Note the addition of "file://" here.
activeConversation?.insertAttachment(url, withAlternateFilename: nil, completionHandler: nil)