Dans une application iOS, vous pouvez définir application.idleTimerDisabled = YES
pour empêcher le verrouillage automatique du téléphone.
Je dois faire cela dans un safari mobile pour un jeu comme Doodle Jump où l'utilisateur ne peut pas toucher l'écran pendant une période prolongée. Existe-t-il une méthode documentée ou un hack pour le faire?
(Mise à jour) Ils semblent le faire d’une manière ou d’une autre sur ce site http://www.uncoveryourworld.com . Visitez votre iPhone et lorsque vous arrivez aux bâtiments/scènes de rue avec de la musique en arrière-plan, laissez votre téléphone seul. Il ne va jamais dormir.
(Mise à jour 2) J'ai passé un certain temps à examiner de plus près comment ils pourraient empêcher le téléphone de s'endormir. J'ai fait un test de barebone et il semble que la façon dont ils bouclent l'audio dans la scène de rue l'empêche de dormir. Si vous souhaitez tester cela, il suffit de mettre un lecteur audio simple qui boucle sur votre page et cliquez sur Lecture:
<audio src="loop.mp3" onended="this.play();" controls="controls" autobuffer></audio>
Partout où j'ai cherché, on me dit que ce n'est pas possible, alors il est agréable de voir qu'il existe au moins un moyen de le faire, même s'il s'agit d'un petit bidouillage. Sinon, un jeu basé sur un navigateur avec un style de griffonnage-saut ne serait pas possible. Vous pouvez donc avoir une boucle dans votre jeu/application si nécessaire ou simplement jouer en boucle silencieuse.
NoSleep.js semble fonctionner sous iOS 11 et fonctionnerait également sous Android.
Il s'agit d'une méthode simple utilisant uniquement le langage HTML: en boucle des vidéos en lecture automatique en ligne (cela pourrait également fonctionner dans 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>
Voir la même démo sur CodePen (comprend un chronomètre)
video.play()
Edit: Ce travail autour ne fonctionne plus. Il n’est actuellement pas possible d’empêcher le téléphone de dormir pendant un safari.
Oui, vous pouvez empêcher le téléphone de dormir en utilisant une boucle audio. L'astuce ne commencera pas automatiquement, vous devrez la jouer quand le visiteur touchera l'écran.
<audio loop src="http://www.sousound.com/music/healing/healing_01.mp3"></audio>
Page de test : appuyez sur Lecture et l’écran reste allumé, mais certains appareils, comme un iPhone avec iOS 7, s’assombrissent.
Remarque: utilisez cette astuce avec prudence, car elle arrêtera toute musique que les visiteurs pourraient utiliser et les agacera.
Non, vous ne pouvez pas faire ça, malheureusement. Le seul moyen d'y parvenir consiste à créer une application UIWebView et à y définir la variable que vous avez fournie.
https://stackoverflow.com/a/7477438/267892
la réponse de bfred.it fonctionne si vous remplacez le tag audio par un enter code here
-tag - mais uniquement si la page est ouverte dans iOS10 + Safari ET si l'utilisateur a démarré la vidéo. Vous pouvez masquer la vidéo avec CSS.
De plus, je suppose que cette fonctionnalité sera également supprimée à un moment donné.
Même si cette approche ne convient pas dans tous les cas, vous pouvez empêcher le verrouillage de votre téléphone en rechargeant la page à l'aide de Javascript.
// This will trigger a reload after 30 seconds
setTimeout(function(){
self.location = self.location
}, 30000);
Veuillez noter que j'ai testé cela avec iOS7 beta 3
Vous pouvez arrêter de dormir et l'écran s'assombrit dans iOS Safari en simulant un rafraîchissement toutes les 20-30 secondes.
var stayAwake = setInterval(function () {
location.href = location.href; //try refreshing
window.setTimeout(window.stop, 0); //stop it soon after
}, 30000);
Veuillez utiliser ce code de manière responsable, ne l'utilisez pas "uniquement parce que". Si nécessaire, désactivez-le.
clearInterval(stayAwake); //allow device sleep again when not needed
Testé dans Safari iOS 7, 7.1.2 et 8.1, mais cela peut ne pas fonctionner dans les navigateurs UIWebView tels que Chrome pour iOS ou l'application Facebook.