परिचय
एक मोबाइल एप्लिकेशन में, अंतिम उपयोगकर्ताओं को ऐप में कुछ जानकारी, चेतावनी या मार्गदर्शन भेजने की आवश्यकता हो सकती है। ऐसा करने का एक तरीका उपयोगकर्ताओं को इन-ऐप घोषणाएं भेजना है।
इस ब्लॉग पोस्ट में, हम सर्वरलेस Redis के साथ उपयोगकर्ताओं को घोषणाएं भेजने का तरीका दिखाने के लिए एक मोबाइल एप्लिकेशन विकसित करेंगे। हम मोबाइल एप्लिकेशन विकसित करने के लिए React Native और सर्वरलेस Redis के लिए Upstash का उपयोग करेंगे, जो सीधे ऐप से जुड़ा हुआ है।
इन-ऐप घोषणा क्या है?
इन-ऐप घोषणाएं वे संदेश हैं जो अंतिम उपयोगकर्ताओं को किसी महत्वपूर्ण चीज़ के बारे में सूचित करने, उनके कार्यों के बारे में सूचित करने या उन्हें कहीं मार्गदर्शन करने के लिए भेजे जाते हैं।
ये घोषणाएं डेवलपर्स को किसी भी कोड को अपडेट किए या ऐप का नया रिलीज़ प्रकाशित किए बिना उपयोगकर्ताओं के साथ संवाद करने में मदद करती हैं।
हमारे मामले में, हम उन संदेशों की घोषणा करने के लिए एक समाधान लागू करेंगे जिन्हें उपयोगकर्ताओं द्वारा केवल एक बार पढ़ने की आवश्यकता होती है। इस कार्यान्वयन का उपयोग कुछ उद्देश्यों के लिए किया जा सकता है जैसे:
- अपडेट या नए रिलीज़ की घोषणा करना
- ऐप में नई सुविधा की घोषणा करना
- उपयोगकर्ताओं के साथ कुछ मनाना जैसे 1 मिलियन उपयोगकर्ताओं तक पहुंचना आदि।
सर्वरलेस घोषणाएं
हमारे मामले में, हम उपयोगकर्ताओं को केवल अंतिम घोषणा एक बार दिखाना चाहते हैं। इसलिए, घोषणाओं को क्रमबद्ध करने के लिए प्रत्येक घोषणा को एक संस्करण निर्दिष्ट किया जाना चाहिए, और यदि उपयोगकर्ता ने इसे अभी तक नहीं देखा है तो उपयोगकर्ता को नवीनतम घोषणा भेजें। इसलिए, शर्तें जिन्हें हम अपने मामले में पूरा करने का प्रयास करेंगे वे हैं:
- केवल नवीनतम घोषणा प्रदर्शित करना
- प्रत्येक उपयोगकर्ता के लिए घोषणा केवल एक बार प्रदर्शित करना
इस उद्देश्य के लिए, Redis में एक सॉर्टेड सेट ठीक वही है जो हमें चाहिए। यह घोषणाओं को उनके संस्करणों के अनुसार संग्रहीत और क्रमबद्ध करके ट्रैक रखने में मदद करता है।
एक सॉर्टेड सेट एक क्रमबद्ध डेटा प्रकार है जो मैप जैसे फॉर्मेट में होता है जहां कुंजी स्ट्रिंग संदेश है और मान स्ट्रिंग संदेश को निर्दिष्ट स्कोर है। यह स्कोर के अनुसार क्रमबद्ध होता है, जो हमारे मामले में हमारी घोषणाओं के संस्करणों से मेल खाता है।
सबसे पहले, हमें Upstash डेटाबेस कंसोल से एक Upstash डेटाबेस बनाने की आवश्यकता है।
फिर, हम अपने सर्वरलेस Redis को घोषणाओं से भरना शुरू कर सकते हैं। चूंकि मुझे कोडिंग द्वारा सब कुछ स्वचालित करना पसंद है, मैं पायथन स्क्रिप्ट लिखकर नई घोषणाएं जोड़ना पसंद करता हूं।
सबसे पहले, मुझे अपने पायथन स्क्रिप्ट में 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 = "कृपया उपयोग करने से पहले एप्लिकेशन को अपडेट करें।"
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/), तो उसका भी उपयोग किया जा सकता है।
ऐप को सर्वरलेस Redis से जोड़ना
इस प्रदर्शन में, मुख्य उद्देश्य किसी भी बैकएंड सर्विस की आवश्यकता के बिना एंड-यूज़र्स को सीधे Redis से जोड़कर एक घोषणा नियंत्रण बनाना है जो उपयोगकर्ताओं को डेटाबेस में घोषणाओं से जोड़ता है।
मोबाइल ऐप्स से Redis में घोषणाओं को पढ़ने में सक्षम होने के लिए, हम Upstash कंसोल से रीड-ओनली टोकन प्राप्त कर सकते हैं।
अब, हम मोबाइल एप्लिकेशन के लिए React Native पर जा सकते हैं। React Native के बारे में अधिक जानकारी के लिए, कृपया React Native देखें।
पहली बार React Native का उपयोग शुरू करने के लिए, कृपया पर्यावरण सेटअप में चरणों का पालन करें।
चूंकि हमें केवल इन-ऐप घोषणाओं के तरीकों में से एक को लागू करने का तरीका दिखाने की आवश्यकता है, हम केवल एक स्क्रीन डिज़ाइन करेंगे जो नए संदेश को अलर्ट के रूप में प्रदर्शित करती है, यदि कोई नया संदेश मौजूद है।
स्क्रीन पर, हमें रीड-ओनली टोकन का उपयोग करके Redis को HTTP अनुरोध भेजकर यह जांचने की आवश्यकता है कि कोई नया संदेश मौजूद है या नहीं। ऐसा करने के लिए, हमें अतीत में Redis से प्राप्त नवीनतम संस्करण को स्थानीय स्टोरेज में संग्रहीत करने की आवश्यकता है।
हम स्थानीय स्टोरेज के रूप में 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("आपके पास नया संदेश है!", message);
}
})
.catch((err) => {
console.error(err);
});
अंत में, हम नवीनतम घोषणा को अलर्ट के रूप में प्रदर्शित कर सकते हैं और Redis में नवीनतम संस्करण के साथ स्थानीय संस्करण को सिंक्रनाइज़ कर सकते हैं।
इस सरल एप्लिकेशन का पूरा सोर्स कोड github पर उपलब्ध है।
निष्कर्ष
इस पोस्ट में, हमने एक इन-ऐप घोषणा प्रणाली विकसित की, जो एक नया संदेश उपयोगकर्ताओं को केवल एक बार भेजती है यदि कोई नया संदेश मौजूद है।
उपयोगकर्ता को नवीनतम घोषणा प्राप्त होती है जिसे उपयोगकर्ता ने अभी तक नहीं देखा है। फिर प्राप्त संदेश का संस्करण स्थानीय स्टोरेज में संग्रहीत होता है। हर बार जब उपयोगकर्ता स्क्रीन खोलता है, तो एप्लिकेशन जांचता है कि Redis में कोई नया संदेश है या नहीं।
इस समाधान को रीड-ओनली टोकन के माध्यम से मोबाइल ऐप से सीधे Upstash Redis से जोड़कर किसी भी बैकएंड सर्विस के बिना लागू किया जा सकता है।
मुझे उम्मीद है कि यह पोस्ट आपको उपयोगकर्ताओं के साथ आसान तरीके से संवाद करने में मदद करेगा।