Как яблоко определяет «действие пользователя»?

1

В настоящее время я работаю над веб-проектом, и мне нужно начать воспроизведение видео после события салфетки, и я не могу выполнить эту работу. Я использую видеопроигрыватель HTML5 и JS для обнаружения события салфетки. Сначала я попытался использовать hammer.js, что облегчает обнаружение событий салфетки, но после попытки получить эту работу я начал использовать простые js.

После некоторой отладки я заметил, что метод воспроизведения видео HTMLElement возвращает обещание. Когда я вызываю video.play() из моего обработчика, это обещание всегда отклоняется со следующим сообщением:

NotAllowedError (DOM Exception 35): запрос не разрешен агентом пользователя или платформой в текущем контексте, возможно, потому что пользователь отказал в разрешении.

Поскольку эта проблема существует только в iOS, я начал читать документы разработчиков Apple и заметил, что многие функции доступны только после "явного действия пользователя". Например:

Важно: метод webkitEnterFullscreen() может быть вызван только в ответ на действие пользователя, например, нажатие кнопки. Например, вы не можете вызвать webkitEnterFullscreen() в ответ на событие загрузки.

Источник: https://developer.apple.com/library/content/documentation/AudioVideo/Conceptual/Using_HTML5_Audio_Video/ControllingMediaWithJavaScript/ControllingMediaWithJavaScript.html

То же самое относится к вызову метода воспроизведения из js. Он будет работать, только если он был вызван в ответ на действие пользователя.

Мой вопрос здесь в том, как яблоко определяет "действие пользователя"? Потому что, по-видимому, салфетки событий не являются действиями пользователя.

Теги:
video

1 ответ

0

Я не уверен, что у них есть четкое определение, но для видео он обычно "нажимает" кнопку воспроизведения.

Это имеет смысл с одной точки зрения - мышление может заключаться в том, что ошибки часто связаны с увольнением чего-либо и, следовательно, не хорошим кандидатом, позволяющим начать видео.

Причина чувствительности к видео обычно связана с тем, что пользователи случайно запускают большие счета данных в мобильных соединениях.

В наши дни это, по-видимому, вызывает меньше беспокойства - например, последние версии iOS теперь поддерживают встроенное видеовоспроизведение на iPhone, которое было заблокировано в прошлом.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню