Как создать ярлыки приложений

Франсуа Бофор
François Beaufort

Ярлыки приложений помогают пользователям быстро запускать общие или рекомендуемые задачи в вашем веб-приложении. Легкий доступ к этим задачам из любого места, где отображается значок приложения, повысит производительность пользователей, а также увеличит их взаимодействие с веб-приложением.

Определите ярлыки приложений в манифесте веб-приложения.

Меню ярлыков приложений вызывается щелчком правой кнопкой мыши значка приложения на панели задач (Windows) или в закреплении (macOS) на рабочем столе пользователя либо нажатием и удерживанием значка запуска приложения на Android.

Открытое меню ярлыков приложений на Android.
Меню ярлыков приложений открыто на Android
Открытое меню ярлыков приложений в Windows.
Меню ярлыков приложений открыто в Windows

Меню ярлыков приложений отображается только для установленных прогрессивных веб-приложений . Ознакомьтесь с разделом «Установка» в нашем модуле «Изучение PWA» , чтобы узнать о требованиях к установке.

Каждый ярлык приложения выражает намерение пользователя, каждое из которых связано с URL-адресом в рамках вашего веб-приложения. URL-адрес открывается, когда пользователь активирует ярлык приложения.

Ярлыки приложений дополнительно объявляются в элементе массива shortcuts манифеста веб-приложения . Ниже приведен пример потенциального манифеста веб-приложения.

{
 
"name": "Player FM",
 
"start_url": "https://player.fm?utm_source=homescreen",
 
"shortcuts": [
   
{
     
"name": "Open Play Later",
     
"short_name": "Play Later",
     
"description": "View the list of podcasts you saved for later",
     
"url": "/play-later?utm_source=homescreen",
     
"icons": [{ "src": "/icons/play-later.png", "sizes": "192x192" }]
   
},
   
{
     
"name": "View Subscriptions",
     
"short_name": "Subscriptions",
     
"description": "View the list of podcasts you listen to",
     
"url": "/subscriptions?utm_source=homescreen",
     
"icons": [{ "src": "/icons/subscriptions.png", "sizes": "192x192" }]
   
}
 
]
}

Поддержка браузера

  • 96
  • 96
  • Икс
  • 17,4

Источник

Классический способ

Если приложение еще не установлено, вы можете предложить пользователю перетащить некоторые ссылки с вашей веб-страницы и оставить их на панели закладок браузера. Таким образом, они смогут быстро запускать общие или рекомендуемые задачи в вашем веб-приложении.

дальнейшее чтение

Демо

<!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 create app shortcuts</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 create app shortcuts</h1>
   
<ol>
     
<li>
        You can drag these
<a href="blue.html">blue page</a> or
       
<a href="red.html">red page</a> links to the bookmarks bar
        and access them later.
     
</li>
     
<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>
   
</ol>
 
</body>
</html>

       
// 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
();
 
});
}