Computer >> कंप्यूटर >  >> प्रोग्रामिंग >> Redis

सर्वर रहित रेडिस और रिएक्ट नेटिव के साथ इन-ऐप घोषणाएं

मोबाइल एप्लिकेशन में, ऐप में अंतिम उपयोगकर्ताओं को कुछ जानकारी, चेतावनियां या मार्गदर्शन भेजने की आवश्यकता हो सकती है। ऐसा करने का एक तरीका उपयोगकर्ताओं को इन-ऐप घोषणाएं भेजना है।

इस ब्लॉग पोस्ट में, हम सर्वर रहित रेडिस वाले उपयोगकर्ताओं को घोषणाएं भेजने का तरीका दिखाने के लिए एक मोबाइल एप्लिकेशन विकसित करेंगे। हम मोबाइल एप्लिकेशन विकसित करने के लिए रिएक्ट नेटिव का उपयोग करेंगे और सर्वर रहित रेडिस के लिए अपस्टैश, जो सीधे ऐप से जुड़ा है।

इन-ऐप अनाउंसमेंट क्या है?

इन-ऐप घोषणाएं वे संदेश हैं जो अंतिम उपयोगकर्ताओं को किसी महत्वपूर्ण चीज़ के बारे में सूचित करने, उन्हें उनके कार्यों के बारे में सूचित करने या उन्हें कहीं और मार्गदर्शन करने के लिए भेजे जाते हैं।

ये घोषणाएं डेवलपर्स को बिना किसी कोड को अपडेट किए या ऐप की नई रिलीज़ प्रकाशित किए बिना उपयोगकर्ताओं के साथ संवाद करने में मदद करती हैं।

हमारे मामले में, हम उन संदेशों की घोषणा करने के लिए एक समाधान लागू करेंगे जिन्हें उपयोगकर्ताओं द्वारा केवल एक बार पढ़ने की आवश्यकता है। इस कार्यान्वयन का उपयोग कुछ उद्देश्यों के लिए किया जा सकता है जैसे:

  • अपडेट या नई रिलीज़ की घोषणा करना
  • ऐप में एक नई सुविधा की घोषणा
  • उपयोगकर्ताओं के साथ कुछ जश्न मनाना जैसे कि 1 मिलियन उपयोगकर्ताओं तक पहुंचना आदि।

सर्वर रहित घोषणाएं

हमारे मामले में, हम उपयोगकर्ताओं को केवल एक बार अंतिम घोषणा दिखाना चाहते हैं। इसलिए, प्रत्येक घोषणा को आदेश देने के लिए एक संस्करण सौंपा जाना चाहिए, और यदि उपयोगकर्ता ने इसे अभी तक नहीं देखा है तो उपयोगकर्ता को नवीनतम घोषणा भेजें। इसलिए, हम अपने मामले में जिन शर्तों को पूरा करने का प्रयास करेंगे वे हैं

  • केवल नवीनतम घोषणा प्रदर्शित कर रहा है
  • हर उपयोगकर्ता के लिए केवल एक बार घोषणा प्रदर्शित करना

ऐसा करने के लिए, रेडिस में एक सॉर्ट किया गया सेट बिल्कुल वही है जिसकी हमें आवश्यकता है। यह घोषणाओं को उनके संस्करणों के अनुसार संग्रहीत और क्रमबद्ध करके उन पर नज़र रखने में मदद करता है।

एक सॉर्ट किया गया सेट एक सॉर्ट किया गया डेटा प्रकार होता है जो एक मानचित्र की तरह प्रारूप में होता है जहां कुंजी स्ट्रिंग संदेश होता है और मान स्ट्रिंग संदेश को असाइन किया गया स्कोर होता है। इसे स्कोर के आधार पर क्रमबद्ध किया जाता है, जो हमारे मामले में हमारी घोषणाओं के संस्करणों के अनुरूप होता है।

पहले चरण के रूप में, हमें एक Upstash डेटाबेस कंसोल बनाने की आवश्यकता है।

फिर, हम अपने सर्वर रहित रेडिस को घोषणाओं से भरना शुरू कर सकते हैं। चूंकि मुझे कोडिंग द्वारा सब कुछ स्वचालित करना पसंद है, इसलिए मैं पायथन लिपि लिखकर नई घोषणाएं जोड़ना पसंद करता हूं।

सबसे पहले, मुझे अपने अपस्टैश रेडिस को अपनी पायथन लिपि में कॉन्फ़िगर करने की आवश्यकता है:

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)

फिर, मैं अपने डेटाबेस से नवीनतम संस्करण प्राप्त करके रेडिस में अपना नया संदेश जोड़ सकता हूं और निम्न प्रारूप में नया संदेश जोड़ सकता हूं:

{“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 कंसोल पर नई सुविधा के लिए धन्यवाद, हम अपना डेटा प्रदर्शित कर सकते हैं और कंसोल पर "डेटा ब्राउज़र" अनुभाग में इसकी कल्पना कर सकते हैं।

<मजबूत> सर्वर रहित रेडिस और रिएक्ट नेटिव के साथ इन-ऐप घोषणाएं

इस तरह हम अपने क्रमबद्ध सेट में नई घोषणाएं जोड़ सकते हैं।

बेशक, यह एक नई घोषणा जोड़ने का सिर्फ एक तरीका है। अगर कोई सीधे कंसोल का उपयोग करने में सहज है (https://console.upstash.com/), तो इसका भी उपयोग किया जा सकता है।

एप्लिकेशन को सर्वर रहित रेडिस से कनेक्ट करना

इस प्रदर्शन में, मुख्य उद्देश्य उपयोगकर्ताओं को डेटाबेस में घोषणाओं से जोड़ने वाली किसी भी बैकएंड सेवा की आवश्यकता के बिना रेडिस से सीधे अंतिम उपयोगकर्ताओं को जोड़कर एक घोषणा नियंत्रण बनाना है।

मोबाइल एप्लिकेशन से रेडिस में घोषणाओं को पढ़ने में सक्षम होने के लिए, हम अपस्टैश कंसोल से केवल-पढ़ने के लिए टोकन प्राप्त करने में सक्षम हैं।

<मजबूत> सर्वर रहित रेडिस और रिएक्ट नेटिव के साथ इन-ऐप घोषणाएं

अब, हम मोबाइल एप्लिकेशन के लिए रिएक्ट नेटिव पर आगे बढ़ सकते हैं। रिएक्ट नेटिव के बारे में अधिक जानकारी प्राप्त करने के लिए, कृपया रिएक्ट नेटिव पर जाएँ।

पहली बार रिएक्ट नेटिव का उपयोग शुरू करने के लिए, कृपया पर्यावरण सेटअप में दिए गए चरणों का पालन करें।

चूँकि हमें केवल यह दिखाने की ज़रूरत है कि इन-ऐप घोषणाओं के तरीकों में से एक को कैसे लागू किया जाए, हम केवल एक स्क्रीन डिज़ाइन करेंगे जो नए संदेश को अलर्ट के रूप में प्रदर्शित करेगी, यदि कोई नया संदेश मौजूद है।

स्क्रीन पर, हमें रीड-ओनली टोकन का उपयोग करके रेडिस को HTTP अनुरोध भेजकर यह जांचना होगा कि कोई नया संदेश मौजूद है या नहीं। ऐसा करने के लिए, हमें अतीत में Redis से प्राप्त नवीनतम संस्करण को संग्रहीत करने की आवश्यकता है।

हम रिएक्ट नेटिव में स्थानीय स्टोरेज के रूप में रिएक्ट-नेटिव-एन्क्रिप्टेड-स्टोरेज का उपयोग कर सकते हैं।

हर बार जब उपयोगकर्ता इस स्क्रीन को खोलता है, तो हमें नवीनतम संदेश प्राप्त करने की आवश्यकता होती है, जिसका संस्करण मोबाइल फोन के स्थानीय भंडारण में संग्रहीत संस्करण से अधिक होता है।

ZRANGEBYSCORE का उपयोग + inf से उस संस्करण में करना जो परिणामों को केवल एक परिणाम तक सीमित करके स्थानीय में संग्रहीत किया जाता है, हमारी समस्या का समाधान हो सकता है। Redis कमांड के बारे में अधिक विस्तृत जानकारी के लिए Redis कमांड पर पाया जा सकता है।

अगला कोड खंड रिएक्ट नेटिव में निम्नलिखित चरणों को लागू करता है:

  • नवीनतम संदेश का संग्रहीत संस्करण प्रदर्शित करें।
  • नवीनतम घोषणा प्राप्त करने के लिए 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);
  });

अंत में, हम नवीनतम घोषणा को अलर्ट के रूप में प्रदर्शित कर सकते हैं और स्थानीय संस्करण को रेडिस के नवीनतम संस्करण में सिंक्रनाइज़ कर सकते हैं।

<मजबूत> सर्वर रहित रेडिस और रिएक्ट नेटिव के साथ इन-ऐप घोषणाएं

इस सरल एप्लिकेशन का पूरा सोर्स कोड जीथब पर उपलब्ध है।

निष्कर्ष

इस पोस्ट में, हमने एक इन-ऐप घोषणा प्रणाली विकसित की है, जो एक नया संदेश मौजूद होने पर उपयोगकर्ताओं को केवल एक बार एक नया संदेश भेज रही है।

उपयोगकर्ता को नवीनतम घोषणा प्राप्त होती है जिसे उपयोगकर्ता ने अभी तक नहीं देखा है। फिर प्राप्त संदेश का संस्करण स्थानीय भंडारण में संग्रहीत किया जाता है। हर बार जब उपयोगकर्ता स्क्रीन खोलता है, तो एप्लिकेशन जांचता है कि रेडिस में कोई नया संदेश है या नहीं।

इस समाधान को केवल-पढ़ने के लिए टोकन के माध्यम से मोबाइल ऐप से Upstash Redis से सीधे कनेक्ट करके बिना किसी बैकएंड सेवा के लागू किया जा सकता है।

मुझे उम्मीद है कि यह पोस्ट आपको आसान तरीके से उपयोगकर्ताओं के साथ संवाद करने में मदद करेगी।


  1. फ़्लटर, सर्वरलेस फ्रेमवर्क और अपस्टैश (रेडिस) के साथ फुलस्टैक सर्वरलेस ऐप - भाग 2

    इस ट्यूटोरियल श्रृंखला के भाग 2 में आपका स्वागत है। पहले भाग में, हमने देखा कि Upstash, Serverless Framework और Redis का उपयोग करके REST API कैसे बनाया जाता है। इस भाग में, हम अपने REST API समापन बिंदुओं का उपभोग करने के लिए, Flutter का उपयोग करके एक मोबाइल एप्लिकेशन बनाएंगे। आइए शुरू करें 🙃 सबस

  1. फ़्लटर, सर्वरलेस फ्रेमवर्क और अपस्टैश (REDIS) के साथ फुलस्टैक सर्वर रहित ऐप - भाग 1

    इस पोस्ट में, हम डेटा स्टोर करने के लिए फ़्लटर, सर्वरलेस फ्रेमवर्क, अपस्टैश और रेडिस के साथ एक सर्वर रहित मोबाइल एप्लिकेशन का निर्माण करेंगे। अपस्टैश क्या है? Upstash Redis के लिए एक सर्वर रहित डेटाबेस है। Upstash के साथ, आप प्रति-अनुरोध का भुगतान करते हैं। इसका मतलब है कि जब डेटाबेस उपयोग में नहीं

  1. क्लाउडफ्लेयर वर्कर्स और सर्वरलेस रेडिस के साथ अपनी वेब साइट के लिए अपना स्वयं का प्रतीक्षालय बनाएं

    इस ब्लॉग पोस्ट में, हम आपकी वेबसाइट के लिए एक प्रतीक्षालय पृष्ठ लागू करेंगे। क्यों? आपकी वेबसाइट पर विज़िटर्स की अधिक संख्या सामान्य तौर पर अच्छी बात है लेकिन हमेशा नहीं। अचानक उच्च ट्रैफ़िक आपके एप्लिकेशन को आसानी से अभिभूत कर सकता है जो आपकी सेवाओं को पूरी तरह से बाधित कर सकता है। प्रतीक्षालय एक