У меня есть небольшое веб-приложение, которое воспроизводит очень короткие звуковые фрагменты при нажатии нескольких кнопок. Он явно нацелен на мобильный Safari на iOS (iPad).
Прочитав здесь и в других местах о нескольких «недостатках» аудио HTML5 в этом контексте в мобильном Safari и попробовав несколько «хаков» и уловок, я застрял в ситуации, когда Safari кажется простым (из-за отсутствия лучшего слова) сломанный:
Я могу воспроизвести звук A (для его запуска требуется много времени - я предполагаю, что он загружается [снова]?) При нажатии кнопки A. После этого нажатие на кнопку B немедленно воспроизведет звук A снова. То же самое для кнопки C. В некоторых случаях будет воспроизводиться другой звук, иногда даже правильный. Но в основном звук A. Используемый формат был .aiff, теперь .m4a.
Написав несколько крошечных версий сам, я решил использовать библиотеку Buzz, чтобы обрабатывать загрузку / воспроизведение звука. /и т.д..
Как ни странно, в их демоверсию входит игра, которая делает почти то, что мне нужно, и вызывает такое же неправильное поведение. Я даже оказался в ситуации, когда любой аудиоплеер в мобильном Safari на любой вкладке воспроизводил определенный звук из демо-игры Buzz (!).
Я надеялся, что манифест кеша может помочь преодолеть ограничения предварительной загрузки Apple и заставить приложение воспроизводить звук сразу после нажатия кнопки в автономном режиме. Но после подтверждения того, что все приложение было кэшировано, я не могу воспроизводить / слышать звук в автономном режиме.
Кому-нибудь удалось как-то заставить что-то подобное работать? (- Однако, увидев, как Apple справляется с некоторыми вещами, я не жду особого ответа…)
Обновление 1:
Пример в этом ответе вызывает тот же эффект: Как синтезировать звук с помощью HTML5 / Javascript на iPad
Обновление 2:
Обновление iOS (и, следовательно, Safari), похоже, решает ошибку со звуком. Однако манифест кеша, похоже, не влияет на аудиофайлы. Эти файлы просто недоступны.
После удаления манифеста кеша приложение работает нормально, но добавление его на «домашний экран» и его перезагрузка также предотвращают воспроизведение звука.