Uygulama mağazaları, geliştiricilerin yüklemeden önce uygulamalarını sergilemeleri için bir alan sağlar. Bu alanla birlikte, kullanıcıların uygulamayı yükleme seçimine yardımcı olacak ekran görüntüleri ve metin bilgileri de sağlanır. Daha zengin yükleme kullanıcı arayüzü, web uygulaması geliştiricilerinin, kullanıcılarını uygulamalarını doğrudan tarayıcıdan yüklemeye davet etmeleri için benzer bir alan sağlar. Bu geliştirilmiş kullanıcı arayüzü, Android ve masaüstü ortamları için Chrome'da kullanılabilir.
Varsayılan istem
Varsayılan deneyim için, yeterli bağlam bilgisinin sunulmadığı aşağıdaki örneğe bakın.
![Masaüstü için tarayıcının varsayılan yükleme iletişim kutusu.](https://web.dev/static/patterns/web-apps/richer-install-ui/images/y5sNbIN19bPNbqni3xay.png?authuser=5&hl=tr)
![Mobil cihazlar için tarayıcının varsayılan yükleme iletişim kutusu.](https://web.dev/static/patterns/web-apps/richer-install-ui/images/yshUdzH27Gm1Rzdj9s8O.png?authuser=5&hl=tr)
Daha Zengin Yükleme Kullanıcı Arayüzü
Normal küçük varsayılan istem yerine Daha Zengin Yükleme Kullanıcı Arayüzü iletişim kutusunu almak için web manifest dosyanıza screenshots
ve description
alanlarını ekleyin. Aşağıdaki Squoosh.app örneğini inceleyin:
![Masaüstü ve mobil cihazlarda daha zengin yükleme kullanıcı arayüzü](https://web.dev/static/patterns/web-apps/richer-install-ui/images/5SlCnibmZHqkXdGVgPZY.jpeg?authuser=5&hl=tr)
Daha Zengin Yükleme Kullanıcı Arayüzü iletişim kutusu, web manifestindeki description
ve screenshots
alanlarının içeriğinden oluşur.
İletişim kutusunu tetiklemek için ilgili form faktörüne yönelik en az bir ekran görüntüsü eklemeniz yeterlidir, ancak açıklamanın da eklenmesi önerilir. Bu alanlarla ilgili ayrıntıları aşağıda bulabilirsiniz.
Ekran görüntüleri
Ekran görüntüleri gerçekten "daha zengin" bölümünü yeni yükleme arayüzüne ekleyeceğiz. Bu yüzden, bunların kullanılmasını kesinlikle öneririz. Manifest dosyanıza screenshots
üyesini ekleyin. Bu üye, en az bir resim gerektiren bir diziyi alır ve Chrome en fazla sekiz resim gösterir. Aşağıda bununla ilgili bir örnek gösterilmektedir.
"screenshots": [
{
"src": "source/image1.png",
"sizes": "640x320",
"type": "image/png",
"form_factor": "wide",
"label": "Wonder Widgets"
}
]
Ekran görüntüleri aşağıdaki ölçütlere uygun olmalıdır:
- Genişlik ve yükseklik en az 320 piksel,en fazla 3.840 piksel olmalıdır.
- Maksimum boyut, minimum boyutun 2,3 katından fazla olamaz.
- Aynı form faktörü değerine sahip tüm ekran görüntülerinin en boy oranları aynı olmalıdır.
- Yalnızca JPEG ve PNG resim biçimleri desteklenir.
- Yalnızca sekiz ekran görüntüsü gösterilecek. Daha fazla hedef eklenirse kullanıcı aracısı bunları yoksayar.
Ayrıca, resmin doğru şekilde oluşturulması için resmin boyutunu ve türünü eklemeniz gerekir. Bu demoyu inceleyin.
form_factor
, tarayıcıya ekran görüntüsünün masaüstünde mi (wide
) yoksa mobil ortamlarda mı (narrow
) gösterileceğini belirtir.
Açıklama
description
üyesi, kullanıcıyı uygulamayı kullanmaya devam etmeye davet etmek için yükleme isteminde uygulamayı açıklar.
İletişim, description
olmasa bile görüntülenir, ancak önerilir.
7 satırlık (yaklaşık 324 karakter) metinden sonra gösterilen maksimum değer vardır. Daha uzun açıklamalar kısaltılır ve üç nokta eklenir (bu örnekte görebileceğiniz gibi).
{
…
"description": "Compress and compare images with different codecs
right in your browser."
}
.
![Açıklama eklendi](https://web.dev/static/patterns/web-apps/richer-install-ui/images/oOj7Ls7cQ8E274faxfOz.jpg?authuser=5&hl=tr)
![Kısaltılmış daha uzun açıklama.](https://web.dev/static/patterns/web-apps/richer-install-ui/images/Dpzs03K6QmBkZaefX2nU.jpg?authuser=5&hl=tr)
Açıklama, yükleme isteminin üst kısmında görünür.
Ekran görüntülerinde, yükleme iletişim kutularında uygulamanın kaynağının da listelendiğini fark etmiş olabilirsiniz. Kullanıcı arayüzüne sığmayacak kadar uzun olan kaynaklar kısaltılır. Bu işlem, hariç tutma olarak da bilinir. kullanıcıları korumaya yönelik bir güvenlik önlemi olarak kullanılabilir.
Daha fazla bilgi
- Daha zengin PWA yükleme kullanıcı arayüzü
- Masaüstü için daha zengin yükleme kullanıcı arayüzü kullanıma sunuldu
Demo
HTML
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<meta name="color-scheme" content="dark light" />
<link rel="manifest" href="manifest.json" />
<title>How to add Richer Install UI to your web app</title>
<!-- TODO: Devsite - Removed inline handlers -->
<!-- <script>
if ('serviceWorker' in navigator) {
window.addEventListener('load', () => {
navigator.serviceWorker.register('sw.js');
});
}
</script>
<script type="module" src="script.js"></script> -->
</head>
<body>
<h1>How to add Richer Install UI to your web app</h1>
<ol>
<li>
Install the app by clicking the button below. After the installation,
the button is disabled.
<p>
<button disabled type="button">Install</button>
</p>
</li>
<li>
When you click on install a dialog similar to the ones from app stores
will be displayed.
</li>
<li>
The dialog includes the `description` and `screenshots` set in the app
manifest.
</li>
<li>
Screenshots should be different depending if the app is being installed
on a mobile or desktop device, according to the `form_factor` value set
for the screenshots on the manifest
</li>
</ol>
</body>
</html>
JS
// The install button.
const installButton = document.querySelector('button');
// Only relevant for browsers that support installation.
if ('BeforeInstallPromptEvent' in window) {
// Variable to stash the `BeforeInstallPromptEvent`.
let installEvent = null;
// Function that will be run when the app is installed.
const onInstall = () => {
// Disable the install button.
installButton.disabled = true;
// No longer needed.
installEvent = null;
};
window.addEventListener('beforeinstallprompt', (event) => {
// Do not show the install prompt quite yet.
event.preventDefault();
// Stash the `BeforeInstallPromptEvent` for later.
installEvent = event;
// Enable the install button.
installButton.disabled = false;
});
installButton.addEventListener('click', async () => {
// If there is no stashed `BeforeInstallPromptEvent`, return.
if (!installEvent) {
return;
}
// Use the stashed `BeforeInstallPromptEvent` to prompt the user.
installEvent.prompt();
const result = await installEvent.userChoice;
// If the user installs the app, run `onInstall()`.
if (result.outcome === 'accepted') {
onInstall();
}
});
// The user can decide to ignore the install button
// and just use the browser prompt directly. In this case
// likewise run `onInstall()`.
window.addEventListener('appinstalled', () => {
onInstall();
});
}