Предотвратить сафари от сна, используя javascript

Я использую таймер javascript, который таймер загружает в iframe, и этот таймер также воспроизводит некоторые аудиофайлы через определенные промежутки времени, в основном для обычных упражнений, поэтому скажите, что в течение 10 секунд происходит первое упражнение, а затем на минуту второй и в течение 2 минут третий и т.д.

Как только время для упражнения завершается, а следующее появляется, я меняю звук для этого конкретного упражнения и так далее. Я хочу, чтобы браузер не спал в каждом режиме, который является телефоном (Android, iOS), ноутбуком повсюду до момента запуска таймера.

Я использовал 2 решения для ios, которые я использую, чтобы перезагрузить страницу, а для других - будь то Android или ноутбук. Я пробую видео, как указано здесь.

И мой последний код для проверки вещей -

var ua = {
  Android: /Android/ig.test(navigator.userAgent),
  // iOS: /AppleWebKit/.test(navigator.userAgent) && /Mobile\/\w+/.test(navigator.userAgent)
  iOS:/iPhone|iPad|iPod/i.test(navigator.userAgent)
};

<script type="text/javascript" src="js/sleep.js"></script>

if (ua.iOS) {
  preventIosSleep = setInterval(function(){
    window.top.location.href = '/';
    setTimeout(function(){
      try {
        window.top.stop();
      } catch (exception) {
        document.execCommand('Stop');
      }
    }, 0);
  }, 10000);
} else {
  sleep.prevent();
}

// and when releasing the things
if (ua.iOS) {
  clearInterval(preventIosSleep);
} else {
  sleep.allow();
}

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

Ответ 1

В прошлом вы могли делать хаки, например, иметь аудиотекст на странице или перезагружать URL-адрес в скрытом iframe. Но ни одна из них не работает с iOS 7. Единственное работоспособное решение - создать приложение, которое использует UIWebView.

Ниже приведена дополнительная информация, если вы заинтересованы: fooobar.com/questions/186413/...

Ответ 2

Я бы рекомендовал создать приложение cordova, если вы ищете контроль уровня устройства. Я считаю, что тип вещи, который вы надеетесь выполнить в браузере, - это то, что Apple активно предотвращает; вероятно, за время работы от батареи и/или устройства.

Если вы идете по этому маршруту, вы можете использовать: https://github.com/EddyVerbruggen/Insomnia-PhoneGap-Plugin

Надеюсь, что это поможет.