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


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

পদক্ষেপ 1: আপনার অ্যাপ্লিকেশনটিতে Remote Config যুক্ত করুন

  1. আপনি যদি ইতিমধ্যে না থাকেন তবে আপনার অ্যাপল প্রকল্পে ফায়ারবেস যুক্ত করুন

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

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

    সুইফট

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

    উদ্দেশ্য-C

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

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

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

পদক্ষেপ 2: অ্যাপ্লিকেশন ডিফল্ট প্যারামিটার মান সেট করুন

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

  1. একটি NSDictionary অবজেক্ট বা প্লিস্ট ফাইল ব্যবহার করে প্যারামিটারের নামগুলির একটি সেট এবং ডিফল্ট প্যারামিটার মানগুলি সংজ্ঞায়িত করুন।

    আপনি যদি ইতিমধ্যে Remote Config ব্যাকেন্ড প্যারামিটার মানগুলি কনফিগার করে থাকেন তবে আপনি একটি উত্পন্ন 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
    

    Firebase কনসোল

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

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

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

    সুইফট

    remoteConfig.setDefaults(fromPlist: "RemoteConfigDefaults")

    উদ্দেশ্য-C

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

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

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

let remoteConfig = RemoteConfig.remoteConfig()

// Retrieve a parameter value using configValueForKey
let welcomeMessageValue = remoteConfig.configValue(forKey: "welcome_message")
let welcomeMessage = welcomeMessageValue.stringValue

let featureFlagValue = remoteConfig.configValue(forKey: "new_feature_flag")
let isFeatureEnabled = featureFlagValue.boolValue

সুইফটে এই মানগুলি অ্যাক্সেস করার আরও বেশি পঠনযোগ্য এবং সুবিধাজনক উপায় হ'ল সুইফ্টের সাবস্ক্রিপ্ট স্বরলিপি:

let remoteConfig = RemoteConfig.remoteConfig()

// Retrieve a string parameter value
let welcomeMessage = remoteConfig["welcome_message"].stringValue

// Retrieve a boolean parameter value
let isFeatureEnabled = remoteConfig["new_feature_flag"].boolValue

// Retrieve a number parameter value
let maxItemCount = remoteConfig["max_items"].numberValue.intValue

টাইপ-নিরাপদ কনফিগারেশনের জন্য কোডেবল ব্যবহার করুন

আরও জটিল কনফিগারেশনের জন্য, আপনি Remote Config থেকে কাঠামোগত ডেটা ডিকোড করতে সুইফটের Codable প্রোটোকল ব্যবহার করতে পারেন। এটি টাইপ-নিরাপদ কনফিগারেশন পরিচালনা সরবরাহ করে এবং জটিল অবজেক্টগুলির সাথে কাজ করা সহজ করে।

// Define a Codable struct for your configuration
struct AppFeatureConfig: Codable {
  let isNewFeatureEnabled: Bool
  let maxUploadSize: Int
  let themeColors: [String: String]
}

// Fetch and decode the configuration
func configureAppFeatures() {
  let remoteConfig = RemoteConfig.remoteConfig()
  remoteConfig.fetchAndActivate { status, error in
    guard error == nil else { return }

    do {
      let featureConfig = try remoteConfig["app_feature_config"].decoded(asType: AppFeatureConfig.self)
      configureApp(with: featureConfig)
    } catch {
      // Handle decoding errors
      print("Failed to decode configuration: \(error)")
    }
  }
}

এই পদ্ধতিটি আপনাকে দেয়:

  • জটিল কনফিগারেশন কাঠামো সংজ্ঞায়িত করুন।
  • স্বয়ংক্রিয়ভাবে JSON কনফিগারেশনগুলি পার্স করুন।
  • Remote Config মানগুলি অ্যাক্সেস করার সময় সুরক্ষার প্রকারটি নিশ্চিত করুন।
  • কাঠামোগত Remote Config টেম্পলেটগুলি পরিচালনা করার জন্য পরিষ্কার, পঠনযোগ্য কোড সরবরাহ করুন।

সুইফটুইতে ঘোষণামূলক কনফিগারেশনের জন্য সম্পত্তি র‌্যাপারগুলি ব্যবহার করুন

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

struct ContentView: View {
  @RemoteConfigProperty(key: "cardColor", fallback: "#f05138")
  var cardColor

  var body: some View {
    VStack {
      Text("Dynamic Configuration")
        .background(Color(hex: cardColor))
    }
    .onAppear {
      RemoteConfig.remoteConfig().fetchAndActivate()
    }
  }
}

আপনি যখন ডিফল্ট মান এবং সরলীকৃত কনফিগারেশন পরিচালনার জন্য অন্তর্নির্মিত সমর্থন সহ সুইফটুইতে Remote Config মানগুলি অ্যাক্সেস করার জন্য একটি ঘোষণামূলক উপায় চান তখন @RemoteConfigProperty প্রপার্টি র‌্যাপারটি ব্যবহার করুন।

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

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

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

    সুইফট

      Task {
          let customSignals: [String: CustomSignalValue?] = [
          "city": .string("Tokyo"),
          "preferred_event_category": .string("sports")
        ]
    
        do {
          try await remoteConfig.setCustomSignals(customSignals)
          print("Custom signals set successfully!")
          } catch {
              print("Error setting custom signals: \(error)")
          }
    }

    উদ্দেশ্য-C

      dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
        NSDictionary *customSignals = @{
          @"city": @"Tokyo",
          @"preferred_event_category": @"sports"
        };
    
        [self.remoteConfig setCustomSignals:customSignals withCompletion:^(NSError * _Nullable error) {
            if (error) {
                NSLog(@"Error setting custom signals: %@", error);
            } else {
                NSLog(@"Custom signals set successfully!");
            }
      }];
    });

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

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

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

এই উদাহরণটি Remote Config ব্যাকএন্ড (ক্যাশেড মান নয়) থেকে মানগুলি নিয়ে আসে এবং 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()
}

উদ্দেশ্য-C

[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: রিয়েল টাইমে আপডেটের জন্য শুনুন

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

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

  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()
        }
      }
    }

    উদ্দেশ্য-C

    __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. পরের বার আপনি যখন আপনার Remote Config একটি নতুন সংস্করণ প্রকাশ করবেন, এমন ডিভাইসগুলি যা আপনার অ্যাপ্লিকেশন চালাচ্ছে এবং পরিবর্তনের জন্য শোনাচ্ছে তা সম্পূর্ণ হ্যান্ডলারকে কল করবে।

থ্রটলিং

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

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

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

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

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

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