Подтвердить что ты не робот

Предотвратить переход на безопасное сафари iOS в режиме ожидания/автоматического блокирования/спящего режима?

В приложении iOS вы можете установить application.idleTimerDisabled = YES, чтобы предотвратить автоматическую блокировку телефона.

Мне нужно сделать это в мобильном сафари для игры, такой как Doodle Jump, где пользователь может не касаться экрана в течение длительного периода времени. Есть ли документированный метод или взломать это?

(Обновление) Кажется, они делают это как-то на этом сайте http://www.uncoveryourworld.com. Посетите свой iphone, и когда вы попадете на сцену зданий/улиц с музыкой, играющей в фоновом режиме, просто оставьте свой телефон в покое. Он никогда не заснул.

(Обновление 2) Я потратил некоторое время на более пристальное внимание на то, как они могут удержать телефон от сна. Я сделал тест на болотах, и кажется, что то, как они зацикливают звук на уличной сцене, не позволяет ему заснуть. Если вы хотите протестировать это, просто поставьте простой аудиоплеер, который будет зациклен на вашей странице и нажмите кнопку воспроизведения:

<audio src="loop.mp3" onended="this.play();" controls="controls" autobuffer></audio>

Всюду, где я искал, говорят, что это невозможно, поэтому приятно видеть, что есть хоть какой-то способ сделать это, даже если немного взломать. В противном случае игра на основе браузера с игрой в стиле каракуля не была бы возможна. Таким образом, вы можете иметь петлю в своей игре/приложении, если это необходимо, или просто играть в тихий цикл.

4b9b3361

Ответ 1

Изменить: Эта работа больше не работает. В настоящее время невозможно предотвратить спящий телефон в сафари.

Да, вы можете запретить телефону спать с помощью аудио-контура. Трюк не запустится автоматически, вам придется играть в него, когда посетитель коснется экрана.

<audio loop src="http://www.sousound.com/music/healing/healing_01.mp3"></audio>

тестовая страница: нажмите воспроизведение, и дисплей останется включенным, но он будет тусклым на некоторых устройствах, таких как iPhone с iOS 7.

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

Ответ 2

EDIT: ни одно из решений, которые в настоящее время работают на этой странице, работает на iOS 10.2 +

Что они делают, если что-то, продлить таймаут, поэтому, если телефон настроен на спящий режим через 30 секунд, эти методы могут подтолкнуть его к 60 секундам. Что это.

Это простой метод только для HTML: циклическое создание встроенных автозапуска видео (он также может работать в Android Chrome 53 +)

<video playsinline muted autoplay loop src="https://rawgit.com/bower-media-samples/big-buck-bunny-480p-30s/master/video.mp4" height=60></video>

Ответ 3

Нет, вы не можете этого сделать, к сожалению. Единственный способ добиться этого - сделать UIWebView-приложение и установить переменную, которую вы там предоставили.
fooobar.com/questions/186413/...

Ответ 4

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

// This will trigger a reload after 30 seconds
setTimeout(function(){
    self.location = self.location
}, 30000);

Обратите внимание, что я тестировал это с помощью бета-версии iOS7

Ответ 5

Вы можете отключить спящий режим и в iOS Safari, обновляя обновление каждые 20-30 секунд

var stayAwake = setInterval(function () {
    location.href = location.href; //try refreshing
    window.setTimeout(window.stop, 0); //stop it soon after
}, 30000);

Пожалуйста, используйте этот код ответственно, не используйте его "только потому, что". Если это нужно только немного, отключите его.

clearInterval(stayAwake); //allow device sleep again when not needed

Протестировано в Safari iOS 7, 7.1.2 и 8.1, но может не работать в браузерах UIWebView, таких как Chrome для iOS или Facebook.

Демо: http://jsbin.com/kozuzuwaya/1

Ответ 6

Ответ bfred.it работает, если вы замените аудио-тег на enter code here -tag - но только если страница открыта в iOS10 + Safari И пользователь запустил видео. Вы можете скрыть видео с помощью CSS.

Кроме того, я подозреваю, что эта функция также будет удалена в какой-то момент.