如何在ios中存储声音文件的url

问题描述 投票:0回答:1

我使用Qt开发IOS应用程序。我可以使用 Qt 文件选择器对话框打开声音文件,然后获取该声音文件的 url。例如,我得到

file:///private/var/mobile/Containers/Data/Application/4557D5E4-68BA-4341-9F4F-2A07D5E87B4D/tmp/runsomething.App-Inbox/myaudiofile.wav

所以我可以在那时将音频文件加载到 QAudioPlayer 中,它可以工作并播放。

然后我将此 URL 存储在 json 文件中以便稍后检索。问题是,这似乎是一种临时文件 url,因为重新启动我的应用程序后,该 URL 不再起作用。

所以,我的问题是如何处理这个问题?我是否需要自己将其复制到我自己可以创建的目录,例如在“库/应用程序支持”路径下:

/var /mobile/Containers/Data/Application/4557D5E4-68BA-4341-9F4F-2A07D5E87B4D/Library/Application Support/App

或者还有其他方法吗?我看到这篇文章允许用户与您的应用程序共享文件,并且似乎将其复制到您的应用程序的存储中。那么它可能不再是“tmp”文件,即使应用程序重新启动后,该文件的链接也将起作用。你应该这样做吗?我真的不喜欢这种方法,并且希望尽可能避免它。

感谢您的指点或帮助! 最好的问候

ios qt ipad mobile qt6
1个回答
0
投票

看来确实需要将收件箱文件复制到“Library/Application Support”路径下的文件中。但是,我的错误是我存储了沙箱路径,因此在我的设置文件中存储了完整路径。例如我存储了这个网址:

file:///var/mobile/Containers/Data/Application/4557D5E4-68BA-4341-9F4F-2A07D5E87B4D/Library/Application Support/App/myaudiofile.wav

但是每次应用程序启动时,沙箱的绝对路径都会改变,所以这部分是可变的:

/var/mobile/Containers/Data/Application/4557D5E4-68BA-4341-9F4F-2A07D5E87B4D

所以现在我只存储相对路径,并且要加载它,我只需将“当前”沙箱路径添加到路径前面即可获取正确的绝对文件路径。

然后一切都按预期进行。

© www.soinside.com 2019 - 2024. All rights reserved.