Cách tạo lối tắt ứng dụng

François Beaufort
François Beaufort

Lối tắt ứng dụng giúp người dùng nhanh chóng bắt đầu các thao tác phổ biến hoặc thao tác đề xuất trong ứng dụng web của bạn. Việc dễ dàng truy cập vào các thao tác đó từ bất cứ nơi nào biểu tượng ứng dụng xuất hiện sẽ nâng cao năng suất của người dùng cũng như tăng mức độ tương tác của họ với ứng dụng web.

Bạn có thể gọi trình đơn lối tắt ứng dụng bằng cách nhấp chuột phải vào biểu tượng ứng dụng trong thanh tác vụ (Windows) hoặc thanh dock (macOS) trên máy tính của người dùng, hoặc bằng cách chạm và giữ biểu tượng trình chạy của ứng dụng trên Android.

Trình đơn lối tắt ứng dụng đã mở trên Android.
Trình đơn lối tắt ứng dụng đã mở trên Android
Một trình đơn lối tắt ứng dụng đã mở trên Windows.
Trình đơn lối tắt ứng dụng đã mở trên Windows

Trình đơn lối tắt ứng dụng chỉ hiển thị cho các Ứng dụng web tiến bộ đã cài đặt. Hãy xem phần Cài đặt trong mô-đun Tìm hiểu về PWA để tìm hiểu về các yêu cầu về khả năng cài đặt.

Mỗi lối tắt ứng dụng thể hiện một ý định của người dùng, mỗi ý định trong số đó được liên kết với một URL trong phạm vi ứng dụng web của bạn. URL được mở khi người dùng kích hoạt lối tắt ứng dụng.

Bạn có thể khai báo lối tắt ứng dụng trong thành phần mảng shortcuts của tệp kê khai ứng dụng web. Dưới đây là ví dụ về một tệp kê khai ứng dụng web tiềm năng.

{
  "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" }]
    }
  ]
}

Hỗ trợ trình duyệt

  • Chrome: 96.
  • Edge: 96.
  • Firefox: không được hỗ trợ.
  • Safari: 17.4.

Nguồn

Phong cách cổ điển

Nếu người dùng chưa cài đặt ứng dụng, bạn có thể đề xuất người dùng kéo một số đường liên kết từ trang web của bạn và thả vào thanh dấu trang của trình duyệt. Nhờ đó, khách hàng có thể nhanh chóng bắt đầu các công việc phổ biến hoặc được đề xuất trong ứng dụng web của bạn.

Tài liệu đọc thêm

Bản minh hoạ

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