Ekran uyanık kalma kilidi API'si, bir uygulamanın çalışmaya devam etmesi gerektiğinde cihazların ekranının kararmasını veya kilitlenmesini engellemenin bir yolunu sunar.
Screen Wake Lock API nedir?
Pilin tükenmesini önlemek için çoğu cihaz boşta bırakıldığında hızlıca uyku moduna geçer. Bu durum çoğu zaman sorun yaratmasa da bazı uygulamaların işlerini tamamlamak için ekranı açık tutması gerekir. Örneğin, yemek tarifinin adımlarını gösteren yemek uygulamaları veya giriş için cihaz hareket API'lerini kullanan Ball Puzzle gibi oyunlar.
Screen Wake Lock API, cihazın ekranının kararmasını ve kilitlenmesini engellemenin bir yolunu sunar. Bu özellik, şimdiye kadar platforma özel bir uygulama gerektiren yeni deneyimler sunar.
Ekran uyanık kalma kilidi API'si, geçici ve muhtemelen güç tüketen çözümlere olan ihtiyacı azaltır. Bu API, ekranı açık tutmakla sınırlı olan ve bir dizi güvenlik ve gizlilik sorunu içeren eski bir API'nin eksikliklerini giderir.
Screen Wake Lock API için önerilen kullanım alanları
The Guardian tarafından geliştirilen bir web uygulaması olan RioRun, mükemmel bir kullanım alanıydı (ancak artık kullanılamıyor). Uygulama, 2016 Olimpiyatları maratonunun rotasını takip ederek sizi Rio'da sanal bir sesli tura çıkarır. Uyandırma kilitleri olmadan, tur oynatılırken kullanıcıların ekranları sık sık kapanır ve bu da turu kullanmayı zorlaştırır.
Elbette, başka birçok kullanım alanı vardır:
- Kek pişirirken veya akşam yemeği hazırlarken ekranı açık tutan bir yemek tarifi uygulaması
- Barkod taranana kadar ekranı açık tutan bir biniş kartı veya bilet uygulaması
- Ekranı sürekli açık tutan kiosk tarzı bir uygulama
- Sunum sırasında ekranı açık tutan web tabanlı bir sunum uygulaması
Mevcut durum
Step | Durum |
---|---|
1. Açıklayıcı oluşturma | Yok |
2. Spesifikasyonun ilk taslağını oluşturma | Tamamlandı |
3. Geri bildirim toplama ve tasarımı yineleme | Tamamlandı |
4. Kaynak denemesi | Eksiksiz |
5. Lansman | Tamamlandı |
Screen Wake Lock API'yi kullanma
Uyanık kalma kilidi türleri
Screen Wake Lock API şu anda yalnızca bir tür uyandırma kilidi sağlar: screen
.
screen
uyanık kalma kilidi
screen
uyanık kalma kilidi, kullanıcının ekranda gösterilen bilgileri görebilmesi için cihazın ekranının kapanmasını engeller.
Ekran uyanık kalma kilidi alma
Ekran uyandırma kilidi isteğinde bulunmak için navigator.wakeLock.request()
yöntemini çağırmanız gerekir. Bu yöntem, WakeLockSentinel
nesnesini döndürür.
Bu yönteme parametre olarak istenen uyandırma kilidi türünü iletirsiniz. Bu tür şu anda yalnızca 'screen'
ile sınırlıdır ve bu nedenle isteğe bağlıdır.
Tarayıcı, çeşitli nedenlerle (ör. pil şarj seviyesi çok düşük olduğu için) isteği reddedebilir. Bu nedenle, aramayı bir try…catch
ifadesiyle sarmak iyi bir uygulamadır.
Başarısızlık durumunda istisnanın mesajında daha fazla ayrıntı yer alır.
Ekran uyanık kalma kilidini serbest bırakma
Ayrıca, WakeLockSentinel
nesnesinin release()
yöntemi çağrılarak elde edilen ekran uyandırma kilidini serbest bırakmanın bir yoluna da ihtiyacınız vardır.
WakeLockSentinel
için bir referans depolamıyorsanız kilidi manuel olarak açmanın bir yolu yoktur ancak geçerli sekme görünmez hale geldiğinde kilit açılır.
Belirli bir süre geçtikten sonra ekran uyandırma kilidini otomatik olarak serbest bırakmak istiyorsanız aşağıdaki örnekte gösterildiği gibi window.setTimeout()
kullanarak release()
işlevini çağırabilirsiniz.
// The wake lock sentinel.
let wakeLock = null;
// Function that attempts to request a screen wake lock.
const requestWakeLock = async () => {
try {
wakeLock = await navigator.wakeLock.request();
wakeLock.addEventListener('release', () => {
console.log('Screen Wake Lock released:', wakeLock.released);
});
console.log('Screen Wake Lock released:', wakeLock.released);
} catch (err) {
console.error(`${err.name}, ${err.message}`);
}
};
// Request a screen wake lock…
await requestWakeLock();
// …and release it again after 5s.
window.setTimeout(() => {
wakeLock.release();
wakeLock = null;
}, 5000);
WakeLockSentinel
nesnesinde, bir sentinel'ın yayınlanıp yayınlanmadığını belirten released
adlı bir özellik bulunur.
Değeri başlangıçta false
'dır ve bir "release"
etkinliği gönderildiğinde true
olarak değişir. Bu özellik, web geliştiricilerin bir kilidin ne zaman serbest bırakıldığını bilmesine yardımcı olur. Böylece bu durumu manuel olarak takip etmeleri gerekmez.
Chrome 87'den itibaren kullanılabilir.
Ekran uyanık kalma kilidi yaşam döngüsü
Ekran uyandırma kilidi demosu ile oynadığınızda ekran uyandırma kilitlerinin sayfa görünürlüğüne duyarlı olduğunu fark edeceksiniz. Bu, bir sekmeyi veya pencereyi küçülttüğünüzde ya da ekran uyanık kalma kilidinin etkin olduğu bir sekmeden veya pencereden uzaklaştığınızda ekran uyanık kalma kilidinin otomatik olarak serbest bırakılacağı anlamına gelir.
Ekran uyanık kalma kilidini yeniden almak için visibilitychange
etkinliğini dinleyin ve bu etkinlikler gerçekleştiğinde yeni bir ekran uyanık kalma kilidi isteyin:
const handleVisibilityChange = async () => {
if (wakeLock !== null && document.visibilityState === 'visible') {
await requestWakeLock();
}
};
document.addEventListener('visibilitychange', handleVisibilityChange);
Sistem kaynakları üzerindeki etkinizi en aza indirme
Uygulamanızda ekran uyandırma kilidi kullanmalı mısınız? Seçeceğiniz yaklaşım, uygulamanızın ihtiyaçlarına bağlıdır. Her durumda, sistem kaynakları üzerindeki etkisini en aza indirmek için uygulamanızda mümkün olan en basit yaklaşımı kullanmanız gerekir.
Uygulamanıza ekran uyandırma kilidi eklemeden önce, kullanım alanlarınızın aşağıdaki alternatif çözümlerden biriyle çözülüp çözülemeyeceğini göz önünde bulundurun:
- Uygulamanız uzun süren indirme işlemleri gerçekleştiriyorsa arka planda getirme özelliğini kullanmayı düşünebilirsiniz.
- Uygulamanız harici bir sunucudan veri senkronize ediyorsa arka plan senkronizasyonunu kullanabilirsiniz.
Demo
Screen Wake Lock tanıtımına ve tanıtım kaynağına göz atın. Sekmeler veya uygulamalar arasında geçiş yaptığınızda ekran uyandırma kilidinin otomatik olarak nasıl serbest bırakıldığına dikkat edin.
İşletim sisteminin görev yöneticisindeki ekran uyanık kalma kilitleri
Bir uygulamanın bilgisayarınızın uyku moduna geçmesini engelleyip engellemediğini görmek için işletim sisteminizin görev yöneticisini kullanabilirsiniz. Aşağıdaki videoda, macOS'teki Etkinlik Monitörü'nde Chrome'un, sistemi uyanık tutan etkin bir ekran uyandırma kilidine sahip olduğu gösteriliyor.
Geri bildirim
Web Platform Incubator Community Group (WICG) ve Chrome ekibi, Screen Wake Lock API ile ilgili düşüncelerinizi ve deneyimlerinizi öğrenmek istiyor.
API tasarımı hakkında bilgi verin.
API ile ilgili beklendiği gibi çalışmayan bir durum var mı? Ya da fikrinizi uygulamak için eksik yöntemler veya özellikler mi var?
- Screen Wake Lock API GitHub deposunda bir spesifikasyon sorunu bildirin veya düşüncelerinizi mevcut bir soruna ekleyin.
Uygulamayla ilgili sorun bildirme
Chrome'un uygulamasında bir hata mı buldunuz? Yoksa uygulama, spesifikasyondan farklı mı?
- https://new.crbug.com adresinden hata bildirin. Mümkün olduğunca fazla ayrıntı eklediğinizden, hatayı yeniden oluşturmak için basit talimatlar verdiğinizden ve Bileşenler'i
Blink>WakeLock
olarak ayarladığınızdan emin olun.
API'ye desteğinizi gösterme
Screen Wake Lock API'yi kullanmayı planlıyor musunuz? Herkese açık desteğiniz, Chrome ekibinin özellikleri önceliklendirmesine yardımcı olur ve diğer tarayıcı satıcılarına bu özelliklerin desteklenmesinin ne kadar önemli olduğunu gösterir.
- API'yi nasıl kullanmayı planladığınızı WICG Discourse iş parçacığında paylaşın.
#WakeLock
hashtag'ini kullanarak @ChromiumDev hesabına tweet gönderin ve özelliği nerede ve nasıl kullandığınızı bize bildirin.
Faydalı bağlantılar
- Şartname Aday Öneri | Editörün Taslağı
- Screen Wake Lock Demo | Screen Wake Lock Demo kaynağı
- İzleme hatası
- ChromeStatus.com girişi
- Wake Lock API ile deneme yapma
- Blink Bileşeni:
Blink>WakeLock
Teşekkür
Unsplash'teki Kate Stone Matheson'ın hero resmi. Görev yöneticisi videosu, Henry Lim'in izniyle kullanılmıştır.