Đăng ký trình xử lý giao thức URL cho PWA

Cho phép các PWA đã cài đặt xử lý những đường liên kết sử dụng một giao thức cụ thể để có trải nghiệm tích hợp hơn.

Thông tin cơ bản về lược đồ (hay còn gọi là giao thức)

Mã nhận dạng tài nguyên thống nhất (URI) là một chuỗi ký tự thu gọn giúp xác định một tài nguyên trừu tượng hoặc tài nguyên vật lý. Mỗi URI bắt đầu bằng tên lược đồ tham chiếu đến thông số kỹ thuật để chỉ định giá trị nhận dạng trong lược đồ đó. Do đó, cú pháp URI là một hệ thống đặt tên liên kết và có thể mở rộng, trong đó thông số kỹ thuật của mỗi lược đồ có thể hạn chế hơn nữa cú pháp và ngữ nghĩa của giá trị nhận dạng bằng lược đồ đó. Lược đồ còn được gọi là giao thức. Bạn có thể xem một số ví dụ về lược đồ.

tel:+1-816-555-1212
mailto:Jane.Doe@example.com
news:comp.infosystems.www.servers.unix
https://web.dev/

Thuật ngữ Hệ thống định vị tài nguyên thống nhất (URL) đề cập đến một tập hợp con của URI, ngoài việc xác định tài nguyên, còn cung cấp phương tiện để định vị tài nguyên bằng cách mô tả cơ chế truy cập chính (ví dụ: vị trí mạng).

Thông tin cơ bản về phương thức registerProtocolHandler()

Phương thức Navigator chỉ dành cho nội dung bảo mật registerProtocolHandler() cho phép các trang web đăng ký khả năng mở hoặc xử lý các lược đồ URL cụ thể. Do đó, các trang web cần gọi phương thức như sau: navigator.registerProtocolHandler(scheme, url). Hai tham số được xác định như sau:

  • scheme: Một chuỗi chứa giao thức mà trang web muốn xử lý.
  • url: Chuỗi chứa URL của trình xử lý. URL này phải bao gồm %s, dưới dạng phần giữ chỗ sẽ được thay thế bằng URL thoát cần xử lý.

Lược đồ phải là một trong các lược đồ có trong danh sách cho phép (ví dụ: mailto, bitcoin hoặc magnet) hoặc bắt đầu bằng web+, theo sau là ít nhất một hoặc nhiều chữ cái ASCII viết thường sau tiền tố web+, chẳng hạn như web+coffee.

Để làm rõ hơn, sau đây là ví dụ cụ thể về quy trình này:

  1. Người dùng truy cập vào một trang web tại https://coffeeshop.example.com/ thực hiện lệnh gọi sau: navigator.registerProtocolHandler('web+coffee', 'coffee?type=%s').
  2. Sau đó, khi truy cập vào https://randomsite.example.com/, người dùng nhấp vào một đường liên kết, chẳng hạn như <a href="web+coffee:latte-macchiato">All about latte macchiato</a>.
  3. Thao tác này khiến trình duyệt chuyển đến URL sau: https://coffeeshop.example.com/coffee?type=web%2Bcoffee%3A%2F%2Flatte-macchiato. Chuỗi tìm kiếm đã giải mã URL sẽ có dạng ?type=web+coffee://latte-macchiato.

Xử lý giao thức là gì?

Cơ chế đăng ký trình xử lý giao thức URL cho PWA hiện tại là cung cấp tính năng đăng ký trình xử lý giao thức trong quá trình cài đặt PWA thông qua tệp kê khai của PWA. Sau khi đăng ký PWA làm trình xử lý giao thức, khi người dùng nhấp vào một siêu liên kết có lược đồ cụ thể như mailto, bitcoin hoặc web+music từ trình duyệt hoặc ứng dụng dành riêng cho nền tảng, PWA đã đăng ký sẽ mở và nhận URL. Điều quan trọng cần lưu ý là cả quy trình đăng ký dựa trên tệp kê khai được đề xuất và registerProtocolHandler() truyền thống đều đóng vai trò rất giống nhau trong thực tế, đồng thời vẫn cho phép trải nghiệm người dùng bổ sung:

  • Điểm tương đồng bao gồm các yêu cầu về danh sách lược đồ được phép đăng ký, tên và định dạng của tham số, v.v.
  • Sự khác biệt trong quy trình đăng ký dựa trên tệp kê khai là rất nhỏ, nhưng có thể hữu ích trong việc nâng cao trải nghiệm cho người dùng PWA. Ví dụ: việc đăng ký PWA dựa trên tệp kê khai có thể không yêu cầu người dùng thực hiện thêm hành động nào ngoài việc cài đặt PWA do người dùng bắt đầu.

Trường hợp sử dụng

  • Trong một PWA xử lý văn bản, người dùng trong tài liệu gặp một đường liên kết đến bản trình bày như web+presentations://deck2378465. Khi người dùng nhấp vào đường liên kết, PWA bản trình bày sẽ tự động mở trong phạm vi chính xác và hiển thị bản trình bày.
  • Trong một ứng dụng trò chuyện dành riêng cho nền tảng, người dùng trong tin nhắn trò chuyện sẽ nhận được một đường liên kết đến URL magnet. Khi người dùng nhấp vào đường liên kết, một PWA torrent đã cài đặt sẽ khởi chạy và bắt đầu tải xuống.
  • Người dùng đã cài đặt một PWA phát nhạc trực tuyến. Khi một người bạn chia sẻ đường liên kết đến một bài hát như web+music://songid=1234&time=0:13 và người dùng nhấp vào đường liên kết đó, PWA phát trực tuyến nhạc sẽ tự động khởi chạy trong một cửa sổ độc lập.

Cách sử dụng tính năng đăng ký làm trình xử lý giao thức URL cho PWA

API để đăng ký làm trình xử lý giao thức URL được mô phỏng chặt chẽ trên navigator.registerProtocolHandler(). Chỉ lần này, thông tin được truyền một cách khai báo bằng cách sử dụng tệp kê khai ứng dụng web trong một thuộc tính mới có tên là "protocol_handlers". Thuộc tính này lấy một mảng đối tượng có hai khoá bắt buộc là "protocol" và "url". Đoạn mã sau đây cho biết cách đăng ký web+tea và web+coffee. Các giá trị là chuỗi chứa URL của trình xử lý có phần giữ chỗ %s bắt buộc cho URL được thoát.

{
  "protocol_handlers": [
    {
      "protocol": "web+tea",
      "url": "/tea?type=%s"
    },
    {
      "protocol";: "web+coffee",
      "url": "/coffee?type=%s"
    }
  ]
}

Nhiều ứng dụng đăng ký cùng một giao thức

Nếu nhiều ứng dụng tự đăng ký làm trình xử lý cho cùng một giao thức, ví dụ: giao thức mailto, thì hệ điều hành sẽ hiển thị cho người dùng một bộ chọn và cho phép họ quyết định trình xử lý đã đăng ký nào sẽ được sử dụng.

Cùng một ứng dụng đăng ký nhiều giao thức

Cùng một ứng dụng có thể tự đăng ký nhiều giao thức, như bạn có thể thấy trong mã mẫu.

Bản cập nhật ứng dụng và đăng ký trình xử lý

Các lượt đăng ký trình xử lý được đồng bộ hoá với phiên bản tệp kê khai mới nhất do ứng dụng cung cấp. Có hai trường hợp:

  • Bản cập nhật bổ sung trình xử lý mới sẽ kích hoạt việc đăng ký trình xử lý (tách biệt với quá trình cài đặt ứng dụng).
  • Bản cập nhật xoá trình xử lý sẽ kích hoạt việc huỷ đăng ký trình xử lý (tách biệt với việc gỡ cài đặt ứng dụng).

Gỡ lỗi trình xử lý giao thức trong Công cụ cho nhà phát triển

Chuyển đến phần Trình xử lý giao thức bằng ngăn Ứng dụng > Tệp kê khai. Bạn có thể xem và kiểm tra tất cả các giao thức hiện có tại đây.

Trình xử lý giao thức trong ngăn Manifest (Tệp kê khai)

Lưu ý về bảo mật

Vì quá trình cài đặt PWA yêu cầu bối cảnh phải an toàn, nên việc xử lý giao thức sẽ kế thừa quy tắc ràng buộc này. Danh sách các trình xử lý giao thức đã đăng ký không được hiển thị trên web theo bất kỳ cách nào, vì vậy, danh sách này không thể được dùng làm vectơ lấy vân tay số.

Thao tác điều hướng không do người dùng thực hiện

Các nỗ lực điều hướng không phải do người dùng bắt đầu mà là do lập trình có thể không mở được ứng dụng. Bạn chỉ có thể sử dụng URL giao thức tuỳ chỉnh trong bối cảnh duyệt web cấp cao nhất, chứ không thể sử dụng, ví dụ: làm URL của iframe.

Danh sách giao thức được cho phép

Tương tự như registerProtocolHandler(), có một danh sách cho phép các giao thức mà ứng dụng có thể đăng ký để xử lý.

Trong lần đầu tiên khởi chạy PWA do một giao thức được gọi, người dùng sẽ thấy một hộp thoại cấp quyền. Hộp thoại này sẽ hiển thị tên ứng dụng và nguồn gốc của ứng dụng, đồng thời hỏi người dùng xem ứng dụng có được phép xử lý các đường liên kết từ giao thức hay không. Nếu người dùng từ chối hộp thoại cấp quyền, thì hệ điều hành sẽ bỏ qua trình xử lý giao thức đã đăng ký. Để huỷ đăng ký trình xử lý giao thức, người dùng cần gỡ cài đặt PWA đã đăng ký trình xử lý đó. Trình duyệt cũng sẽ huỷ đăng ký trình xử lý giao thức nếu người dùng chọn "Nhớ lựa chọn của tôi" và chọn "Không cho phép".

Phản hồi

Nhóm Chromium muốn lắng nghe trải nghiệm của bạn về việc đăng ký trình xử lý giao thức URL cho PWA.

Hãy cho chúng tôi biết về thiết kế API

Có điểm nào trong API không hoạt động như bạn mong đợi không? Hay có phương thức hoặc thuộc tính nào còn thiếu mà bạn cần để triển khai ý tưởng của mình không? Bạn có câu hỏi hoặc nhận xét về mô hình bảo mật? Gửi vấn đề về thông số kỹ thuật trên kho lưu trữ GitHub tương ứng hoặc thêm ý kiến của bạn vào một vấn đề hiện có.

Báo cáo vấn đề về việc triển khai

Bạn có phát hiện lỗi trong quá trình triển khai Chromium không? Hay cách triển khai khác với thông số kỹ thuật? Gửi lỗi tại new.crbug.com. Hãy nhớ cung cấp càng nhiều thông tin chi tiết càng tốt, hướng dẫn tái hiện và nhập UI>Browser>WebAppInstalls vào hộp Thành phần.

Thể hiện sự ủng hộ đối với API

Bạn có dự định sử dụng tính năng đăng ký làm trình xử lý giao thức URL cho PWA không? Sự ủng hộ công khai của bạn giúp nhóm Chromium ưu tiên các tính năng và cho các nhà cung cấp trình duyệt khác thấy tầm quan trọng của việc hỗ trợ các tính năng đó.

Hãy chia sẻ cách bạn dự định sử dụng API này trên chuỗi thảo luận của WICG. Gửi một Tweet đến @ChromiumDev bằng hashtag #ProtocolHandler và cho chúng tôi biết bạn đang sử dụng tính năng này ở đâu và như thế nào.

Xác nhận

Tính năng đăng ký làm trình xử lý giao thức URL cho PWA được triển khai và chỉ định bởi Fabio Rocha, Diego González, Connor Moody và Samuel Tang trong nhóm Microsoft Edge. Tài liệu này đã được Joe Medley và Fabio Rocha xem xét.