Computer >> Máy Tính >  >> Lập trình >> Redis

Thông báo trong ứng dụng với Serverless Redis và React Native

Trong ứng dụng dành cho thiết bị di động, có thể cần gửi một số thông tin, cảnh báo hoặc hướng dẫn cho người dùng cuối trong ứng dụng. Một cách để làm điều này là gửi thông báo trong ứng dụng cho người dùng.

Trong bài đăng trên blog này, chúng tôi sẽ phát triển một ứng dụng di động để hướng dẫn cách gửi thông báo đến người dùng bằng Redis không máy chủ. Chúng tôi sẽ sử dụng React Native để phát triển ứng dụng di động và Upstash cho Redis không máy chủ, được kết nối trực tiếp với ứng dụng.

Thông báo trong ứng dụng là gì?

Thông báo trong ứng dụng là những thông điệp được gửi đến người dùng cuối để thông báo cho họ về điều gì đó quan trọng, thông báo cho họ về hành động của họ hoặc hướng dẫn họ đến một nơi nào đó.

Những thông báo này giúp nhà phát triển giao tiếp với người dùng mà không cần cập nhật bất kỳ mã nào hoặc xuất bản bản phát hành mới của ứng dụng.

Trong trường hợp của chúng tôi, chúng tôi sẽ triển khai giải pháp thông báo tin nhắn cần được người dùng đọc chỉ một lần. Việc triển khai này có thể được sử dụng cho một số mục đích như:

  • Thông báo bản cập nhật hoặc bản phát hành mới
  • Thông báo một tính năng mới trong ứng dụng
  • Kỷ niệm điều gì đó với người dùng, chẳng hạn như đạt được 1 triệu người dùng, v.v.

Thông báo không có máy chủ

Trong trường hợp của chúng tôi, chúng tôi chỉ muốn hiển thị thông báo cuối cùng cho người dùng một lần. Do đó, một phiên bản nên được chỉ định cho mỗi thông báo để đặt hàng chúng, và gửi thông báo mới nhất cho người dùng nếu người dùng chưa nhìn thấy nó. Vì vậy, các điều kiện mà chúng tôi sẽ cố gắng đáp ứng trong trường hợp của chúng tôi là

  • Chỉ hiển thị thông báo mới nhất
  • Hiển thị thông báo chỉ một lần cho mọi người dùng

Vì mục đích này, một tập hợp được sắp xếp trong Redis chính xác là thứ mà chúng ta cần. Nó giúp theo dõi các thông báo bằng cách lưu trữ và phân loại chúng theo các phiên bản của chúng.

Tập hợp được sắp xếp là một kiểu dữ liệu được sắp xếp có định dạng giống như một bản đồ trong đó khóa là thông điệp chuỗi và giá trị là điểm được gán cho thông báo chuỗi. Nó được sắp xếp theo điểm số, tương ứng với các phiên bản thông báo của chúng tôi trong trường hợp của chúng tôi.

Bước đầu tiên, chúng ta cần tạo một bảng điều khiển cơ sở dữ liệu Upstash.

Sau đó, chúng tôi có thể bắt đầu điền vào Redis không máy chủ của chúng tôi với các thông báo. Vì tôi thích tự động hóa mọi thứ bằng cách viết mã, nên tôi thích thêm các thông báo mới bằng cách viết tập lệnh Python.

Lúc đầu, tôi cần định cấu hình Upstash Redis của mình trong tập lệnh Python của mình:

import json
import redis

r = redis.Redis(
host= 'YOUR_REDIS_ENDPOINT',
port= 'YOUR_REDIS_PORT',
password= 'YOUR_REDIS_PASSWORD',
charset="utf-8",
decode_responses=True)

Sau đó, tôi có thể thêm tin nhắn mới của mình vào Redis bằng cách tải phiên bản mới nhất từ ​​cơ sở dữ liệu của mình và thêm tin nhắn mới ở định dạng sau:

{“new_message”: latest_version + 1}
message = "Please update the application before using it."

last_message = r.zrange("Announcements", 0, 0, withscores=True, desc=True)
new_version = 0
if len(last_message) > 0:
	new_version = last_message[0][1] + 1
r.zadd("Announcements", {message: new_version})

Nhờ tính năng mới trên bảng điều khiển Upstash, chúng tôi có thể hiển thị dữ liệu của mình và trực quan hóa dữ liệu đó trong phần “Trình duyệt dữ liệu” trên bảng điều khiển.

Thông báo trong ứng dụng với Serverless Redis và React Native

Đó là cách chúng tôi có thể thêm các thông báo mới vào nhóm đã sắp xếp của mình.

Tất nhiên, đây chỉ là một cách để thêm một thông báo mới. Nếu bất kỳ ai cảm thấy thoải mái khi sử dụng trực tiếp bảng điều khiển (https://console.upstash.com/), thì cũng có thể sử dụng bảng điều khiển đó.

Kết nối ứng dụng với Serverless Redis

Trong phần trình diễn này, mục đích chính là tạo kiểm soát thông báo bằng cách kết nối trực tiếp người dùng cuối với Redis mà không cần bất kỳ dịch vụ phụ trợ nào kết nối người dùng với thông báo trong cơ sở dữ liệu.

Để có thể đọc thông báo trong Redis từ các ứng dụng dành cho thiết bị di động, chúng tôi có thể nhận mã thông báo chỉ đọc từ bảng điều khiển Upstash.

Thông báo trong ứng dụng với Serverless Redis và React Native

Bây giờ, chúng ta có thể chuyển sang ứng dụng React Native dành cho thiết bị di động. Để biết thêm thông tin về React Native, vui lòng truy cập react native.

Để bắt đầu sử dụng React Native lần đầu tiên, hãy làm theo các bước trong thiết lập môi trường.

Vì chúng tôi chỉ cần chỉ ra cách triển khai một trong các cách thông báo trong ứng dụng, chúng tôi sẽ thiết kế chỉ một màn hình hiển thị thông báo mới dưới dạng cảnh báo, nếu có thông báo mới.

Trên màn hình, chúng ta cần kiểm tra xem một thông báo mới có tồn tại hay không bằng cách gửi một yêu cầu HTTP đến Redis bằng cách sử dụng mã thông báo chỉ đọc. Để thực hiện việc này, chúng tôi cần lưu trữ phiên bản mới nhất đã lấy từ Redis trước đây.

Chúng ta có thể sử dụng react-native-enccode-storage làm bộ nhớ cục bộ trong React Native.

Mỗi khi người dùng mở màn hình này, chúng tôi cần nhận được thông báo mới nhất có phiên bản cao hơn phiên bản được lưu trữ trong bộ nhớ cục bộ của điện thoại di động.

Việc sử dụng ZRANGEBYSCORE từ + inf đến phiên bản được lưu trữ trong cục bộ bằng cách giới hạn kết quả chỉ ở một kết quả có thể là một giải pháp cho vấn đề của chúng tôi. Để biết thêm thông tin chi tiết về các lệnh Redis, bạn có thể tìm thấy tại lệnh Redis.

Đoạn mã tiếp theo thực hiện các bước sau trong React Native:

  • Hiển thị phiên bản đã lưu trữ của thông báo mới nhất.
  • Gửi yêu cầu HTTP tới Upstash để nhận thông báo mới nhất, có phiên bản cao hơn so với chúng tôi nhận được ở bước trước.
  • Nếu tin nhắn mới trả về từ yêu cầu, hãy hiển thị nó và cập nhật phiên bản trong bộ nhớ cục bộ.
var version = await EncryptedStorage.getItem("announcement_version");
if (version == null) {
  version = "-1";
}
version = parseInt(version);
console.log(version);
await fetch(
  "REPLACE_UPSTASH_REDIS_REST_URL/zrangebyscore/Announcements/+inf/" +
    version +
    "/WITHSCORES/LIMIT/0/1",
  {
    method: "GET",
    headers: {
      Authorization: "Bearer REPLACE_UPSTASH_REDIS_REST_READONLY_TOKEN",
      Accept: "application/json",
      "Content-Type": "application/json",
    },
  }
)
  .then((response) => response.json())
  .then((data) => {
    var announcement = data["result"];
    if (announcement && announcement.length > 0) {
      version = parseInt(announcement[1]) + 1;
      var message = announcement[0];
      EncryptedStorage.setItem("announcement_version", version.toString());
      Alert.alert("You have new message!", message);
    }
  })
  .catch((err) => {
    console.error(err);
  });

Cuối cùng, chúng tôi có thể hiển thị thông báo mới nhất dưới dạng cảnh báo và đồng bộ hóa phiên bản cục bộ lên phiên bản mới nhất trong Redis.

Thông báo trong ứng dụng với Serverless Redis và React Native

Mã nguồn hoàn chỉnh của ứng dụng đơn giản này có sẵn trên github.

Kết luận

Trong bài đăng này, chúng tôi đã phát triển một hệ thống thông báo trong ứng dụng, hệ thống này sẽ gửi một tin nhắn mới đến người dùng chỉ một lần nếu có một tin nhắn mới.

Người dùng nhận được thông báo mới nhất mà người dùng chưa thấy. Sau đó, phiên bản của tin nhắn đã nhận được lưu trữ trong bộ nhớ cục bộ. Mỗi khi người dùng mở màn hình, ứng dụng sẽ kiểm tra xem có tin nhắn mới trong Redis hay không.

Giải pháp này có thể được triển khai mà không cần bất kỳ dịch vụ phụ trợ nào bằng cách kết nối trực tiếp từ ứng dụng di động với Upstash Redis thông qua mã thông báo chỉ đọc.

Tôi hy vọng bài đăng này sẽ giúp bạn giao tiếp với người dùng một cách dễ dàng.