إنشاء تجارب "الإعداد عن بُعد في Firebase" باستخدام ميزة "اختبار A/B"

عند استخدام Firebase Remote Config لتفعيل الإعدادات لتطبيق لديه قاعدة مستخدمين نشطين، عليك التأكّد من تطبيق الإعدادات الصحيحة. يمكنك استخدام A/B Testing تجربة لتحديد ما يلي على أفضل نحو:

  • أفضل طريقة لاستخدام ميزة لتحسين تجربة المستخدم: في كثير من الأحيان، لا يعلم مطوّرو التطبيقات أنّ المستخدمين لا يحبون ميزة جديدة أو تجربة مستخدم محدّثة إلى أن ينخفض تقييم تطبيقهم في متجر التطبيقات. يمكن أن يساعد اختبار أ/ب في قياس ما إذا كان المستخدِمون يحبّون الصيغ الجديدة من الميزات أو ما إذا كانوا يفضّلون التطبيق كما هو. بالإضافة إلى ذلك، يضمن إبقاء معظم المستخدمين في مجموعة قياس الأداء الأساسي أن يواصل معظم قاعدة المستخدمين استخدام تطبيقك بدون ملاحظة أي تغييرات في سلوكه أو مظهره إلى أن تنتهي التجربة.
  • أفضل طريقة لتحسين تجربة المستخدِم لتحقيق هدف النشاط التجاري في بعض الأحيان، يتم تنفيذ تغييرات على المنتجات لزيادة مقياس معيّن إلى أقصى حد، مثل الأرباح أو الاحتفاظ بالمستخدمين. عند استخدام اختبار A/B، يمكنك تحديد هدف نشاطك التجاري، ويجري Firebase تحليلاً إحصائيًا لتحديد ما إذا كانت إحدى الصيغ تتفوق على المستوى المرجعي للهدف المحدّد.

لإجراء اختبار A/B لنُسخ الميزات التي تتضمّن مرجعًا، اتّبِع الخطوات التالية:

  1. أنشئ تجربتك.
  2. تحقّق من صحة تجربتك على جهاز اختبار.
  3. إدارة تجربتك
.

إنشاء تجربة

تسمح لك تجربة Remote Config بتقييم صِيَغ متعدّدة في مَعلمة واحدة أو أكثر من مَعلماتRemote Config.

  1. تسجيل الدخول إلى وحدة تحكّم "Firebase" والتحقّق من تفعيل "Google Analytics" في مشروعك حتى تتمكّن التجربة من الوصول إلى بيانات Analytics

    إذا لم تفعِّل Google Analytics عند إنشاء مشروعك، يمكنك تفعيله من علامة التبويب عمليات الدمج ، والتي يمكنك الوصول إليها باستخدام > إعدادات المشروع في وحدة تحكُّم Firebase.

  2. في قسم التفاعل ضمن قائمة التنقّل في Firebase وحدة تحكّم، انقر على A/B Testing.

  3. انقر على إنشاء تجربة، ثم انقر على Remote Config عندما يُطلب منك اختيار الخدمة التي تريد إجراء التجربة عليها.

  4. أدخِل اسمًا ووصفًا اختياريًا لتجربتك، ثم انقر على التالي.

  5. املأ حقول الاستهداف، ثم اختَر أولاً التطبيق الذي يستخدم تجربتك. يمكنك أيضًا استهداف مجموعة فرعية من المستخدمين للمشاركة في تجربتك من خلال النقر على و، ثم اختيار خيارات من القائمة التالية:

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

      تتوفّر ميزة استهداف المستخدمين حسب وقت الفتح لأول مرة بعد اختيار تطبيق متوافق مع أجهزة Android أو iOS. ويتم دعمه من خلال إصدارات حزمة تطوير البرامج (SDK) التالية لأجهزة Remote Config: الإصدار 9.0.0 أو الإصدارات الأحدث من حزمة تطوير البرامج (SDK) لنظام التشغيل Apple الأساسي والإصدار 21.1.1 من حزمة تطوير البرامج (SDK) لنظام التشغيل Android أو الإصدارات الأحدث (Firebase BoM الإصدار 30.3.0 والإصدارات الأحدث).

      يجب أيضًا أن يكون Analytics مفعّلاً على العميل أثناء الحدث المفتوح الأول.

  6. اضبط النسبة المئوية للمستخدمين المستهدَفين: أدخِل النسبة المئوية لقاعدة مستخدمي تطبيقك التي تتطابق مع المعايير المحدّدة ضمن المستخدمون المستهدَفون والتي تريد تقسيمها بالتساوي بين السعر الأساسي وسعر متغير واحد أو أكثر في تجربتك. يمكن أن يكون هذا أي نسبة مئوية بين 0.01٪ و100٪. يتم تحديد كل تجربة للمستخدمين بشكلٍ عشوائي، بما في ذلك التجارب المكرّرة.

  7. يمكنك اختياريًا ضبط حدث تنشيط لضمان احتساب البيانات من المستخدِمين الذين بدأوا أولاً بعض أحداث Analytics في تجربتك فقط. تجدر الإشارة إلى أنّ جميع المستخدِمين الذين يتطابقون مع مَعلمات الاستهداف سيحصلون على Remote Config قيمة تجريبية، ولكن لن يتمّ تضمين سوى المستخدِمين الذين بدأوا حدث تفعيل في نتائج تجربتك.

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

    • app_install
    • app_remove
    • app_update
    • dynamic_link_first_open
  8. بالنسبة إلى أهداف التجربة، اختَر المقياس الأساسي الذي تريد تتبُّعه وأضِف أي مقاييس إضافية تريد تتبُّعها من القائمة. وتشمل هذه الأهداف المضمّنة (عمليات الشراء والأرباح ومعدل الاحتفاظ بالمستخدمين والمستخدمين الذين لم يواجهوا أي أعطال، وما إلى ذلك). أحداث Analytics الإحالات الناجحة وأحداث Analytics الأخرى عند الانتهاء، انقر على التالي.

  9. في قسم الصيغ، اختَر الأساس وصيغة واحدة على الأقل للتجربة. استخدِم قائمة اختيار قائمة جديدة أو إنشاؤها لإضافة مَعلمة واحدة أو أكثر لتجربتها. يمكنك إنشاء معلَمة لم يتم استخدامها من قبل في وحدة تحكم Firebase، ولكن يجب أن تكون موجودة في تطبيقك حتى يكون لها أي تأثير. يمكنك تكرار هذه الخطوة لإضافة عدة مَعلمات إلى تجربتك.

  10. (اختياري) لإضافة أكثر من سعر متغير واحد إلى تجربتك، انقر على إضافة سعر متغير آخر.

  11. غيِّر مَعلمة واحدة أو أكثر لخيارات منتج معيّنة. إنّ أيّ مَعلمات لم تتغيّر تكون متطابقة للمستخدمين غير المدرَجين في التجربة.

  12. وسِّع ترجيحات الصيغ لعرض الوزن المتغير للتجربة أو تغييره. بشكل تلقائي، يتم منح جميع الصيغ قيمًا تقديرية متساوية. تجدر الإشارة إلى أنّ القيم التقديرية غير المتساوية قد تؤدي إلى زيادة وقت جمع البيانات ولا يمكن تغيير القيم التقديرية بعد بدء التجربة.

  13. انقر على مراجعة لحفظ تجربتك.

يمكنك إجراء ما يصل إلى 300 تجربة لكل مشروع، ويمكن أن يشمل ذلك ما يصل إلى 24 تجربة قيد التنفيذ، والباقي كمسودة أو مكتملة.

التحقّق من صحّة تجربتك على جهاز اختباري

بالنسبة إلى كل عملية تثبيت لمنصة Firebase، يمكنك استرداد الرمز المميز لمصادقة التثبيت المرتبط به. يمكنك استخدام هذا الرمز المميّز لاختبار صيغ محدّدة من التجارب على جهاز اختباري تم تثبيت تطبيقك عليه. للتحقّق من صحة تجربتك على جهاز اختباري، اتّبِع الخطوات التالية:

  1. احصل على الرمز المميز لمصادقة التثبيت على النحو التالي:

    Swift

    do {
      let result = try await Installations.installations()
        .authTokenForcingRefresh(true)
      print("Installation auth token: \(result.authToken)")
    } catch {
      print("Error fetching token: \(error)")
    }

    Objective-C

    [[FIRInstallations installations] authTokenForcingRefresh:true
                                                   completion:^(FIRInstallationsAuthTokenResult *result, NSError *error) {
      if (error != nil) {
        NSLog(@"Error fetching Installation token %@", error);
        return;
      }
      NSLog(@"Installation auth token: %@", [result authToken]);
    }];

    Java

    FirebaseInstallations.getInstance().getToken(/* forceRefresh */true)
            .addOnCompleteListener(new OnCompleteListener<InstallationTokenResult>() {
        @Override
        public void onComplete(@NonNull Task<InstallationTokenResult> task) {
            if (task.isSuccessful() && task.getResult() != null) {
                Log.d("Installations", "Installation auth token: " + task.getResult().getToken());
            } else {
                Log.e("Installations", "Unable to get Installation auth token");
            }
        }
    });

    Kotlin+KTX

    val forceRefresh = true
    FirebaseInstallations.getInstance().getToken(forceRefresh)
        .addOnCompleteListener { task ->
            if (task.isSuccessful) {
                Log.d("Installations", "Installation auth token: " + task.result?.token)
            } else {
                Log.e("Installations", "Unable to get Installation auth token")
            }
        }

    C++‎

    firebase::InitResult init_result;
    auto* installations_object = firebase::installations::Installations::GetInstance(
        firebase::App::GetInstance(), &init_result);
    installations_object->GetToken().OnCompletion(
        [](const firebase::Future<std::string>& future) {
          if (future.status() == kFutureStatusComplete &&
              future.error() == firebase::installations::kErrorNone) {
            printf("Installations Auth Token %s\n", future.result()->c_str());
          }
        });

    Unity

    Firebase.Installations.FirebaseInstallations.DefaultInstance.GetTokenAsync(forceRefresh: true).ContinueWith(
      task => {
        if (!(task.IsCanceled || task.IsFaulted) && task.IsCompleted) {
          UnityEngine.Debug.Log(System.String.Format("Installations token {0}", task.Result));
        }
      });
  2. في شريط التنقّل في وحدة تحكّم Firebase، انقر على اختبار A/B.
  3. انقر على مسودة (و/أو جارٍ لتجارب "الإعداد عن بُعد")، مرِّر مؤشر الماوس فوق تجربتك، انقر على قائمة السياقات ()، ثم انقر على إدارة الأجهزة الاختبارية.
  4. أدخِل الرمز المميّز لمصادقة التثبيت لجهاز اختبار واختَر صيغة التجربة لإرسالها إلى هذا الجهاز الاختباري.
  5. شغِّل التطبيق وتأكَّد من أنّه يتم تلقّي الإصدار المحدَّد على جهاز الاختبار.

لمزيد من المعلومات عن عمليات تثبيت Firebase، يمكنك الاطّلاع على إدارة عمليات تثبيت Firebase.

إدارة تجربتك

سواء أكنت تنشئ تجربة باستخدام Remote Config أو أداة إنشاء الإشعارات أو Firebase In-App Messaging، يمكنك بعد ذلك التحقّق من صحتها وبدء تجربتك، ومراقبة تجربتك أثناء تشغيلها، وزيادة عدد المستخدمين المدرَجين في تجربتك الجارية.

عند انتهاء التجربة، يمكنك ملاحظة الإعدادات التي استخدمتها الصيغة الفائزة، ثم طرح هذه الإعدادات لجميع المستخدمين. أو يمكنك إجراء تجربة أخرى.

بدء تجربة

  1. في قسم التفاعل من قائمة التنقّل في Firebase وحدة التحكّم، انقر على A/B Testing.
  2. انقر على مسودة، ثمّ انقر على عنوان تجربتك.
  3. للتأكّد من أنّ تطبيقك يتضمّن مستخدمين سيتم تضمينهم في تجربتك، وسِّع تفاصيل المسودة وابحث عن رقمٍ أكبر من 0% في قسم الاستهداف والتوزيع (على سبيل المثال، %1 من المستخدمين الذين يتطابقون مع المعايير).
  4. لتغيير تجربتك، انقر على تعديل.
  5. لبدء تجربتك، انقر على بدء التجربة. يمكنك إجراء ما يصل إلى 24 تجربة لكل مشروع في المرة الواحدة.

مراقبة تجربة

بعد تشغيل التجربة لبعض الوقت، يمكنك التحقّق من مستوى تقدّمها والاطّلاع على شكل نتائجك للمستخدمين الذين شاركوا في تجربتك حتى الآن.

  1. في قسم التفاعل من قائمة التنقّل في Firebase وحدة التحكّم، انقر على A/B Testing.
  2. انقر على جارٍ، ثمّ انقر على عنوان تجربتك أو ابحث عنه. في هذه الصفحة، يمكنك الاطّلاع على العديد من الإحصاءات المرصودة والمستنِدة إلى نموذج عن تجربتك قيد التنفيذ، بما في ذلك ما يلي:

    • الفرق بالنسبة المئوية مقارنةً بالمرجع: مقياس لتحسين مقياس معيّن لصيغة معيّنة مقارنةً بالمرجع ويتم حسابه من خلال مقارنة نطاق القيمة للمتغير بنطاق القيمة للمرجع.
    • احتمالية تجاوز المعدّل المرجعي: الاحتمالية المقدَّرة بأنّ أحد التصاميم المتغيرة معيّنٍ يتجاوز المعدّل المرجعي للمقياس المحدّد.
    • observed_metric لكل مستخدم: استنادًا إلى نتائج التجربة، هذا هو النطاق المتوقّع الذي ستدخل فيه قيمة المقياس بمرور الوقت.
    • إجمالي observed_metric: القيمة التراكمية المرصودة ل القيمة الأساسية أو الصيغة. تُستخدَم القيمة لقياس مدى جودة أداء كل صيغة من التجربة، وتُستخدَم لاحتساب التحسين ونطاق القيمة واحتمالية تجاوز القيم المرجعية واحتمالية أن تكون الصيغة الأفضل. استنادًا إلى المقياس الذي يتم قياسه، قد يتم تصنيف عمود "المدّة لكل مستخدم" أو "الأرباح لكل مستخدم" أو "نسبة الاحتفاظ" أو "نسبة الإحالات الناجحة".
  3. بعد تنفيذ تجربتك لبعض الوقت (7 أيام على الأقل لكلّ من FCM وIn-App Messaging أو 14 يومًا لكلّ من Remote Config)، تشير البيانات في هذه الصفحة إلى الصيغة "الأكثر نجاحًا"، إن توفّرت. تصاحب بعض القياسات مخطط شريطي يعرض البيانات بتنسيق مرئي.

طرح تجربة لجميع المستخدمين

بعد تنفيذ التجربة لفترة كافية توفّر "رائدة" أو صيغة فائزة في ما يتعلّق بمقياس هدفك، يمكنك إطلاق التجربة على جميع المستخدمين. يتيح لك ذلك تحديد صيغة لنشرها لجميع المستخدمين من الآن فصاعدًا. وحتى إذا لم تحدّد تجربتك صفحة فائزة بشكلٍ واضح، يظلّ بإمكانك اختيار إصدار صيغة لجميع المستخدمين.

  1. في قسم التفاعل من قائمة التنقّل في Firebase وحدة التحكّم، انقر على A/B Testing.
  2. انقر على مكتملة أو قيد التشغيل، وانقر على التجربة التي تريد طرحها لجميع المستخدمين، ثم انقر على قائمة السياقات () طرح الصيغة.
  3. اطرح تجربتك لجميع المستخدمين من خلال تنفيذ أحد الإجراءات التالية:

    • بالنسبة إلى التجارب التي تستخدم منشئ الإشعارات، استخدِم مربّع الحوار طرح الرسالة لإرسال الرسالة إلى باقي المستخدمين المستهدَفين الذين لم يكونوا جزءًا من التجربة.
    • بالنسبة إلى تجربة Remote Config، اختَر صيغة لتحديد قيَم مَعلمة Remote Config التي تريد تعديلها. تتم إضافة معايير الاستهداف المحدّدة عند إنشاء التجربة كشرط جديد في النموذج، وذلك لضمان عدم تأثير عملية الطرح إلا في المستخدمين المستهدَفين من خلال التجربة. بعد النقر على المراجعة في ميزة "الإعداد عن بُعد" لمراجعة التغييرات، انقر على نشر التغييرات لإكمال عملية الطرح.
    • بالنسبة إلى تجربة In-App Messaging، استخدِم مربّع الحوار لتحديد خيار المنتج الذي يجب طرحه كحملة In-App Messaging مستقلة. بعد اختيار جهة النشر، ستتم إعادة توجيهك إلى شاشة إنشاء FIAM لإجراء أي تغييرات (إذا لزم الأمر) قبل النشر.

توسيع نطاق تجربة

إذا تبيّن لك أنّ إحدى التجارب لا تجذب عددًا كافيًا من المستخدمين لكي يتمكّن تطبيق A/B Testing من الإعلان عن قائد، يمكنك زيادة توزيع تجربتك للوصول إلى نسبة أكبر من قاعدة مستخدمي التطبيق.

  1. في قسم التفاعل ضمن قائمة التنقّل في Firebase وحدة تحكّم، انقر على A/B Testing.
  2. اختَر التجربة الجارية التي تريد تعديلها.
  3. في قسم نظرة عامة على التجربة، انقر على قائمة السياقات ()، ثمّ انقر على تعديل التجربة الجارية.
  4. يعرض مربّع الحوار الاستهداف خيارًا لزيادة النسبة المئوية للمستخدمين المشاركين في التجربة الجارية. اختَر رقمًا أكبر من النسبة المئوية الحالية وانقر على نشر. سيتمّ توجيه التجربة إلى النسبة المئوية للمستخدِمين التي حدّدتها.

تكرار تجربة أو إيقافها

  1. في قسم التفاعل ضمن قائمة التنقّل في Firebase وحدة تحكّم، انقر على A/B Testing.
  2. انقر على مكتملة أو قيد التشغيل، ومرِّر مؤشر الماوس فوق تجربتك، وانقر على قائمة السياقات ()، ثمّ انقر على تكرار التجربة أو إيقاف التجربة.

استهداف المستخدمين

يمكنك استهداف المستخدِمين المطلوب تضمينهم في تجربتك باستخدام معايير استهداف المستخدِمين التالية.

معيار الاستهداف العوامل القيم ملاحظة
الإصدار يحتوي على،
لا يحتوي على،
يتطابق تمامًا،
يحتوي على تعبير عادي
أدخِل قيمة لإصدار واحد أو أكثر من إصدارات التطبيق التي تريد تضمينها في التجربة.

عند استخدام أي من عوامل التشغيل contains أو لا يحتوي على أو تطابق تمامًا، يمكنك تقديم قائمة مفصولة بفواصل من القيم.

عند استخدام عامل التشغيل يحتوي على تعبير عادي، يمكنك إنشاء تعبيرات عادية بتنسيق RE2 . يمكن أن يتطابق التعبير العادي مع كل الإصدار المستهدف أو جزء منه. يمكنك أيضًا استخدام علامتَي الارتساء ^ و$ لمطابقة بداية السلسلة المستهدفة أو نهايتها أو بكاملها.

جمهور المستخدمين تتضمّن كلّ،
تتضمّن واحدًا على الأقل من،
لا تتضمّن كلّ،
لا تتضمّن واحدًا على الأقل من
اختَر شريحة جمهور Analytics واحدة أو أكثر لاستهداف المستخدمين الذين قد يتم تضمينهم في تجربتك. قد تتطلّب بعض التجارب التي تستهدِف شرائح جمهور Google Analytics بضعة أيام لتجميع البيانات لأنّها تخضع Analytics لوقت استجابة معالجة البيانات. من المرجّح أن تواجه هذا التأخير مع المستخدِمين الجدد، الذين يتم تسجيلهم عادةً في شرائح الجمهور المؤهّلة بعد 24 إلى 48 ساعة من إنشائها، أو شرائح الجمهور التي تم إنشاؤها مؤخرًا.

بالنسبة إلى Remote Config، يعني ذلك أنّه حتى إذا كان المستخدم مؤهَّلاً من الناحية الفنية للانضمام إلى شريحة جمهور، لن يتم تضمين المستخدم في التجربة إذا لم يضِف Analytics المستخدم إلى الجمهور بعد عند تنفيذ `fetchAndActivate() `.

خاصيّة المستخدم بالنسبة إلى النصوص:
يحتوي على،
لا يحتوي على،
مطابق تمامًا،
يحتوي على تعبير عادي

بالنسبة إلى الأرقام:
<, ≤, =, ≥, >
يتم استخدام خاصيّة المستخدم Analytics لاختيار المستخدمين الذين قد يتم تضمينهم في تجربة، مع مجموعة من الخيارات لتحديد قيم خصائص المستخدمين.

في البرنامج، يمكنك ضبط قيم السلسلة فقط لخصائص المستخدمين. بالنسبة إلى الشروط التي تستخدم عوامل التشغيل الرقمية، تحوّل الخدمة Remote Config قيمة خاصيّة المستخدم المقابلة إلى عدد صحيح/عائم.
عند استخدام عامل التشغيل يحتوي على تعبير عادي، يمكنك إنشاء تعبيرات عادية بتنسيق RE2 . يمكن أن يتطابق التعبير العادي مع كل الإصدار المستهدف أو جزء منه. يمكنك أيضًا استخدام علامتَي الربط ^ و$ لمطابقة بداية سلسلة مستهدفة أو نهايتها أو كلّها.
البلد/المنطقة لا ينطبق بلد واحد أو أكثر أو منطقة واحدة أو أكثر مستخدَمة لاختيار المستخدِمين الذين قد يتم تضمينهم في التجربة  
اللغات لا ينطبق لغة واحدة أو أكثر وإعدادات لغة واحدة أو أكثر مستخدَمة لاختيار المستخدِمين الذين قد يتم تضمينهم في التجربة  
أول فتح قبل
بعد

استهداف المستخدمين استنادًا إلى المرة الأولى التي يفتحون فيها تطبيقك:

  • اختَر المستخدمون الجدد لاستهداف المستخدمين الذين يفتحون تطبيقك لأول مرة بعد تاريخ ووقت محدّدين في المستقبل.
  • اختَر النطاق الزمني لاستهداف المستخدِمين الذين فتحوا تطبيقك لأول مرّة خلال النطاق قبل التاريخ والوقت اللذين تحدّدهما أو بعدهما. يمكنك دمج شرطَي قبل وبعد لاستهداف المستخدِمين خلال نطاق زمني محدّد.

تتوفّر ميزة استهداف المستخدِمين حسب أول فتح بعد اختيار تطبيق Android أو iOS . وهي متوافقة حاليًا مع إصدارات Remote Config SDK التالية : الإصدار 9.0.0 أو إصدار أحدث من حزمة تطوير البرامج (SDK) لمنصّات Apple والإصدار 21.1.1 أو إصدار أحدث من حزمة تطوير البرامج (SDK) لنظام التشغيل Android (Firebase BoM الإصدار 30.3.0 أو إصدار أحدث).

ويجب أيضًا تفعيل Analytics على البرنامج خلال أول حدث مفتوح.

A/B Testing مقياس

عند إنشاء تجربتك، يمكنك اختيار مقياس أساسي أو هدف يُستخدم لتحديد الصيغة الفائزة. يجب أيضًا تتبُّع مقاييس أخرى ل help you better understand each experiment variant's performance and track important trends that may differ for each variant, like user retention, app stability and in-app purchase revenue. يمكنك تتبُّع ما يصل إلى خمسة مقاييس غير مرتبطة بالهدف في تجربتك.

على سبيل المثال، لنفترض أنّك تستخدم Remote Config لإطلاق مسارَين مختلفَين للألعاب في تطبيقك وتريد تحسين عمليات الشراء داخل التطبيق وأرباح الإعلانات، ولكنّك تريد أيضًا تتبُّع الثبات والحفاظ على المستخدمين لكل صيغة. في هذه الحالة، يمكنك اختيار إجمالي الأرباح المقدَّرة كمقياس لهدفك، لأنّه يتضمّن أرباح عمليات الشراء داخل التطبيق وأرباح الإعلانات، وبالنسبة إلى المقاييس الأخرى التي يتم تتبّعها، يمكنك إضافة ما يلي:

  • لتتبُّع معدل الاحتفاظ بالمستخدمين يوميًا وأسبوعيًا، يمكنك إضافة الاحتفاظ بالمستخدمين (من 2 إلى 3 أيام) والاحتفاظ بالمستخدمين (من 4 إلى 7 أيام).
  • لمقارنة الثبات بين مسارَي اللعب، أضِف مستخدمون لم يواجهوا أعطالاً.
  • للاطّلاع على طرق عرض أكثر تفصيلاً لكل نوع من أنواع الأرباح، أضِف الأرباح من عمليات الشراء وأرباح الإعلانات المقدّرة.

تقدّم الجداول التالية تفاصيل عن كيفية حساب مقاييس الأهداف والمقاييس الأخرى.

مقاييس الهدف

المقياس الوصف
المستخدمون الذين لم يواجههم أي تعطُّل النسبة المئوية للمستخدمين الذين لم يواجهوا أخطاء في تطبيقك تم رصدها من خلال حزمة SDK Firebase Crashlytics أثناء التجربة
الأرباح المقدّرة الناتجة عن الإعلانات الأرباح المقدّرة من الإعلانات
إجمالي الأرباح المقدَّرة القيمة المجمّعة لعمليات الشراء وأرباح الإعلانات المقدّرة
الأرباح من عمليات الشراء القيمة المجمّعة لجميع أحداث purchase و in_app_purchase
الاحتفاظ بالبيانات (ليوم واحد) يشير ذلك إلى عدد المستخدمين الذين يعودون إلى تطبيقك يوميًا.
الاحتفاظ بالاشتراكات (من يومَين إلى 3 أيام) يشير ذلك إلى عدد المستخدمين الذين يعودون إلى تطبيقك في غضون يومَين إلى 3 أيام.
الاحتفاظ بالاشتراكات (من 4 إلى 7 أيام) يشير ذلك إلى عدد المستخدمين الذين يعودون إلى تطبيقك خلال فترة تتراوح بين 4 و7 أيام.
الاحتفاظ بالاشتراكات (من 8 إلى 14 يومًا) يشير ذلك إلى عدد المستخدمين الذين يعودون إلى تطبيقك خلال فترة تتراوح بين 8 و14 يومًا.
الاحتفاظ بالاشتراكات (أكثر من 15 يومًا) يشير ذلك إلى عدد المستخدمين الذين يعودون إلى تطبيقك بعد 15 يومًا أو أكثر من آخر استخدام لهم.
first_open يشير ذلك المصطلح إلى حدث Analytics يتم تشغيله عندما يفتح المستخدم تطبيقًا لأول مرة بعد تثبيته أو إعادة تثبيته. تُستخدَم كجزء من مسار الإحالة الناجحة.

المقاييس الأخرى

المقياس الوصف
notification_dismiss حدث Analytics الذي يتم تشغيله عند تجاهل إشعار مُرسَل من مؤلف "الإشعارات" (نظام التشغيل Android فقط).
notification_receive حدث Analytics يتم تشغيله عند تلقّي إشعار مُرسَل من أداة إنشاء الإشعارات أثناء تشغيل التطبيق في الخلفية (لنظام التشغيل Android فقط).
os_update حدث Analytics يتتبّع وقت تحديث نظام تشغيل الجهاز إلى إصدار جديد.لمزيد من المعلومات، يُرجى الاطّلاع على الأحداث المجمّعة تلقائيًا.
screen_view حدث Analytics يتتبّع الشاشات التي تمت مشاهدتها في تطبيقك. للاطّلاع على معلومات أكثر، اطّلِع على مقالة تتبُّع مرّات مشاهدة الشاشة.
session_start حدث Analytics الذي يحتسب جلسات المستخدِمين في تطبيقك. لمزيد من المعلومات، اطّلِع على الأحداث التي يتم جمعها تلقائيًا.

تصدير بيانات BigQuery

بالإضافة إلى عرض بيانات تجربة A/B Testing في وحدة تحكّم Firebase، يمكنك فحص بيانات التجربة وتحليلها في BigQuery. على الرغم من أنّ A/B Testing لا يتضمّن جدولاً منفصلاً لBigQuery، يتم تخزين العضويات في التجارب والصيغ في كل حدث Google Analytics ضمن جداول أحداث Analytics.

تكون سمات المستخدِمين التي تحتوي على معلومات عن التجربة على الشكل التالي: userProperty.key like "firebase_exp_%" أو userProperty.key = "firebase_exp_01" حيث يكون 01 هو رقم تعريف التجربة، ويحتوي userProperty.value.string_value على الفهرس (المستند إلى الصفر) لصيغة التجربة.

يمكنك استخدام خصائص مستخدمي التجربة هذه لاستخراج بيانات التجربة. يمنحك ذلك إمكانية تقسيم نتائج تجربتك بالعديد من الطرق المختلفة والتحقّق بشكل مستقل من نتائج A/B Testing.

للبدء، أكمل ما يلي كما هو موضح في هذا الدليل:

  1. تفعيل تصدير BigQuery لـ Google Analytics في وحدة تحكّم Firebase
  2. الوصول إلى بيانات A/B Testing باستخدام BigQuery
  3. الاطّلاع على نماذج طلبات البحث

تفعيل عملية تصدير BigQuery لـ "Google Analytics" في وحدة تحكُّم Firebase

إذا كنت مشتركًا في خطة Spark، يمكنك استخدام وضع الحماية في BigQuery ل الوصول إلى BigQuery بدون أي تكلفة، مع مراعاة حدود وضع الحماية. راجِع الأسعار ووضع الحماية في BigQuery لمعرفة مزيد من المعلومات.

أولاً، تأكَّد من تصدير بيانات Analytics إلى BigQuery:

  1. افتح علامة التبويب عمليات الدمج، التي يمكنك الوصول إليها باستخدام > إعدادات المشروع في وحدة تحكّم Firebase.
  2. إذا كنت تستخدم BigQuery مع خدمات Firebase الأخرى، انقر على إدارة. بخلاف ذلك، انقر على ربط.
  3. راجِع لمحة عن ربط Firebase بخدمة BigQuery، ثم انقر على التالي.
  4. في قسم إعداد الدمج، فعِّل مفتاح التبديل Google Analytics.
  5. اختَر منطقة واختَر إعدادات التصدير.

  6. انقر على ربط بـ BigQuery.

استنادًا إلى الطريقة التي اخترت بها تصدير البيانات، قد يستغرق الأمر ما يصل إلى يوم واحد لتصبح الجدولَين متاحة. لمزيد من المعلومات عن تصدير بيانات المشروع إلى BigQuery، اطّلِع على مقالة تصدير بيانات المشروع إلى BigQuery.

الوصول إلى بيانات A/B Testing في BigQuery

قبل إجراء طلب بحث عن بيانات لتجربة محدّدة، يجب الحصول على بعض أو كل ما يلي لاستخدامه في طلب البحث:

  • رقم تعريف التجربة: يمكنك الحصول على هذا الرقم من عنوان URL لصفحة نظرة عامة على التجربة. على سبيل المثال، إذا كان عنوان URL يظهر على النحو التالي https://console.firebase.google.com/project/my_firebase_project/config/experiment/results/25، يكون رقم تعريف التجربة هو 25.
  • رقم تعريف الموقع على Google Analytics: هو رقم تعريف موقعك الإلكتروني على Google Analytics والمكوَّن من 9 أرقام. يمكنك العثور على هذا الاسم ضمن Google Analytics، ويظهر أيضًا في BigQuery عند توسيع اسم مشروعك لعرض اسم جدول الفعاليات في "Google Analytics" (project_name.analytics_000000000.events).
  • تاريخ التجربة: لإنشاء طلب بحث أسرع وأكثر فعالية، من الأفضل أن تقتصر طلبات البحث على أقسام جدول الأحداث اليومية التي تبلغ Google Analytics والتي تحتوي على بيانات تجربتك، وهي الجداول التي تم تحديدها بلاحقة YYYYMMDD. لذلك، إذا كانت تجربتك قيد التنفيذ من 2 شباط (فبراير) 2024 إلى 2 مايو 2024، عليك تحديد _TABLE_SUFFIX between '20240202' AND '20240502'. على سبيل المثال، اطّلِع على اختيار قيم تجربة معيّنة.
  • أسماء الأحداث: عادةً ما تتوافق هذه الأسماء مع مقاييس الأهداف التي ضبطتها في التجربة. على سبيل المثال، أحداث in_app_purchase أو ad_impression أو user_retention.

بعد جمع المعلومات التي تحتاجها لإنشاء طلب البحث:

  1. افتح BigQuery في وحدة تحكّم Google Cloud.
  2. اختَر مشروعك، ثم اختَر إنشاء طلب بحث SQL.
  3. أضِف طلب البحث. للاطّلاع على أمثلة لطلبات البحث المطلوب تنفيذها، راجِع القسم الاطّلاع على أمثلة على طلبات البحث.
  4. انقر على تشغيل.

طلب بيانات التجربة باستخدام طلب البحث الذي تم إنشاؤه تلقائيًا في وحدة تحكّم Firebase

إذا كنت تستخدم خطة Blaze، تقدِّم صفحة نظرة عامة على التجربة نموذج طلب بحث يعرض اسم التجربة والصيغ وأسماء الأحداث وعدد أحداث التجربة التي تشاهدها.

للحصول على الاستعلام الذي تم إنشاؤه تلقائيًا وتنفيذه:

  1. من وحدة تحكّم "Firebase"، افتح A/B Testing واختَر تجربة "A/B Testing" التي تريد إجراء طلب بحث عنها لفتح نظرة عامة على التجربة.
  2. من القائمة "خيارات"، ضمن دمج BigQuery، اختر بيانات تجربة طلب البحث. يؤدي ذلك إلى فتح مشروعك في BigQuery ضمن وحدة تحكّم Google Cloud، كما يوفّر طلب بحث أساسيًا يمكنك استخدامه لطلب البحث عن بيانات تجربتك.

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

  /*
    This query is auto-generated by Firebase A/B Testing for your
    experiment "Winter welcome experiment".
    It demonstrates how you can get event counts for all Analytics
    events logged by each variant of this experiment's population.
  */
  SELECT
    'Winter welcome experiment' AS experimentName,
    CASE userProperty.value.string_value
      WHEN '0' THEN 'Baseline'
      WHEN '1' THEN 'Welcome message (1)'
      WHEN '2' THEN 'Welcome message (2)'
      END AS experimentVariant,
    event_name AS eventName,
    COUNT(*) AS count
  FROM
    `analytics_000000000.events_*`,
    UNNEST(user_properties) AS userProperty
  WHERE
    (_TABLE_SUFFIX BETWEEN '20240202' AND '20240502')
    AND userProperty.key = 'firebase_exp_25'
  GROUP BY
    experimentVariant, eventName

للحصول على أمثلة إضافية على طلبات البحث، انتقِل إلى الاطّلاع على أمثلة على طلبات البحث.

أمثلة على طلبات البحث في ميزة "استكشاف"

تقدِّم الأقسام التالية أمثلة على طلبات البحث التي يمكنك استخدامها لاستخراج بيانات تجربة A/B Testing من جداول أحداث Google Analytics.

استخراج قيم الانحراف المعياري للشراء والتجربة من جميع التجارب

يمكنك استخدام بيانات نتائج التجربة للتحقّق من نتائج Firebase A/B Testing بشكل مستقل. تعمل عبارة BigQuery SQL التالية على استخراج متغيرات التجربة وعدد المستخدمين الفريدين في كل صيغة وتجمع إجمالي الأرباح من الحدثين in_app_purchase وecommerce_purchase والانحرافات المعيارية لجميع التجارب ضمن النطاق الزمني المحدد بتواريخ البدء والانتهاء _TABLE_SUFFIX يمكنك استخدام البيانات التي حصلت عليها من هذا الاستعلام مع منشئ دلالة إحصائية لاختبارات T أحادية الطرف للتحقق من أن النتائج التي يوفرها Firebase تطابق تحليلك الخاص.

لمزيد من المعلومات عن كيفية احتساب A/B Testing للاستنتاج، اطّلِع على تفسير نتائج الاختبار.

  /*
    This query returns all experiment variants, number of unique users,
    the average USD spent per user, and the standard deviation for all
    experiments within the date range specified for _TABLE_SUFFIX.
  */
  SELECT
    experimentNumber,
    experimentVariant,
    COUNT(*) AS unique_users,
    AVG(usd_value) AS usd_value_per_user,
    STDDEV(usd_value) AS std_dev
  FROM
    (
      SELECT
        userProperty.key AS experimentNumber,
        userProperty.value.string_value AS experimentVariant,
        user_pseudo_id,
        SUM(
          CASE
            WHEN event_name IN ('in_app_purchase', 'ecommerce_purchase')
              THEN event_value_in_usd
            ELSE 0
            END) AS usd_value
      FROM `PROJECT_NAME.analytics_ANALYTICS_ID.events_*`
      CROSS JOIN UNNEST(user_properties) AS userProperty
      WHERE
        userProperty.key LIKE 'firebase_exp_%'
        AND event_name IN ('in_app_purchase', 'ecommerce_purchase')
        AND (_TABLE_SUFFIX BETWEEN 'YYYYMMDD' AND 'YYYMMDD')
      GROUP BY 1, 2, 3
    )
  GROUP BY 1, 2
  ORDER BY 1, 2;

اختيار قيم تجربة معيّنة

يوضّح المثال التالي كيفية الحصول على بيانات لتجربة معيّنة في BigQuery. يعرض نموذج طلب البحث هذا اسم التجربة وأسماء المتغيّرات (بما في ذلك خط الأساس) وأسماء الأحداث وأعداد الأحداث.

  SELECT
    'EXPERIMENT_NAME' AS experimentName,
    CASE userProperty.value.string_value
      WHEN '0' THEN 'Baseline'
      WHEN '1' THEN 'VARIANT_1_NAME'
      WHEN '2' THEN 'VARIANT_2_NAME'
      END AS experimentVariant,
    event_name AS eventName,
    COUNT(*) AS count
  FROM
    `analytics_ANALYTICS_PROPERTY.events_*`,
    UNNEST(user_properties) AS userProperty
  WHERE
    (_TABLE_SUFFIX BETWEEN 'YYYMMDD' AND 'YYYMMDD')
    AND userProperty.key = 'firebase_exp_EXPERIMENT_NUMBER'
  GROUP BY
    experimentVariant, eventName