Cách hoạt động của tính năng đẩy

Trước khi tìm hiểu về API, hãy xem quy trình đẩy từ cấp cao, từ đầu đến cuối. Sau này, khi chúng ta khám phá các chủ đề hoặc API riêng lẻ, bạn sẽ hiểu được cách thức và lý do chúng quan trọng.

Ba bước chính để triển khai phương pháp đẩy là:

  1. Thêm logic phía máy khách để đăng ký người dùng đẩy (tức là JavaScript và giao diện người dùng trong ứng dụng web của bạn đăng ký người dùng để đẩy thông báo).
  2. Lệnh gọi API từ chương trình phụ trợ / ứng dụng của bạn kích hoạt thông báo đẩy đến thiết bị của người dùng.
  3. Tệp JavaScript trình chạy dịch vụ sẽ nhận một "sự kiện đẩy" khi yêu cầu đẩy đến thiết bị. Bạn có thể hiển thị thông báo trong JavaScript này.

Hãy xem xét kỹ hơn một chút về yêu cầu của mỗi bước này.

Bước 1: Phía máy khách

Bước đầu tiên là "đăng ký" cho người dùng để gửi thông báo.

Việc đăng ký cho một người dùng cần được thực hiện hai việc. Trước tiên, việc nhận quyền từ người dùng để gửi thông báo đẩy cho họ. Thứ hai, nhận PushSubscription từ trình duyệt.

PushSubscription chứa tất cả thông tin chúng ta cần để gửi một thông báo đẩy đến người dùng đó. Bạn có thể coi đây là mã nhận dạng cho thiết bị của người dùng.

Bạn có thể thực hiện tất cả việc này trong JavaScript bằng Push API.

Hỗ trợ trình duyệt

  • 42
  • 17
  • 44
  • 16

Nguồn

Trước khi đăng ký cho người dùng, bạn cần tạo một tập hợp "khoá máy chủ ứng dụng". Chúng ta sẽ đề cập đến nội dung này sau.

Khoá máy chủ ứng dụng (còn gọi là khoá VAPID) là khoá duy nhất dành cho máy chủ của bạn. Chúng cho phép một dịch vụ đẩy biết được máy chủ ứng dụng nào đã đăng ký người dùng và đảm bảo rằng đó cũng chính là máy chủ đó đang kích hoạt thông báo đẩy đến người dùng đó.

Sau khi đăng ký cho người dùng đó và có một PushSubscription, bạn cần gửi thông tin chi tiết về PushSubscription đến phần phụ trợ / máy chủ của mình. Trên máy chủ, bạn sẽ lưu gói thuê bao này vào một cơ sở dữ liệu và dùng gói thuê bao này để gửi thông báo đẩy đến người dùng đó.

Hãy đảm bảo bạn gửi PushSubscription đến phần phụ trợ của mình.

Bước 2: Gửi thông báo đẩy

Khi muốn gửi thông báo đẩy cho người dùng, bạn cần thực hiện lệnh gọi API đến một dịch vụ đẩy. Lệnh gọi API này sẽ bao gồm dữ liệu cần gửi, người gửi thông báo và mọi tiêu chí về cách gửi thông báo. Thông thường, lệnh gọi API này được thực hiện từ máy chủ của bạn.

Một số câu hỏi mà có thể bạn đang tự hỏi:

  • Dịch vụ đẩy là ai và là gì?
  • API trông như thế nào? Có phải định dạng JSON, XML hay không?
  • API có thể làm những gì?

Dịch vụ đẩy là ai và là gì?

Dịch vụ đẩy nhận được yêu cầu mạng, xác thực yêu cầu đó và gửi thông báo đẩy đến trình duyệt thích hợp. Nếu trình duyệt ngoại tuyến, thông báo sẽ được xếp vào hàng đợi cho đến khi trình duyệt trực tuyến.

Mỗi trình duyệt có thể sử dụng bất kỳ dịch vụ đẩy nào họ muốn, đây là thứ mà nhà phát triển không có quyền kiểm soát. Đây không phải là vấn đề vì mọi dịch vụ đẩy đều yêu cầu cùng một lệnh gọi API. Có nghĩa là bạn không cần phải quan tâm dịch vụ đẩy là ai. Bạn chỉ cần đảm bảo rằng lệnh gọi API của mình là hợp lệ.

Để có được URL thích hợp kích hoạt một thông báo đẩy (tức là URL của dịch vụ đẩy), bạn chỉ cần xem giá trị endpoint trong PushSubscription.

Dưới đây là ví dụ về các giá trị bạn sẽ nhận được từ PushSubscription:

{
  "endpoint": "https://random-push-service.com/some-kind-of-unique-id-1234/v2/",
  "keys": {
    "p256dh": "BNcRdreALRFXTkOOUHK1EtK2wtaz5Ry4YfYCA_0QTpQtUbVlUls0VJXg7A8u-Ts1XbjhazAkj7I99e8QcYP7DkM=",
    "auth": "tBHItJI5svbpez7KI4CCXg=="
  }
}

Điểm cuối trong trường hợp này là [https://Random-push-service.com/some- kind-of-UNIQUE-id-1234/v2/]. Dịch vụ đẩy sẽ là "Random-push-service.com" và mỗi điểm cuối là duy nhất của một người dùng, được biểu thị bằng "some- kind-of-unique-id-1234". Khi bắt đầu làm việc với chế độ đẩy, bạn sẽ nhận thấy mẫu này.

Chúng tôi sẽ đề cập đến các khoá trong gói thuê bao này sau.

API trông như thế nào?

Tôi đã đề cập rằng mọi dịch vụ đẩy web đều yêu cầu cùng một lệnh gọi API. API đó là Giao thức đẩy web. Đây là một tiêu chuẩn IETF xác định cách bạn thực hiện lệnh gọi API đến một dịch vụ đẩy.

Lệnh gọi API yêu cầu phải đặt một số tiêu đề nhất định và dữ liệu phải ở dạng luồng byte. Chúng ta sẽ xem xét các thư viện có thể thực hiện lệnh gọi API này, cũng như cách tự thực hiện.

API có thể làm những gì?

API này cung cấp cách gửi thông báo đến người dùng có / không có dữ liệu, đồng thời hướng dẫn về cách gửi thông báo.

Dữ liệu bạn gửi bằng thông báo đẩy phải được mã hoá. Lý do là vì tính năng này ngăn các dịch vụ đẩy (có thể là bất kỳ ai) xem được dữ liệu được gửi bằng thông báo đẩy. Điều này rất quan trọng vì trình duyệt là người quyết định dịch vụ đẩy nào sẽ sử dụng, điều này có thể mở ra cơ hội cho các trình duyệt đang sử dụng dịch vụ đẩy không an toàn hoặc bảo mật.

Khi bạn kích hoạt một thông báo đẩy, dịch vụ đẩy sẽ nhận được lệnh gọi API và đưa thông báo đó vào hàng đợi. Thông báo này sẽ vẫn ở hàng đợi cho đến khi thiết bị của người dùng có kết nối mạng và dịch vụ đẩy có thể gửi thông báo. Hướng dẫn bạn có thể đưa ra cho dịch vụ đẩy sẽ xác định cách thông báo đẩy được đưa vào hàng đợi.

Nội dung hướng dẫn bao gồm những thông tin như:

  • Thời gian tồn tại của một thông báo đẩy. Thuộc tính này xác định khoảng thời gian một tin nhắn phải được đưa vào hàng đợi trước khi bị xoá và không được gửi.

  • Xác định mức độ cấp bách của thông báo. Điều này rất hữu ích trong trường hợp dịch vụ đẩy đang duy trì thời lượng pin của người dùng bằng cách chỉ gửi các thông báo có mức độ ưu tiên cao.

  • Đặt tên "chủ đề" cho thông báo đẩy để thay thế mọi thông báo đang chờ xử lý bằng thông báo mới này.

Khi muốn gửi một thông báo đẩy, máy chủ của bạn sẽ gửi yêu cầu giao thức đẩy web đến một dịch vụ đẩy.

Bước 3: Đẩy sự kiện trên thiết bị của người dùng

Sau khi chúng tôi gửi một thông báo đẩy, dịch vụ đẩy sẽ giữ thông báo của bạn trên máy chủ cho đến khi một trong các sự kiện sau xảy ra:

  1. Thiết bị được kết nối với mạng và dịch vụ đẩy sẽ gửi tin nhắn.
  2. Tin nhắn sẽ hết hạn. Nếu điều này xảy ra, dịch vụ đẩy sẽ xoá tin nhắn khỏi hàng đợi và tin nhắn đó sẽ không bao giờ được gửi.

Khi dịch vụ đẩy gửi một thông báo, trình duyệt sẽ nhận thông báo đó, giải mã mọi dữ liệu và gửi một sự kiện push trong trình chạy dịch vụ của bạn.

Trình chạy dịch vụ là một tệp JavaScript "đặc biệt". Trình duyệt có thể thực thi JavaScript này mà không cần mở trang của bạn. Trình duyệt thậm chí có thể thực thi JavaScript này khi trình duyệt đóng. Trình chạy dịch vụ cũng có API, chẳng hạn như thông báo đẩy, không có trong trang web (tức là các API không có trong tập lệnh trình chạy dịch vụ).

Nó nằm bên trong sự kiện "đẩy" của trình chạy dịch vụ để bạn có thể thực hiện bất kỳ tác vụ nào trong nền. Bạn có thể thực hiện lệnh gọi phân tích, lưu trang vào bộ nhớ đệm khi không có mạng và hiện thông báo.

Khi thông báo đẩy được gửi từ một dịch vụ đẩy đến thiết bị của người dùng, trình chạy dịch vụ sẽ nhận được một sự kiện đẩy

Đó là toàn bộ quy trình cho thông báo đẩy.

Điểm đến tiếp theo

Lớp học lập trình