Ekran Uyandırma Kilidi API'si ile uyanık kalma

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?

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.

Faydalı bağlantılar

Teşekkür

Kate Stone Matheson tarafından Unsplash'te hero resmi. Henry Lim'in izniyle görev yöneticisi videosu.