কম্পিউটার

সার্ভারলেস রেডিস এবং প্রতিক্রিয়া নেটিভ সহ অ্যাপ-মধ্যস্থ ঘোষণা

একটি মোবাইল অ্যাপ্লিকেশনে, অ্যাপের শেষ ব্যবহারকারীদের কাছে কিছু তথ্য, সতর্কতা বা নির্দেশিকা পাঠানোর প্রয়োজন হতে পারে। এটি করার একটি উপায় হল ব্যবহারকারীদের কাছে অ্যাপ-মধ্যস্থ ঘোষণা পাঠানো।

এই ব্লগ পোস্টে, আমরা সার্ভারহীন রেডিস সহ ব্যবহারকারীদের কাছে কীভাবে ঘোষণা পাঠাতে হয় তা দেখানোর জন্য একটি মোবাইল অ্যাপ্লিকেশন তৈরি করব। আমরা একটি সার্ভারহীন রেডিসের জন্য একটি মোবাইল অ্যাপ্লিকেশন এবং Upstash তৈরি করতে রিঅ্যাক্ট নেটিভ ব্যবহার করব, যা সরাসরি অ্যাপের সাথে সংযুক্ত৷

একটি ইন-অ্যাপ ঘোষণা কি?

অ্যাপ-মধ্যস্থ ঘোষণাগুলি হল সেই বার্তাগুলি যা শেষ-ব্যবহারকারীদের কাছে তাদের গুরুত্বপূর্ণ কিছু সম্পর্কে অবহিত করতে, তাদের ক্রিয়াকলাপ সম্পর্কে অবহিত করতে বা কোথাও তাদের গাইড করার জন্য পাঠানো হয়৷

এই ঘোষণাগুলি কোনও কোড আপডেট না করে বা অ্যাপের একটি নতুন প্রকাশ প্রকাশ না করেই ব্যবহারকারীদের সাথে যোগাযোগ করতে বিকাশকারীদের সাহায্য করে৷

আমাদের ক্ষেত্রে, আমরা ব্যবহারকারীদের একবার পড়ার জন্য প্রয়োজনীয় বার্তাগুলি ঘোষণা করার জন্য একটি সমাধান প্রয়োগ করব। এই বাস্তবায়ন কিছু উদ্দেশ্যে ব্যবহার করা যেতে পারে যেমন:

  • আপডেট বা একটি নতুন প্রকাশের ঘোষণা
  • অ্যাপটিতে একটি নতুন বৈশিষ্ট্য ঘোষণা করা হচ্ছে
  • ব্যবহারকারীদের সাথে কিছু উদযাপন করা যেমন 1 মিলিয়ন ব্যবহারকারীর কাছে পৌঁছানো ইত্যাদি।

সার্ভারহীন ঘোষণা

আমাদের ক্ষেত্রে, আমরা ব্যবহারকারীদের শেষ ঘোষণাটি শুধুমাত্র একবার দেখাতে চাই। অতএব, প্রতিটি ঘোষণার জন্য তাদের অর্ডার দেওয়ার জন্য একটি সংস্করণ বরাদ্দ করা উচিত এবং ব্যবহারকারীর কাছে সর্বশেষ ঘোষণাটি পাঠাতে হবে যদি ব্যবহারকারী এখনও এটি না দেখে থাকেন। সুতরাং, আমরা আমাদের ক্ষেত্রে যে শর্তগুলি পূরণ করার চেষ্টা করব তা হল

  • শুধুমাত্র সর্বশেষ ঘোষণা প্রদর্শন করা হচ্ছে
  • প্রত্যেক ব্যবহারকারীর জন্য মাত্র একবার ঘোষণা প্রদর্শন করা হচ্ছে

এই উদ্দেশ্যে, রেডিস-এ একটি সাজানো সেট আমাদের প্রয়োজন। এটি ঘোষণাগুলিকে তাদের সংস্করণ অনুসারে সংরক্ষণ এবং বাছাই করে ট্র্যাক রাখতে সহায়তা করে৷

একটি সাজানো সেট হল একটি সাজানো ডেটা টাইপ যা একটি মানচিত্রের মতো বিন্যাসে যেখানে কী হল স্ট্রিং বার্তা এবং মান হল স্ট্রিং বার্তার জন্য নির্ধারিত স্কোর। এটি স্কোর দ্বারা বাছাই করা হয়, যা আমাদের ক্ষেত্রে আমাদের ঘোষণার সংস্করণগুলির সাথে মিলে যায়৷

প্রথম ধাপ হিসেবে, আমাদের একটি Upstash ডাটাবেস কনসোল তৈরি করতে হবে।

তারপর, আমরা ঘোষণা দিয়ে আমাদের সার্ভারহীন রেডিস পূরণ করা শুরু করতে পারি। যেহেতু আমি কোডিং করে সবকিছু স্বয়ংক্রিয় করতে পছন্দ করি, তাই আমি পাইথন স্ক্রিপ্ট লিখে নতুন ঘোষণা যোগ করতে পছন্দ করি।

প্রথমে, আমার পাইথন স্ক্রিপ্টে আমার 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 কনসোলে নতুন বৈশিষ্ট্যের জন্য ধন্যবাদ, আমরা আমাদের ডেটা প্রদর্শন করতে পারি এবং কনসোলের "ডেটা ব্রাউজার" বিভাগে এটিকে কল্পনা করতে পারি৷

সার্ভারলেস রেডিস এবং প্রতিক্রিয়া নেটিভ সহ অ্যাপ-মধ্যস্থ ঘোষণা

এভাবেই আমরা আমাদের সাজানো সেটে নতুন ঘোষণা যোগ করতে পারি।

অবশ্যই, এটি একটি নতুন ঘোষণা যোগ করার একমাত্র উপায়। যদি কেউ সরাসরি কনসোল ব্যবহার করতে স্বাচ্ছন্দ্যবোধ করেন ( https://console.upstash.com/ ), তাহলে এটিও ব্যবহার করা যেতে পারে৷

অ্যাপটিকে সার্ভারহীন রেডিসের সাথে সংযুক্ত করা হচ্ছে

এই প্রদর্শনীতে, মূল লক্ষ্য হল ডাটাবেসের ঘোষণার সাথে ব্যবহারকারীদের সংযোগকারী কোনো ব্যাকএন্ড পরিষেবার প্রয়োজন ছাড়াই সরাসরি শেষ-ব্যবহারকারীদেরকে Redis-এর সাথে সংযুক্ত করে একটি ঘোষণা নিয়ন্ত্রণ তৈরি করা৷

মোবাইল অ্যাপ থেকে Redis-এ ঘোষণা পড়তে সক্ষম হওয়ার জন্য, আমরা Upstash কনসোল থেকে শুধুমাত্র পঠনযোগ্য টোকেন পেতে পারি।

সার্ভারলেস রেডিস এবং প্রতিক্রিয়া নেটিভ সহ অ্যাপ-মধ্যস্থ ঘোষণা

এখন, আমরা মোবাইল অ্যাপ্লিকেশনের জন্য প্রতিক্রিয়া নেটিভ-এ যেতে পারি। প্রতিক্রিয়া নেটিভ সম্পর্কে আরও তথ্য পেতে, অনুগ্রহ করে প্রতিক্রিয়া নেটিভ দেখুন।

প্রথমবার রিঅ্যাক্ট নেটিভ ব্যবহার শুরু করতে, অনুগ্রহ করে পরিবেশ সেটআপের ধাপগুলি অনুসরণ করুন।

যেহেতু আমাদের শুধু দেখাতে হবে কিভাবে অ্যাপ-মধ্যস্থ ঘোষণার একটি উপায় বাস্তবায়ন করা যায়, তাই আমরা শুধুমাত্র একটি স্ক্রীন ডিজাইন করব যা নতুন বার্তাটিকে সতর্কতা হিসাবে প্রদর্শন করবে, যদি একটি নতুন বার্তা উপস্থিত থাকে।

স্ক্রিনে, আমাদের শুধুমাত্র পঠনযোগ্য টোকেন ব্যবহার করে Redis-এ একটি HTTP অনুরোধ পাঠিয়ে একটি নতুন বার্তা বিদ্যমান আছে কি না তা পরীক্ষা করতে হবে। এটি করার জন্য, আমাদের অতীতে Redis থেকে পুনরুদ্ধার করা সর্বশেষ সংস্করণ সংরক্ষণ করতে হবে৷

আমরা প্রতিক্রিয়া নেটিভ-এ স্থানীয় স্টোরেজ হিসাবে react-native-encrypted-storage ব্যবহার করতে পারি।

ব্যবহারকারী যখনই এই স্ক্রীনটি খোলে, আমাদের মোবাইল ফোনের স্থানীয় স্টোরেজে সংরক্ষিত সংস্করণের চেয়ে উচ্চতর সংস্করণের সর্বশেষ বার্তাটি পেতে হবে৷

ফলাফলগুলিকে শুধুমাত্র একটি ফলাফলের মধ্যে সীমাবদ্ধ করে স্থানীয়ভাবে সংরক্ষিত সংস্করণে +inf থেকে ZRANGEBYSCORE ব্যবহার করা আমাদের সমস্যার সমাধান হতে পারে। 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);
  });

শেষে, আমরা একটি সতর্কতা হিসাবে সর্বশেষ ঘোষণা প্রদর্শন করতে পারি এবং স্থানীয় সংস্করণটিকে Redis-এর সর্বশেষ সংস্করণের সাথে সিঙ্ক্রোনাইজ করতে পারি।

সার্ভারলেস রেডিস এবং প্রতিক্রিয়া নেটিভ সহ অ্যাপ-মধ্যস্থ ঘোষণা

এই সহজ অ্যাপ্লিকেশনটির সম্পূর্ণ সোর্স কোড গিথুবে উপলব্ধ।

উপসংহার

এই পোস্টে, আমরা একটি ইন-অ্যাপ ঘোষণা সিস্টেম তৈরি করেছি, যা ব্যবহারকারীদের কাছে একটি নতুন বার্তা পাঠাচ্ছে যদি একটি নতুন বার্তা উপস্থিত থাকে৷

ব্যবহারকারী সর্বশেষ ঘোষণাটি পান যা ব্যবহারকারী এখনও দেখেননি। তারপরে প্রাপ্ত বার্তাটির সংস্করণ স্থানীয় স্টোরেজে সংরক্ষণ করা হয়। প্রতিবার ব্যবহারকারী স্ক্রীন খোলে, অ্যাপ্লিকেশনটি পরীক্ষা করে যে Redis-এ একটি নতুন বার্তা আছে কি না।

এই সমাধানটি শুধুমাত্র পঠনযোগ্য টোকেনের মাধ্যমে মোবাইল অ্যাপ থেকে Upstash Redis-এ সরাসরি সংযোগ করে কোনো ব্যাকএন্ড পরিষেবা ছাড়াই প্রয়োগ করা যেতে পারে।

আমি আশা করি এই পোস্টটি আপনাকে ব্যবহারকারীদের সাথে সহজ উপায়ে যোগাযোগ করতে সাহায্য করবে৷


  1. Nuxt 3 এবং সার্ভারলেস রেডিস দিয়ে শুরু করা

  2. ফ্লটার, সার্ভারলেস ফ্রেমওয়ার্ক এবং আপস্ট্যাশ (REDIS) সহ ফুলস্ট্যাক সার্ভারলেস অ্যাপ - পার্ট 2

  3. ফ্লটার, সার্ভারলেস ফ্রেমওয়ার্ক এবং আপস্ট্যাশ (REDIS) সহ ফুলস্ট্যাক সার্ভারলেস অ্যাপ - পার্ট 1

  4. ক্লাউডফ্লেয়ার ওয়ার্কার এবং সার্ভারলেস রেডিস দিয়ে আপনার ওয়েব সাইটের জন্য আপনার নিজস্ব ওয়েটিং রুম তৈরি করুন