Ekran Uyandırma Kilidi API'si, bir uygulamanın çalışmaya devam etmesi gerektiğinde cihazların kararmasını veya kilitlenmesini önlemenin bir yolunu sunar.
Ekran Uyandırma Kilidi API'si nedir?
Çoğu cihaz boşta kaldığında pilin hızlı tükenmesini önlemek için uyku moduna geçer. Bu çoğu zaman iyi olsa da bazı uygulamaların işlerini tamamlamak için ekranı uyanık tutması gerekir. Örnek olarak bir tarifin adımlarını gösteren yemek pişirme uygulamaları veya giriş için cihaz hareketi API'lerini kullanan Ball Puzzle gibi oyunlar verilebilir.
Ekran Uyandırma Kilidi API'si, cihazın ekranı karartıp kilitlemesini önlemek için bir yol sağlar. Bu özellik, şimdiye kadar platforma özel bir uygulama gerektiren yeni deneyimleri mümkün kılıyor.
Screen Wake Lock API, bilgisayar korsanlığı ve can sıkıcı olabilecek geçici çözümlere olan ihtiyacı azaltır. Sadece ekranı açık tutmakla sınırlı olan, güvenlik ve gizlilikle ilgili birtakım sorunlarla karşılaşan eski bir API'nin eksikliklerini gideriyor.
Screen Wake Lock API'si için önerilen kullanım alanları
The Guardian tarafından geliştirilen web uygulaması RioRun mükemmel bir kullanım alanıydı (ancak artık kullanılamıyor). Uygulama sizi 2016 Olimpiyat maratonu rotasında izleyen sanal bir sesli Rio turuna çıkarıyor. Uyanık kalma kilitleri olmadan, tur oynatılırken kullanıcıların ekranları sık sık kapanıyor ve bu durum turun kullanımını zorlaştırıyordu.
Elbette başka birçok kullanım alanı da vardır:
- Pasta veya akşam yemeği yaparken 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 sunu uygulamasıdır.
Mevcut durum
Adım | Durum |
---|---|
1. Açıklayıcı oluşturun | Yok |
2. İlk spesifikasyon taslağını oluşturma | Tamamlandı |
3. Geri bildirim alma ve tasarımı yineleme | Tamamlandı |
4. Kaynak denemesi | Eksiksiz |
5. Lansman | Tamamlandı |
Screen Wake Lock API'sini kullanma
Uyanık kalma kilidi türleri
Ekran Uyandırma Kilidi API'si şu anda yalnızca tek bir uyanık kalma kilidi türü sağlar: screen
.
screen
uyanık kalma kilidi
screen
uyanık kalma kilidi, kullanıcının ekranda görüntülenen bilgileri görebilmesi için cihaz ekranının kapatılmasını engeller.
Ekran uyanık kalma kilidi alma
Ekran uyanık kalma kilidi istemek için WakeLockSentinel
nesnesi döndüren navigator.wakeLock.request()
yöntemini çağırmanız gerekir.
Bu yöntemi, şu anda yalnızca 'screen'
ile sınırlı olan ve bu nedenle isteğe bağlı olan istediğiniz uyanık kalma kilidi türünü parametre olarak geçirirsiniz.
Tarayıcı, isteği çeşitli nedenlerle (örneğin, pilin şarj seviyesi çok düşük olduğu için) reddedebilir. Bu nedenle, çağrıyı try…catch
ifadesine dahil etmek iyi bir uygulamadır.
İstisnanın mesajı, hata durumunda daha fazla ayrıntı içerir.
Ekran uyanık kalma kilidini serbest bırakma
Ayrıca, ekran uyanık kalma kilidini açmak için bir yönteme ihtiyacınız vardır. Bu işlem, WakeLockSentinel
nesnesinin release()
yöntemini çağırarak gerçekleştirilir.
WakeLockSentinel
referansını saklamazsanız kilidi manuel olarak serbest bırakmak mümkün değildir ancak geçerli sekme görünmez olduğunda kilit serbest bırakılır.
Ekran uyanık kalma kilidinin belirli bir süre sonra otomatik olarak serbest bırakılmasını isterseniz aşağıdaki örnekte gösterildiği gibi release()
işlevini çağırmak için window.setTimeout()
işlevini kullanabilirsiniz.
// 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
nesnesi, bir koruyucunun zaten serbest bırakılıp bırakılmadığını gösteren released
adlı bir özelliğe sahiptir.
Değeri başlangıçta false
olur ve bir "release"
etkinliği gönderildiğinde true
olarak değişir. Bu mülk, web geliştiricilerinin kilidin kullanıma sunulduğunu bilmelerini sağlar. Böylece, manuel olarak takip etmeleri gerekmez.
Chrome 87 ve sonraki sürümlerde kullanılabilir.
Ekran uyanık kalma kilidinin yaşam döngüsü
Ekran uyanık kalma kilidi demosu ile oynarken, ekran uyanık kalma kilitlerinin sayfa görünürlüğüne duyarlı olduğunu fark edeceksiniz. Diğer bir deyişle, bir sekmeyi veya pencereyi küçültdüğünüzde ya da ekran uyanık kalma kilidinin etkin olduğu bir sekme 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 etkinlik oluştuğunda 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 uyanık kalma kilidi kullanmalı mısınız? Yaklaşımınız uygulamanızın ihtiyaçlarına bağlıdır. Ne olursa olsun, sistem kaynakları üzerindeki etkisini en aza indirmek amacıyla uygulamanız için mümkün olan en hafif yaklaşımı kullanmalısınız.
Uygulamanıza ekran uyanık kalma kilidi eklemeden önce, kullanım alanlarınızın aşağıdaki alternatif çözümlerden biriyle çözülüp çözülmeyeceğini değerlendirin:
- Uygulamanız uzun süreli indirme işlemleri gerçekleştiriyorsa arka planda getirme özelliğini kullanmayı düşünebilirsiniz.
- Uygulamanız harici bir sunucudaki verileri senkronize ediyorsa arka planda senkronizasyonu kullanmayı düşünebilirsiniz.
Demografi
Ekran Uyandırma Kilidi demosuna ve demo kaynağına göz atın. Sekmeler veya uygulamalar arasında geçiş yaptığınızda ekran uyanık kalma kilidinin otomatik olarak nasıl serbest bırakıldığına dikkat edin.
İşletim sistemi görev yöneticisindeki Ekran Uyandırma 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 Etkinlik Monitörü'nde, Chrome'un sistemi uyanık tutan etkin bir ekran uyanık kalma kilidi olduğu belirtiliyor.
Geri bildirim
Web Platform Incubator Community Group (WICG) ve Chrome ekibi, Screen Wake Lock API'yle ilgili düşüncelerinizi ve deneyimlerinizi öğrenmek istemektedir.
Bize API tasarımı hakkında bilgi verin
API'de beklendiği gibi çalışmayan bir şey var mı? Ya da fikrinizi uygulamak için gereken yöntem veya özellikler eksik mi?
- Screen Wake Lock API GitHub deposunda spesifikasyon sorunu bildiriminde bulunun veya mevcut bir sorunla ilgili düşüncelerinizi ekleyin.
Uygulamayla ilgili bir sorunu bildirin
Chrome'un uygulamasında bir hata buldunuz mu? Yoksa uygulama, spesifikasyondan farklı mı?
- https://new.crbug.com adresinden hata bildiriminde bulunun. Mümkün olduğunca fazla ayrıntı eklediğinizden, hatayı yeniden oluşturmak için basit talimatlar sağladığınızdan ve Bileşenler'i
Blink>WakeLock
olarak ayarladığınızdan emin olun. Glitch hızlı ve kolay yeniden oluşturmalar paylaşmak için idealdir.
API'ye desteği gösterin
Ekran Uyandırma Kilidi API'sini kullanmayı planlıyor musunuz? Herkese açık desteğiniz, Chrome ekibinin özellikleri öncelik sırasına koymasına yardımcı olur ve diğer tarayıcı satıcılarına bunları desteklemenin ne kadar kritik olduğunu gösterir.
- API'yi nasıl kullanmayı planladığınızı WICG Discourse ileti dizisinde paylaşın.
#WakeLock
hashtag'ini kullanarak @ChromiumDev adresine tweet gönderip bu tweet'i nerede ve nasıl kullandığınızı bize bildirin.
Faydalı bağlantılar
- Spesifikasyon Aday Önerisi | Editörün Taslağı
- Ekran Uyandırma Kilidi Demosu | Ekran Uyandırma Kilidi Demosu kaynağı
- İzleme hatası
- ChromeStatus.com girişi
- Wake Lock API ile denemeler yapma
- Yanıp Sönen Bileşen:
Blink>WakeLock
Teşekkür
Kate Stone Matheson tarafından Unsplash'te hero resmi. Henry Lim'in izniyle görev yöneticisi videosu.