Computer >> 컴퓨터 >  >> 프로그램 작성 >> Redis

서버리스 Redis 및 React Native를 사용한 인앱 공지

모바일 애플리케이션에서는 앱의 최종 사용자에게 일부 정보, 경고 또는 지침을 보내야 할 수도 있습니다. 이를 수행하는 한 가지 방법은 사용자에게 인앱 공지를 보내는 것입니다.

이 블로그 게시물에서는 서버리스 Redis를 사용하여 사용자에게 공지 사항을 보내는 방법을 보여주는 모바일 애플리케이션을 개발할 것입니다. React Native를 사용하여 모바일 애플리케이션을 개발하고 앱에 직접 연결된 서버리스 Redis용 Upstash를 사용합니다.

인앱 공지란 무엇입니까?

인앱 공지사항은 최종 사용자에게 중요한 것을 알리거나, 행동에 대해 알리거나, 어딘가로 안내하기 위해 전송되는 메시지입니다.

이러한 발표를 통해 개발자는 코드를 업데이트하거나 앱의 새 릴리스를 게시하지 않고도 사용자와 소통할 수 있습니다.

우리의 경우 사용자가 한 번만 읽어야 하는 메시지를 알리는 솔루션을 구현할 것입니다. 이 구현은 다음과 같은 일부 목적에 사용할 수 있습니다.

  • 업데이트 또는 새 릴리스 발표
  • 앱의 새로운 기능 발표
  • 100만 사용자 달성 등 사용자와 함께 기념하기

서버리스 공지사항

우리의 경우 마지막 공지 사항을 사용자에게 한 번만 보여주고 싶습니다. 따라서 각 공지에 버전을 할당하여 주문하고, 사용자가 아직 보지 못한 경우 최신 공지를 사용자에게 보내야 합니다. 따라서 우리가 만족하려고 하는 조건은

  • 최신 공지사항만 표시
  • 모든 사용자에게 한 번만 공지사항 표시

이를 위해 Redis의 정렬된 집합이 정확히 우리에게 필요한 것입니다. 공지사항을 버전별로 저장하고 정렬하여 공지사항을 추적하는 데 도움이 됩니다.

정렬된 집합은 키가 문자열 메시지이고 값이 문자열 메시지에 할당된 점수인 맵과 같은 형식의 정렬된 데이터 유형입니다. 우리의 경우 발표 버전에 해당하는 점수별로 정렬됩니다.

가장 첫 번째 단계로 Upstash 데이터베이스 콘솔을 만들어야 합니다.

그런 다음 서버리스 Redis에 공지 사항을 작성하기 시작할 수 있습니다. 저는 코딩으로 모든 것을 자동화하는 것을 좋아하기 때문에 Python 스크립트를 작성하여 새로운 공지 사항을 추가하는 것을 선호합니다.

먼저 Python 스크립트에서 Upstash Redis를 구성해야 합니다.

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)

그런 다음 내 데이터베이스에서 최신 버전을 가져와 새 메시지를 Redis에 추가하고 다음 형식으로 새 메시지를 추가할 수 있습니다.

{“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})

Upstash 콘솔의 새로운 기능 덕분에 데이터를 표시하고 콘솔의 "데이터 브라우저" 섹션에서 시각화할 수 있습니다.

<강한> 서버리스 Redis 및 React Native를 사용한 인앱 공지

이것이 우리가 정렬된 세트에 새로운 공지 사항을 추가하는 방법입니다.

물론 이것은 새 공지 사항을 추가하는 한 가지 방법일 뿐입니다. 콘솔( https://console.upstash.com/ )을 직접 사용하는 것이 편하신 분이라면 사용하셔도 됩니다.

서버리스 Redis에 앱 연결

이 데모에서 주요 목표는 사용자를 데이터베이스의 알림과 연결하는 백엔드 서비스 없이 최종 사용자를 Redis에 직접 연결하여 알림 컨트롤을 만드는 것입니다.

모바일 앱에서 Redis의 공지 사항을 읽을 수 있도록 Upstash 콘솔에서 읽기 전용 토큰을 얻을 수 있습니다.

<강한> 서버리스 Redis 및 React Native를 사용한 인앱 공지

이제 모바일 애플리케이션용 React Native로 넘어갈 수 있습니다. React Native에 대한 자세한 내용을 보려면 react native를 방문하세요.

React Native를 처음 사용하려면 환경 설정 단계를 따르세요.

인앱 공지 사항 중 하나를 구현하는 방법을 보여주기만 하면 되므로 새 메시지가 있는 경우 새 메시지를 경고로 표시하는 화면 하나만 디자인합니다.

화면에서 읽기 전용 토큰을 사용하여 Redis에 HTTP 요청을 보내 새 메시지가 있는지 확인해야 합니다. 이를 위해서는 과거에 Redis에서 검색한 최신 버전을 저장해야 합니다.

React Native의 로컬 저장소로 react-native-encrypted-storage를 사용할 수 있습니다.

사용자가 이 화면을 열 때마다 휴대폰의 로컬 저장소에 저장된 버전보다 높은 버전의 최신 메시지를 가져와야 합니다.

결과를 하나의 결과로 제한하여 로컬에 저장된 버전까지 +inf에서 ZRANGEBYSCORE를 사용하는 것이 우리 문제에 대한 해결책이 될 수 있습니다. Redis 명령에 대한 자세한 내용은 Redis 명령에서 찾을 수 있습니다.

다음 코드 세그먼트는 React Native에서 다음 단계를 구현합니다.

  • 표시된 최신 메시지의 저장된 버전을 가져옵니다.
  • Upstash에 HTTP 요청을 보내 이전 단계에서 얻은 것보다 더 높은 버전의 최신 공지를 받아보세요.
  • 요청에서 새 메시지가 반환되면 이를 표시하고 로컬 저장소의 버전을 업데이트합니다.
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);
  });

마지막으로 최신 공지 사항을 경고로 표시하고 로컬 버전을 Redis의 최신 버전과 동기화할 수 있습니다.

<강한> 서버리스 Redis 및 React Native를 사용한 인앱 공지

이 간단한 애플리케이션의 전체 소스 코드는 github에서 사용할 수 있습니다.

결론

이 포스트에서는 새로운 메시지가 존재하는 경우 사용자에게 한 번만 새 메시지를 보내는 인앱 알림 시스템을 개발했습니다.

사용자는 사용자가 아직 보지 못한 최신 공지를 받습니다. 그런 다음 수신된 메시지의 버전이 로컬 저장소에 저장됩니다. 사용자가 화면을 열 때마다 애플리케이션은 Redis에 새 메시지가 있는지 여부를 확인합니다.

이 솔루션은 읽기 전용 토큰을 통해 모바일 앱에서 Upstash Redis로 직접 연결하여 백엔드 서비스 없이 구현할 수 있습니다.

이 게시물이 사용자와 쉽게 소통하는 데 도움이 되었으면 합니다.