I’m just telling you what the difference is on the implementation side on our end. We use the OpenAL library on all platforms, which is an open cross-platform standard for implementing audio much like how OpenGL works. We’ve been using the same version of OpenAL library on Windows and Android because neither Microsoft or Google have there own implementation. But Apple does maintain their own OpenAL library and it changes with OS updates. Sometimes there are bugs in Apple’s implementation that either you or us have to work-around. I don’t like it anymore than you do, but that the only platform differences in audio that I’m aware of. So, bottom line, a work-around needs to be found.
What if after you stopped the audio you played it millisecond later via a timer? Perhaps that’ll give Apple’s audio engine the time it needs to finalize the audio.stop() before letting you play audio again on the same channel.
Or what if instead of doing an audio.stop() in your timer, you just audio.seek() back to the beginning of the sound (set it to zero) and then re-play it? That may be a more efficient way of handling it… on all platforms really.
I’m just trying to think of a solution that’ll help you today. I hope the above helps out.