I was one of the contributors to the Away3D Flash 3D engine, ah the good old days.
The web was a much more creative place in the Flash days. Flash on its own sucked, but when used as just an asset creation/animation/import from illustrator tool and coding AS3 in other IDE’s linked to the asset swf, it was a pleasure to work with. JS/TS can now do what it can, but code and creative productivity is still nowhere near to what it was.
Hopefully WebGPU once fully supported by everything will get apple to play better, but I doubt it.
With some versions of iOS and webgl you can get shaitPhones (erm iPhones) to crash and reboot, classic apple.
In this case, I am forced to build a dummy data for IOS until it is fixed there is no other solution I have spent more than a week trying all kinds of stupid things to make this work no matter what I try the AudioContext menu is always in the suspended mode it is also breaking the player the sound dose not start either so it is unusable.
A bit of a long shot, is to maybe jog the shaitPhones AudioContext to start first.
Add an audio/video tag in the html, don’t hide it via css as this is sometimes detected and then the tag is auto disabled
Add a button below it to run some js (the user must click on this to run the below JS and your app)
Add an addEventListener to the button to start the audio/video playing (do not directly control the audio/video tag via their controls), force user interaction
Once you make sure the mp4/mp3 is played, replace them with silent versions so that you know audio context is available and working (maybe even long enough silence mp4/mp3 so that you know it’s still playing silence when your app starts so AudioContext is still available as it might be closed, cleaned up, GC’d or something before you app starts)
Now once the above works, run you application and see if AudioContext is available… Here’s the hit and hope…
Now if it does work, instead of hiding the audio/video tag directly with css (opactiy:0 or display:none etc) which could potentially disable it, put it at a lower z-index and absolute position it behind something or off screen via overflow hidden in a div or something checking each time that it still works.
It’s a long shot but it might jog AudioContext to init.