بدء استخدام ميزة "الإعداد عن بُعد في Firebase"


يمكنك استخدام ميزة "الإعداد عن بُعد في Firebase" لتحديد المعلَمات في تطبيقك وتحديث قيمها في السحابة، مما يسمح لك بتعديل مظهر تطبيقك بدون توزيع تحديث للتطبيق. يرشدك هذا الدليل الخطوات التي يجب اتّباعها للبدء وتوفر بعض التعليمات البرمجية النموذجية، للاستنساخ أو التنزيل من firebase/quickstart-ios مستودع جيت هب.

الخطوة 1: إضافة ميزة "الإعداد عن بُعد" إلى تطبيقك

  1. إذا لم تكن قد فعلت ذلك بالفعل، إضافة Firebase إلى مشروع Apple

  2. بالنسبة إلى ميزة "الإعداد عن بُعد"، يجب أن تكون خدمة "إحصاءات Google" مطلوبة الاستهداف المشروط لمثيلات التطبيقات لخصائص المستخدمين وشرائح الجمهور. تأكَّد من CANNOT TRANSLATE تفعيل "إحصاءات Google" في مشروعك

  3. أنشئ عنصر ميزة "الإعداد عن بُعد" في نمط "سينغلتون"، كما هو موضّح في المثال التالي:

    Swift

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

    Objective-C

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

يُستخدَم هذا العنصر لتخزين قيم المَعلمات التلقائية داخل التطبيق وتعديل طريقة استرجاع البيانات. من واجهة "الإعداد عن بُعد" في الخلفية، والتحكم عند استرجاعها هذه القيم متاحة لتطبيقك.

أثناء التطوير، يُنصح بضبط حدّ أدنى منخفض نسبيًا للاسترجاع الفاصل. راجِع المقالة Throttling لمزيد من المعلومات.

الخطوة 2: ضبط قيم المَعلمات التلقائية داخل التطبيق

يمكنك ضبط قيم المَعلمات التلقائية داخل التطبيق في صفحة "الإعداد عن بُعد". لكي يعمل التطبيق على النحو المنشود قبل الاتصال الخلفية "للإعداد عن بُعد"، وبالتالي تتوفر القيم التلقائية إذا لم تكن التي تم تعيينها في الخلفية.

  1. حدد مجموعة من أسماء المعلمات وقيم المعلمات التلقائية باستخدام NSDictionary كائن أو ملف plist.

    إذا سبق لك ضبط قيم مَعلمات الواجهة الخلفية لميزة "الإعداد عن بُعد" يمكنك تنزيل ملف plist تم إنشاؤه ويتضمّن جميع القيم التلقائية وحفظه في مشروع Xcode.

    REST

    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. فعِّل .plist لنظام التشغيل iOS عندما يُطلب منك ذلك، ثم انقر على تنزيل الملف.

  2. أضِف هذه القيم إلى عنصر "الإعداد عن بُعد" باستخدام setDefaults:. يحدّد المثال التالي القيم التلقائية داخل التطبيق من ملف plist:

    Swift

    remoteConfig.setDefaults(fromPlist: "RemoteConfigDefaults")

    Objective-C

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

الخطوة 3: الحصول على قيم المَعلمات لاستخدامها في تطبيقك

يمكنك الآن الحصول على قيم المَعلمات من كائن "الإعداد عن بُعد". إذا أردت لاحقًا تعيين القيم في الواجهة الخلفية لميزة "الإعداد عن بُعد" واسترجاعها ثم تفعيلها تلك القيم متاحة لتطبيقك. بخلاف ذلك، ستظهر لك المَعلمة داخل التطبيق. القيم المهيأة باستخدام setDefaults:. للحصول على هذه القيم، استدعِ configValueForKey: ، مما يوفر مفتاح المعلمة كوسيطة.

الخطوة 4: ضبط قيم المَعلمات

باستخدام وحدة تحكُّم Firebase أو واجهات برمجة التطبيقات للواجهة الخلفية للإعداد عن بُعد يمكنك إنشاء قيم تلقائية جديدة للواجهة الخلفية تلغي القيم داخل التطبيق. وفقًا لمنطقك الشرطي أو استهداف المستخدم المطلوب هذا القسم يرشدك عبر خطوات وحدة تحكم Firebase لإنشاء هذه القيم.

  1. افتح مشروعك في وحدة تحكُّم Firebase.
  2. اختَر الإعداد عن بُعد من القائمة لعرض ميزة "الإعداد عن بُعد". لوحة المعلومات.
  3. حدِّد المَعلمات التي تحمل أسماء المَعلمات نفسها التي حدّدتها في تطبيقك. لكل معلمة، يمكنك تعيين قيمة افتراضية (والتي إلغاء القيمة التلقائية داخل التطبيق) ويمكنك أيضًا ضبط القيم الشرطية. لمزيد من المعلومات، يُرجى مراجعة معلَمات وشروط الإعداد عن بُعد.

الخطوة 5: استرجاع القيم وتفعيلها

لاسترجاع قيم المعلَمات من ميزة "الإعداد عن بُعد"، يمكنك استدعاء دالة الرسم fetchWithCompletionHandler: أو fetchWithExpirationDuration:completionHandler: . يتم استرجاع أي قيم قمت بتعيينها في الخلفية تم تخزينها مؤقتًا في كائن "الإعداد عن بُعد".

وبالنسبة إلى الحالات التي تريد فيها استرجاع القيم وتفعيلها في مكالمة واحدة، استخدِم fetchAndActivateWithCompletionHandler:

يجلب هذا المثال القيم من الخلفية في ميزة "الإعداد عن بُعد" (وليس في ذاكرة التخزين المؤقت). وقيمها) والاتصالاتactivateWithCompletionHandler: لإتاحتها التطبيق:

Swift

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

Objective-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: الاستماع إلى أحدث المعلومات في الوقت الفعلي

بعد استرجاع قيم المَعلمات، يمكنك استخدام ميزة "الإعداد عن بُعد في الوقت الفعلي" لتنفيذ ما يلي: والاستماع إلى التحديثات من الخلفية لميزة "الإعداد عن بُعد". في الوقت الفعلي تُرسِل ميزة "الإعداد عن بُعد" إشارات إلى الأجهزة المتصلة عند توفُّر تحديثات. يجلب التغييرات تلقائيًا بعد نشر عملية إعداد عن بُعد جديدة .

تتوفّر التحديثات في الوقت الفعلي من خلال حزمة تطوير البرامج (SDK) لمنصة Firebase للإصدار 10.7.0 والإصدارات الأحدث من نظام التشغيل Apple.

  1. يمكنك الاتصال بالرقم addOnConfigUpdateListener في تطبيقك لبدء الاستماع إلى آخر المعلومات. وجلب أي قيم معلمات جديدة أو محدَّثة تلقائيًا. ما يلي: مثلًا يصغي إلى التحديثات وعندما يكون activateWithCompletionHandler القيم التي تم استرجاعها حديثًا لعرض رسالة ترحيب معدّلة.

    Swift

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

    Objective-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. في المرة القادمة التي تنشر فيها إصدارًا جديدًا من ميزة "الإعداد عن بُعد"، ستتمثل الأجهزة التي تشغِّل تطبيقك وتستمع إلى التغييرات ستطلب إكمال .

تقييد

إذا جلب أحد التطبيقات مرات كثيرة جدًا خلال فترة زمنية قصيرة، سيتم تنفيذ طلبات الجلب محدودة وتعيد حزمة تطوير البرامج (SDK) FIRRemoteConfigFetchStatusThrottled. قبل الإصدار 6.3.0 من حزمة SDK، يجب كان الحد الأقصى هو 5 طلبات جلب في 60 دقيقة (للإصدارات الأحدث حدودًا أكثر تساهلاً).

أثناء تطوير التطبيق، قد تحتاج إلى الجلب مرات أكثر لتحديث ذاكرة التخزين المؤقت بشكل متكرر (عدة مرات في الساعة) للسماح لك بالتكرار بسرعة أثناء تطوير واختبار تطبيقك تتجاوز تحديثات "الإعداد عن بُعد في الوقت الفعلي" تلقائيًا ذاكرة التخزين المؤقت عند تحديث الإعداد على الخادم. لاستيعاب التكرار السريع في مشروع مع العديد من المطورين، يمكنك إضافة السمة FIRRemoteConfigSettings مع حدّ أدنى منخفض للفاصل الزمني للجلب (MinimumFetchInterval) في تطبيقك.

الفاصل الزمني التلقائي والمقترَح لاسترجاع الفيديوهات في ميزة "الإعداد عن بُعد" 12 ساعة، وبالتالي يعني أنّه لن يتم استرجاع الإعدادات من الخلفية أكثر من مرة خلال 12 ساعة بغض النظر عن عدد استدعاءات الجلب التي يتم إجراؤها بالفعل. وعلى وجه التحديد، يتم تحديد الحد الأدنى للفاصل الزمني للجلب بالترتيب التالي:

  1. المَعلمة في fetch(long)
  2. المَعلمة في FIRRemoteConfigSettings.MinimumFetchInterval
  3. القيمة التلقائية التي تبلغ 12 ساعة

الخطوات التالية

يمكنك استكشاف ميزة "الإعداد عن بُعد" إذا لم يسبق لك إجراء ذلك. حالات الاستخدام، وإلقاء نظرة على بعض وثائق المفاهيم الرئيسية والاستراتيجيات المتقدمة، بما في ذلك: