Firebase রিমোট কনফিগারেশন দিয়ে শুরু করুন


আপনি আপনার অ্যাপের প্যারামিটারগুলি সংজ্ঞায়িত করতে এবং ক্লাউডে তাদের মানগুলি আপডেট করতে Firebase রিমোট কনফিগারেশন ব্যবহার করতে পারেন, যাতে আপনি কোনও অ্যাপ আপডেট বিতরণ না করেই আপনার অ্যাপের চেহারা এবং আচরণ পরিবর্তন করতে পারেন। এই নির্দেশিকাটি আপনাকে শুরু করার ধাপগুলির মধ্যে দিয়ে চলে এবং কিছু নমুনা কোড প্রদান করে, যার সবকটিই Firebase/quickstart-ios GitHub সংগ্রহস্থল থেকে ক্লোন বা ডাউনলোড করার জন্য উপলব্ধ।

ধাপ 1: আপনার অ্যাপে রিমোট কনফিগ যোগ করুন

  1. যদি আপনি ইতিমধ্যেই না করে থাকেন, তাহলে আপনার Apple প্রকল্পে Firebase যোগ করুন

  2. রিমোট কনফিগারেশনের জন্য, ব্যবহারকারীর বৈশিষ্ট্য এবং শ্রোতাদের জন্য অ্যাপ ইনস্ট্যান্সের শর্তসাপেক্ষ টার্গেট করার জন্য Google Analytics প্রয়োজন। নিশ্চিত করুন যে আপনি আপনার প্রকল্পে Google Analytics সক্ষম করুন

  3. সিঙ্গলটন রিমোট কনফিগার অবজেক্ট তৈরি করুন, যেমনটি নিম্নলিখিত উদাহরণে দেখানো হয়েছে:

    সুইফট

    remoteConfig = RemoteConfig.remoteConfig()
    let settings = RemoteConfigSettings()
    settings.minimumFetchInterval = 0
    remoteConfig.configSettings = settings

    উদ্দেশ্য গ

    self.remoteConfig = [FIRRemoteConfig remoteConfig];
    FIRRemoteConfigSettings *remoteConfigSettings = [[FIRRemoteConfigSettings alloc] init];
    remoteConfigSettings.minimumFetchInterval = 0;
    self.remoteConfig.configSettings = remoteConfigSettings;

এই অবজেক্টটি অ্যাপ-মধ্যস্থ ডিফল্ট প্যারামিটার মান সংরক্ষণ করতে, রিমোট কনফিগার ব্যাকএন্ড থেকে আপডেট করা প্যারামিটার মানগুলি আনতে এবং আপনার অ্যাপে যখন আনা মানগুলি উপলব্ধ করা হয় তখন নিয়ন্ত্রণ করতে ব্যবহৃত হয়।

বিকাশের সময়, এটি একটি অপেক্ষাকৃত কম ন্যূনতম আনার ব্যবধান সেট করার পরামর্শ দেওয়া হয়। আরও তথ্যের জন্য থ্রটলিং দেখুন।

ধাপ 2: অ্যাপ-মধ্যস্থ ডিফল্ট প্যারামিটার মান সেট করুন

আপনি রিমোট কনফিগ অবজেক্টে অ্যাপ-মধ্যস্থ ডিফল্ট প্যারামিটার মান সেট করতে পারেন, যাতে আপনার অ্যাপটি রিমোট কনফিগ ব্যাকএন্ডের সাথে সংযোগ করার আগে উদ্দেশ্য অনুযায়ী আচরণ করে এবং যাতে ব্যাকএন্ডে কোনোটি সেট না থাকলে ডিফল্ট মান উপলব্ধ থাকে।

  1. একটি NSDictionary অবজেক্ট বা একটি plist ফাইল ব্যবহার করে প্যারামিটার নামের একটি সেট এবং ডিফল্ট প্যারামিটার মান নির্ধারণ করুন।

    আপনি যদি ইতিমধ্যে রিমোট কনফিগার ব্যাকেন্ড প্যারামিটার মানগুলি কনফিগার করে থাকেন তবে আপনি একটি উত্পন্ন plist ফাইল ডাউনলোড করতে পারেন যা সমস্ত ডিফল্ট মান অন্তর্ভুক্ত করে এবং এটি আপনার এক্সকোড প্রকল্পে সংরক্ষণ করতে পারে।

    বিশ্রাম

    curl --compressed -D headers -H "Authorization: Bearer token -X GET https://firebaseremoteconfig.googleapis.com/v1/projects/my-project-id/remoteConfig:downloadDefaults?format=PLIST -o RemoteConfigDefaults.plist
    

    ফায়ারবেস কনসোল

    1. প্যারামিটার ট্যাবে, মেনুটি খুলুন এবং ডাউনলোড ডিফল্ট মানগুলি নির্বাচন করুন।

    2. যখন অনুরোধ করা হয়, আইওএসের জন্য .প্লিস্ট সক্ষম করুন, তারপরে ডাউনলোড ফাইলটি ক্লিক করুন।

  2. setDefaults: । নিম্নলিখিত উদাহরণটি একটি প্লিস্ট ফাইল থেকে অ্যাপ্লিকেশন ডিফল্ট মান সেট করে:

    সুইফট

    remoteConfig.setDefaults(fromPlist: "RemoteConfigDefaults")

    উদ্দেশ্য গ

    [self.remoteConfig setDefaultsFromPlistFileName:@"RemoteConfigDefaults"];

পদক্ষেপ 3: আপনার অ্যাপ্লিকেশনটিতে ব্যবহারের জন্য প্যারামিটার মানগুলি পান

এখন আপনি রিমোট কনফিগারেশন অবজেক্ট থেকে প্যারামিটার মান পেতে পারেন। আপনি যদি পরে রিমোট কনফিগার ব্যাকেন্ডে মানগুলি সেট করেন তবে সেগুলি আনুন এবং তারপরে সেগুলি সক্রিয় করুন, সেই মানগুলি আপনার অ্যাপ্লিকেশনটিতে উপলব্ধ। অন্যথায়, আপনি setDefaults: । এই মানগুলি পেতে, configValueForKey: পদ্ধতিটি কল করুন, একটি যুক্তি হিসাবে প্যারামিটার কী সরবরাহ করে।

পদক্ষেপ 4: প্যারামিটার মান সেট করুন

ফায়ারবেস কনসোল বা রিমোট কনফিগার ব্যাকেন্ড এপিআই ব্যবহার করে আপনি নতুন ব্যাকএন্ড ডিফল্ট মান তৈরি করতে পারেন যা আপনার পছন্দসই শর্তসাপেক্ষ যুক্তি বা ব্যবহারকারীর লক্ষ্য অনুযায়ী অ্যাপ্লিকেশন মানগুলিকে ওভাররাইড করে। এই বিভাগটি আপনাকে এই মানগুলি তৈরি করতে ফায়ারবেস কনসোল পদক্ষেপের মধ্য দিয়ে চলেছে।

  1. ফায়ারবেস কনসোলে , আপনার প্রকল্পটি খুলুন।
  2. রিমোট কনফিগারেশন ড্যাশবোর্ড দেখতে মেনু থেকে রিমোট কনফিগারেশন নির্বাচন করুন।
  3. আপনি আপনার অ্যাপ্লিকেশনটিতে সংজ্ঞায়িত প্যারামিটারগুলির মতো একই নামগুলির সাথে পরামিতিগুলি সংজ্ঞায়িত করুন। প্রতিটি প্যারামিটারের জন্য, আপনি একটি ডিফল্ট মান সেট করতে পারেন (যা শেষ পর্যন্ত অ্যাপ্লিকেশন ডিফল্ট মানটি ওভাররাইড করবে) এবং আপনি শর্তাধীন মানও সেট করতে পারেন। আরও জানতে, রিমোট কনফিগারেশন পরামিতি এবং শর্তাদি দেখুন।

পদক্ষেপ 5: মান আনুন এবং সক্রিয় করুন

রিমোট কনফিগারেশন থেকে প্যারামিটার মানগুলি আনতে, fetchWithCompletionHandler: বা fetchWithExpirationDuration:completionHandler: পদ্ধতি। আপনি ব্যাকএন্ডে সেট করা যে কোনও মানগুলি রিমোট কনফিগারেশন অবজেক্টে আনা এবং ক্যাশে করা হয়।

যেসব ক্ষেত্রে আপনি একটি কলটিতে মান আনতে এবং সক্রিয় করতে চান এমন ক্ষেত্রে, fetchAndActivateWithCompletionHandler:

এই উদাহরণটি রিমোট কনফিগারেশন ব্যাকএন্ড (ক্যাশেড মান নয়) থেকে মানগুলি নিয়ে আসে এবং activateWithCompletionHandler: অ্যাপ্লিকেশনটিতে এগুলি উপলব্ধ করার জন্য:

সুইফট

remoteConfig.fetch { (status, error) -> Void in
  if status == .success {
    print("Config fetched!")
    self.remoteConfig.activate { changed, error in
      // ...
    }
  } else {
    print("Config not fetched")
    print("Error: \(error?.localizedDescription ?? "No error available.")")
  }
  self.displayWelcome()
}

উদ্দেশ্য গ

[self.remoteConfig fetchWithCompletionHandler:^(FIRRemoteConfigFetchStatus status, NSError *error) {
    if (status == FIRRemoteConfigFetchStatusSuccess) {
        NSLog(@"Config fetched!");
      [self.remoteConfig activateWithCompletion:^(BOOL changed, NSError * _Nullable error) {
        if (error != nil) {
          NSLog(@"Activate error: %@", error.localizedDescription);
        } else {
          dispatch_async(dispatch_get_main_queue(), ^{
            [self displayWelcome];
          });
        }
      }];
    } else {
        NSLog(@"Config not fetched");
        NSLog(@"Error %@", error.localizedDescription);
    }
}];

যেহেতু এই আপডেট হওয়া প্যারামিটার মানগুলি আপনার অ্যাপ্লিকেশনটির আচরণ এবং উপস্থিতিকে প্রভাবিত করে, আপনার এমন সময়ে আনার মানগুলি সক্রিয় করা উচিত যা আপনার ব্যবহারকারীর জন্য একটি মসৃণ অভিজ্ঞতা নিশ্চিত করে, যেমন পরের বার ব্যবহারকারী আপনার অ্যাপ্লিকেশনটি খোলেন। আরও তথ্য এবং উদাহরণগুলির জন্য রিমোট কনফিগার লোডিং কৌশলগুলি দেখুন।

পদক্ষেপ 6: রিয়েল টাইমে আপডেটের জন্য শুনুন

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

রিয়েল-টাইম আপডেটগুলি অ্যাপল প্ল্যাটফর্ম ভি 10.7.0+ এবং উচ্চতর জন্য ফায়ারবেস এসডিকে দ্বারা সমর্থিত।

  1. আপনার অ্যাপ্লিকেশনটিতে, আপডেটগুলি শুনতে শুরু করতে addOnConfigUpdateListener কল করুন এবং স্বয়ংক্রিয়ভাবে কোনও নতুন বা আপডেট হওয়া প্যারামিটার মান আনুন। নিম্নলিখিত উদাহরণটি আপডেটের জন্য শুনে এবং যখন activateWithCompletionHandler বলা হয়, তখন একটি আপডেট হওয়া স্বাগত বার্তা প্রদর্শন করতে সদ্য আনা মানগুলি ব্যবহার করে।

    সুইফট

    remoteConfig.addOnConfigUpdateListener { configUpdate, error in
      guard let configUpdate, error == nil else {
        print("Error listening for config updates: \(error)")
      }
    
      print("Updated keys: \(configUpdate.updatedKeys)")
    
      self.remoteConfig.activate { changed, error in
        guard error == nil else { return self.displayError(error) }
        DispatchQueue.main.async {
          self.displayWelcome()
        }
      }
    }
    

    উদ্দেশ্য গ

    __weak __typeof__(self) weakSelf = self;
    [self.remoteConfig addOnConfigUpdateListener:^(FIRRemoteConfigUpdate * _Nonnull configUpdate, NSError * _Nullable error) {
      if (error != nil) {
        NSLog(@"Error listening for config updates %@", error.localizedDescription);
      } else {
        NSLog(@"Updated keys: %@", configUpdate.updatedKeys);
    
        __typeof__(self) strongSelf = weakSelf;
        [strongSelf.remoteConfig activateWithCompletion:^(BOOL changed, NSError * _Nullable error) {
          if (error != nil) {
            NSLog(@"Activate error %@", error.localizedDescription);
          }
    
          dispatch_async(dispatch_get_main_queue(), ^{
            [strongSelf displayWelcome];
          });
        }];
      }
    }];
    
  2. পরের বার আপনি যখন আপনার রিমোট কনফিগারেশনের একটি নতুন সংস্করণ প্রকাশ করবেন, এমন ডিভাইসগুলি যা আপনার অ্যাপ্লিকেশন চালাচ্ছে এবং পরিবর্তনের জন্য শোনাচ্ছে তা সম্পূর্ণ হ্যান্ডলারকে কল করবে।

থ্রটলিং

যদি কোনও অ্যাপ্লিকেশন স্বল্প সময়ের মধ্যে অনেকবার আগত হয় তবে আনার কলগুলি থ্রোটল করা হয় এবং এসডিকে FIRRemoteConfigFetchStatusThrottled ফেরত দেয়। এসডিকে সংস্করণ 6.3.0 এর আগে, সীমাটি 60 মিনিটের উইন্ডোতে 5 টি অনুরোধ ছিল (নতুন সংস্করণগুলিতে আরও অনুমোদিত সীমা রয়েছে)।

অ্যাপ্লিকেশন বিকাশের সময়, আপনি আপনার অ্যাপ্লিকেশনটি বিকাশ করতে এবং পরীক্ষা করার সাথে সাথে আপনাকে দ্রুত পুনরাবৃত্তি করতে খুব ঘন ঘন (প্রতি ঘন্টা বহুবার) ক্যাশে রিফ্রেশ করতে আপনি আরও প্রায়শই আনতে চাইতে পারেন। রিয়েল-টাইম রিমোট কনফিগারেশন যখন কনফিগারেশনটি সার্ভারে আপডেট হয় তখন স্বয়ংক্রিয়ভাবে ক্যাশে বাইপাস করে। অসংখ্য বিকাশকারীদের সাথে একটি প্রকল্পে দ্রুত পুনরাবৃত্তির সমন্বয় করতে, আপনি আপনার অ্যাপ্লিকেশনটিতে কম ন্যূনতম ফেচ ইন্টারভাল ( MinimumFetchInterval ) সহ অস্থায়ীভাবে একটি FIRRemoteConfigSettings সম্পত্তি যুক্ত করতে পারেন।

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

  1. fetch(long)
  2. FIRRemoteConfigSettings.MinimumFetchInterval এর প্যারামিটার
  3. 12 ঘন্টা ডিফল্ট মান

পরবর্তী পদক্ষেপ

আপনি যদি ইতিমধ্যে না থাকেন তবে রিমোট কনফিগারেশন ব্যবহারের কেসগুলি অন্বেষণ করুন এবং কিছু মূল ধারণা এবং উন্নত কৌশল ডকুমেন্টেশন সহ একবার দেখুন: