Screen Wake Lock API memberikan cara untuk mencegah perangkat meredup atau mengunci layar saat aplikasi perlu terus berjalan.
Apa itu Screen Wake Lock API?
Agar baterai tidak habis, sebagian besar perangkat akan masuk ke mode tidur dengan cepat saat ditinggalkan tidak ada aktivitas. Meskipun sering kali tidak apa-apa, beberapa aplikasi perlu mempertahankan layar tetap terbangun untuk menyelesaikan pekerjaan mereka. Contohnya mencakup aplikasi memasak yang menunjukkan langkah-langkah resep atau game seperti Ball Puzzle, yang menggunakan perangkat motion API untuk input.
Screen Wake Lock API memberikan cara untuk mencegah peredupan perangkat dan mengunci layar. Ini memungkinkan pengalaman baru yang, hingga sekarang, memerlukan aplikasi khusus platform.
Screen Wake Lock API mengurangi kebutuhan akan peretasan dan kemungkinan solusi yang boros listrik. Ini mengatasi kekurangan API yang lebih lama itu hanya sekadar membuat layar tetap aktif dan memiliki sejumlah keamanan dan privasi data.
Kasus penggunaan yang disarankan untuk Screen Wake Lock API
RioRun, aplikasi web yang dikembangkan oleh The Guardian, adalah kasus penggunaan yang sempurna (meskipun sudah tidak tersedia). Aplikasi ini membawa Anda dalam tur audio virtual Rio, mengikuti rute tahun 2016 Maraton olimpiade. Tanpa penguncian layar saat aktif, pengguna layar akan sering mati saat tur diputar, sehingga membuatnya sulit untuk digunakan.
Tentu saja, ada banyak kasus penggunaan lainnya:
- Aplikasi resep yang membuat layar tetap aktif saat Anda memanggang kue atau memasak makan malam
- Boarding pass atau aplikasi tiket yang menampilkan layar aktif hingga kode batang selesai dipindai
- Aplikasi bergaya kios yang membuat layar terus aktif
- Aplikasi presentasi berbasis web yang menjaga layar saat presentasi
Status saat ini
Langkah | Status |
---|---|
1. Buat penjelasan | T/A |
2. Membuat draf awal spesifikasi | Selesai |
3. Mengumpulkan masukan dan melakukan iterasi desain | Selesai |
4. Uji coba origin | Selesai |
5. Luncurkan | Selesai |
Menggunakan Screen Wake Lock API
Jenis penguncian layar saat aktif
Screen Wake Lock API saat ini hanya menyediakan satu jenis penguncian layar saat aktif: screen
.
screen
penguncian layar saat aktif
Penguncian layar saat aktif screen
mencegah layar perangkat berputar
sehingga pengguna dapat melihat
informasi yang ditampilkan di layar.
Mendapatkan penguncian layar saat aktif
Untuk meminta penguncian layar saat aktif, Anda perlu memanggil metode navigator.wakeLock.request()
yang menampilkan objek WakeLockSentinel
.
Anda meneruskan jenis penguncian layar saat aktif yang diinginkan sebagai parameter,
yang saat ini dibatasi hanya untuk 'screen'
sehingga bersifat opsional.
Browser dapat menolak permintaan karena berbagai alasan (misalnya,
karena level pengisian daya baterai terlalu rendah),
jadi sebaiknya gabungkan panggilan dalam pernyataan try…catch
.
Pesan pengecualian akan berisi detail selengkapnya jika terjadi kegagalan.
Melepaskan penguncian layar saat aktif
Anda juga memerlukan cara untuk melepaskan penguncian layar saat aktif, yang dilakukan dengan memanggil metode
Metode release()
dari objek WakeLockSentinel
.
Jika Anda tidak menyimpan referensi ke WakeLockSentinel
, tidak mungkin
untuk melepaskan kunci secara manual, tetapi kunci akan dilepas setelah tab saat ini tidak terlihat.
Jika Anda ingin otomatis melepaskan penguncian layar saat aktif
setelah jangka
waktu tertentu berlalu,
Anda dapat menggunakan window.setTimeout()
untuk memanggil release()
, seperti yang ditunjukkan dalam contoh di bawah.
// 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);
Objek WakeLockSentinel
memiliki properti bernama released
yang
menunjukkan apakah sentinel telah dilepaskan.
Nilainya awalnya false
, dan berubah menjadi true
setelah "release"
peristiwa tersebut dikirim. Properti ini membantu developer web mengetahui saat kunci
telah dirilis sehingga mereka tidak perlu
melacak ini secara manual.
Fitur ini tersedia mulai Chrome 87.
Siklus proses penguncian layar saat aktif
Saat memutar demo penguncian layar saat aktif, Anda akan melihat bahwa penguncian layar saat aktif sensitif terhadap visibilitas halaman. Ini berarti bahwa penguncian layar saat aktif akan dilepaskan secara otomatis saat Anda meminimalkan tab atau jendela, atau beralih dari tab atau jendela tempat penguncian layar saat aktif aktif.
Untuk mendapatkan kembali penguncian layar saat aktif,
memproses peristiwa visibilitychange
dan meminta penguncian layar saat aktif baru bila terjadi:
const handleVisibilityChange = async () => {
if (wakeLock !== null && document.visibilityState === 'visible') {
await requestWakeLock();
}
};
document.addEventListener('visibilitychange', handleVisibilityChange);
Meminimalkan dampak pada sumber daya sistem
Haruskah Anda menggunakan penguncian layar saat aktif di aplikasi? Pendekatan yang Anda ambil bergantung pada kebutuhan aplikasi. Apa pun itu, Anda seharusnya gunakan pendekatan yang paling ringan bagi aplikasi Anda untuk meminimalkan terhadap sumber daya sistem.
Sebelum menambahkan penguncian layar saat aktif ke aplikasi, pertimbangkan apakah kasus penggunaan Anda diselesaikan dengan salah satu solusi alternatif berikut:
- Jika aplikasi Anda dapat didownload dengan berjalan lama, pertimbangkan untuk menggunakan pengambilan di latar belakang.
- Jika aplikasi Anda menyinkronkan data dari server eksternal, pertimbangkan untuk menggunakan sinkronisasi latar belakang.
Demo
Lihat demo Penguncian Layar Aktif dan sumber demo. Perhatikan bagaimana penguncian layar saat aktif otomatis dilepaskan saat Anda beralih tab atau aplikasi.
Penguncian Layar Saat Aktif di pengelola tugas OS
Anda dapat menggunakan pengelola tugas sistem operasi Anda untuk melihat apakah aplikasi mencegah komputer Anda dari tidur. Video di bawah menunjukkan macOS Pemantau Aktivitas menunjukkan bahwa Chrome memiliki penguncian layar saat aktif yang aktif yang membuat sistem tetap aktif.
Masukan
Grup Komunitas Inkubator Platform Web (WICG) dan tim Chrome ingin mendengar tentang dan pengalaman dengan Screen Wake Lock API.
Beri tahu kami tentang desain API
Apakah ada sesuatu terkait API yang tidak berfungsi seperti yang diharapkan? Atau apakah ada metode atau properti yang hilang yang diperlukan untuk menerapkan ide Anda?
- Ajukan masalah spesifikasi di repo GitHub Screen Wake Lock API atau sampaikan pendapat Anda tentang masalah yang sudah ada.
Laporkan masalah terkait penerapan
Apakah Anda menemukan bug pada implementasi Chrome? Ataukah implementasi berbeda dengan spesifikasi?
- Laporkan bug di https://new.crbug.com. Pastikan untuk menyertakan sebanyak mungkin
sedetail mungkin, berikan petunjuk sederhana untuk mereproduksi bug, dan
tetapkan Komponen ke
Blink>WakeLock
. Glitch berfungsi dengan baik untuk berbagi repro yang cepat dan mudah.
Menunjukkan dukungan untuk API
Anda berencana menggunakan Screen Wake Lock API? Dukungan publik Anda membantu Tim Chrome memprioritaskan fitur dan menunjukkan kepada vendor browser lainnya cara pentingnya mendukung mereka.
- Bagikan rencana Anda untuk menggunakan API di thread Discourse WICG.
- Kirim tweet ke @ChromiumDev menggunakan hashtag
#WakeLock
dan beri tahu kami tempat serta cara Anda menggunakannya.
Link bermanfaat
- Spesifikasi Rekomendasi Kandidat | Draf Editor
- Demo Penguncian Layar Bangun | Sumber Demo Penguncian Layar Aktif
- Bug pelacakan
- Entri ChromeStatus.com
- Bereksperimen dengan Wake Lock API
- Komponen Kedipan:
Blink>WakeLock
Ucapan terima kasih
Banner besar oleh Kate Stone Matheson di Unsplash. Video pengelola tugas disediakan oleh Henry Lim.