توسيع نطاق الإعداد عن بُعد باستخدام دوال السحابة


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

تشغيل وظيفة "الإعداد عن بُعد"

لتحديد معالج لأحداث "الإعداد عن بُعد"، استخدِم وظيفة onUpdate() في الوحدة functions.remoteConfig. يحتوي عنصر TemplateVersion الذي يعرضه onUpdate على حقول البيانات الوصفية الرئيسية لتحديث نموذج، مثل رقم الإصدار ووقت التعديل. يمكنك أيضًا استرداد البريد الإلكتروني للمستخدم الذي أجرى التحديث، مع الاسم والصورة إن توفّرت.

في ما يلي مثال على دالة "الإعداد عن بُعد" التي تعرض اختلافًا بين كل إصدار محدَّث والإصدار الذي تم استبداله. تفحص الدالة حقل versionNumber لكائن النموذج وتسترد الإصدار الحالي (المحدّث حديثًا) مع الإصدار رقم واحد أقل:

exports.showConfigDiff = functions.remoteConfig.onUpdate(versionMetadata => {
  return admin.credential.applicationDefault().getAccessToken()
    .then(accessTokenObj => {
      return accessTokenObj.access_token;
    })
    .then(accessToken => {
      const currentVersion = versionMetadata.versionNumber;
      const templatePromises = [];
      templatePromises.push(getTemplate(currentVersion, accessToken));
      templatePromises.push(getTemplate(currentVersion - 1, accessToken));

      return Promise.all(templatePromises);
    })
    .then(results => {
      const currentTemplate = results[0];
      const previousTemplate = results[1];

      const diff = jsonDiff.diffString(previousTemplate, currentTemplate);

      functions.logger.log(diff);

      return null;
    }).catch(error => {
      functions.logger.error(error);
      return null;
    });
});

يستخدم هذا النموذج وحدتَي json-diff وrequest-promise لإنشاء الفرق وإنشاء طلب الحصول على عنصر النموذج. للحصول على نموذج يتضمّن منطق عميل "الإعداد عن بُعد" بالإضافة إلى "المراسلة عبر السحابة الإلكترونية من Firebase"، يمكنك الاطّلاع على نشر تحديثات "الإعداد عن بُعد" في الوقت الفعلي.