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

Trước khi đi vào API, hãy xem xét đẩy từ cấp cao, từ đầu đến cuối. Sau đó, khi chúng tôi bước qua từng chủ đề hoặc API riêng lẻ sau này, bạn sẽ biết cách thức và lý do rất quan trọng.

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

  1. Thêm logic phía máy khách để đăng ký đưa người dùng đến (tức là JavaScript và giao diện người dùng trong ứng dụng web đăng ký người dùng gửi thông báo).
  2. Lệnh gọi API từ phần 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 của trình chạy dịch vụ sẽ nhận được "sự kiện đẩy" khi cổ phiếu được đẩy thiết bị. Trong JavaScript này, bạn sẽ có thể hiển thị thông báo.

Hãy cùng xem xét chi tiết hơn một chút về mỗi bước trong số này.

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

Bước đầu tiên là "đăng ký" đẩy thông báo.

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

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

Tất cả đều được thực hiện trong JavaScript thông qua API đẩy.

Hỗ trợ trình duyệt

  • Chrome: 42.
  • Cạnh: 17.
  • Firefox: 44.
  • Safari: 16.

Nguồn

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

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

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

Hãy nhớ gửi Gói thuê bao đẩy đến phần phụ trợ.

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 để đẩy . Lệnh gọi API này sẽ bao gồm dữ liệu cần gửi, người nhận thông báo và bất kỳ 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 bạn có thể tự hỏi bản thân:

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

Ai và dịch vụ đẩy là gì?

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

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

Để lấy URL thích hợp kích hoạ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ị mà bạn sẽ nhận được từ mộ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 cho một người dùng, được biểu thị bằng 'some-kind-of-unique-id-1234'. Khi bắt đầu với thao tác đẩy, bạn sẽ thấy mẫu này.

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

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

Tôi đã đề cập rằng mọi dịch vụ đẩy web đều dự kiến có 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 bạn phải đặt một số tiêu đề và dữ liệu phải là một luồng byte. Chúng tôi sẽ xem xét các thư viện có thể thực hiện lệnh gọi API này cho chúng ta cũng như cách tự thực hiện.

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

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

Dữ liệu mà bạn gửi kèm thông báo đẩy phải được mã hoá. Lý do là vì ngăn các dịch vụ đẩy xem dữ liệu được gửi bằng thông báo đẩy. Điều này rất quan trọng vì chính trình duyệt mới quyết định việc đẩy dịch vụ nào đến vì kỹ thuật này có thể tạo điều kiện cho các trình duyệt 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 này sẽ vẫn nằm trong hàng đợi cho đến khi thiết bị của người dùng kết nối mạng và yêu cầu đẩy có thể gửi thông báo. Những hướng dẫn mà bạn có thể cung cấp cho dịch vụ đẩy xác định cách thông báo đẩy đã được đưa vào hàng đợi.

Hướng dẫn bao gồm các thông tin chi tiết như:

  • Thời gian tồn tại của thông báo đẩy. Điều này xác định khoảng thời gian một thư được đưa vào hàng đợi trước khi nó đã bị xoá và không được phân phối.

  • Xác định mức độ cấp thiết của thông điệp. Điều này 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 tin nhắn có mức độ ưu tiên cao.

  • Đưa ra "chủ đề" cho thông báo đẩy Tên này sẽ thay thế mọi thư đang chờ xử lý bằng thông báo mới này.

Khi muốn gửi 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 dịch vụ đẩy.

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

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

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

Khi dịch vụ đẩy phân phối một thư, trình duyệt sẽ nhận được thư, 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.

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

Nó nằm trong "đẩy" của trình chạy dịch vụ sự kiện mà 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 cuộc gọi đến số liệu phân tích, lưu các trang vào bộ nhớ đệm khi không có mạng và hiện thông báo.

Khi một 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ụ của bạn sẽ nhận được một sự kiện đẩy

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

Điểm đến tiếp theo

Phòng thí nghiệm lập trình