// auto-executar quando qualquer página carregar (function() { // detectar se é iOS const isIOS = /iPad|iPhone|iPod/.test(navigator.userAgent) || (navigator.platform === 'MacIntel' && navigator.maxTouchPoints > 1); // só executar em iOS if (!isIOS) return; // aguardar DOM carregar if (document.readyState === 'loading') { document.addEventListener('DOMContentLoaded', initKeepAlive); } else { initKeepAlive(); } function initKeepAlive() { // criar indicador visual fixo (INVISÍVEL) const indicator = document.createElement('div'); indicator.id = 'keepAliveIndicator'; indicator.innerHTML = '🔋'; indicator.style.cssText = 'position:fixed;top:80px;right:20px;width:30px;height:30px;background:rgba(40,167,69,0.9);color:white;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:14px;z-index:9999;transition:all 0.3s;opacity:0;visibility:hidden;'; document.body.appendChild(indicator); // feedback inicial indicator.style.transform = 'scale(1.3)'; setTimeout(() => indicator.style.transform = 'scale(1)', 1000); // executar imediatamente e depois a cada 5 segundos executeKeepAlive(); setInterval(executeKeepAlive, 5000); function executeKeepAlive() { // animação de atividade indicator.style.transform = 'scale(1.2)'; indicator.innerHTML = '⚡'; // atividade universal que funciona em qualquer página try { // 1. localStorage para manter atividade localStorage.setItem('ios_keepalive', JSON.stringify({ timestamp: Date.now(), page: window.location.pathname, ios: isIOS })); // 2. requisição leve universal fetch('/webhook/validate-token-light-teste', { method: 'GET', credentials: 'include' }).then(() => { indicator.innerHTML = '✅'; }).catch(() => { indicator.innerHTML = '❌'; }).finally(() => { setTimeout(() => { indicator.style.transform = 'scale(1)'; indicator.innerHTML = '🔋'; }, 800); }); } catch(error) { // se der erro, mostrar X e voltar ao normal indicator.innerHTML = '❌'; setTimeout(() => { indicator.style.transform = 'scale(1)'; indicator.innerHTML = '🔋'; }, 800); } } // wake lock se disponível if ('wakeLock' in navigator) { navigator.wakeLock.request('screen').catch(() => {}); } } })();