How to get sound on iOS
iOS Sound
To play a sound file on IOS platform you can't store it in the qrc file but you have to put it in the bundle together with the qml files. Here https://github.com/niqt/iosqt you can find my example that plays sound on IOS. The most important part is in the .pro file), where the qml and audio are put in the bundle:
DATA_FILES = $$PWD/qml/iosqt/main.qml ../iosqt/page.qml ../iosqt/audio.mp3
ios: {
data.files = $$DATA_FILES
data.path = Documents
QMAKE_BUNDLE_DATA *= data
}
obviously you have to include the plugin:
QTPLUGIN *= qtaudio_coreaudio
QTPLUGIN *= qtmedia_audioengine
QTPLUGIN *= qavfcamera
QTPLUGIN *= qavfmediaplayer
thus in main.qml:
MediaPlayer {
id: playMusic
volume: 0.5
source: "audio.mp3"
}
Alternate approach
Tested in 2020 and the above example was not working for me. Instead I made it work by these edits:
1) Included all content in my audio folder where I stored the sound files. The path attribute creates a new directory for your data. I haven't used it here keeping the bundled data in root.
ios: {
BUNDLE_DATA.files = $$files($$PWD/audio/*.mp3)
QMAKE_BUNDLE_DATA += BUNDLE_DATA
}
2) Used the same plugin inclusions as above. 3) Had to locate the file in QML like this:
source: StandardPaths.locate(StandardPaths.AppDataLocation, "file.mp3", StandardPaths.LocateFile)
Providing the URL by Standard Paths made it possible for the Media Player to open the file. The file couldn't be found without this.