إنشاء تجارب مراسلة باستخدام اختبار A/B

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

لإجراء اختبار أ/ب لفِرق الميزة باستخدام مرجع أساسي، اتّبِع الخطوات التالية:

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

إنشاء تجربة

تتيح لك التجربة التي تستخدِم أداة إنشاء التنبيهات تقييم صيغ متعدّدة لرسالة تنبيه واحدة.

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

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

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

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

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

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

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

  7. في قسم الصيغ، اكتب رسالة لإرسالها إلى مجموعة الأساس في حقل إدخال نص الرسالة . إذا كنت لا تريد إرسال رسالة إلى مجموعة الأساس، اترك هذا الحقل فارغًا.

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

  9. (اختياري) أدخِل اسمًا لكل صيغة في تجربتك لاستبدال اسمَي الصيغة أ والصيغة ب وما إلى ذلك.

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

  11. حدِّد خيارات لرسالتك:

    • تاريخ الإرسال: اختَر إرسال الآن لبدء تجربتك على الفور عند الحفظ، أو مُجدوَلة لتحديد وقت لبدء تجربتك في المستقبل.
    • الخيارات المتقدّمة: لاختيار خيارات متقدّمة لجميع الإشعارات المضمّنة في تجربتك، وسِّع الخيارات المتقدّمة، ثمّ غيِّر أيًا من خيارات الرسائل المدرَجة.
  12. انقر على مراجعة لحفظ تجربتك.

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

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

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

  1. يمكنك الحصول على الرمز المميّز لتسجيل FCM على النحو التالي:

    Swift

    Messaging.messaging().token { token, error in
      if let error = error {
        print("Error fetching FCM registration token: \(error)")
      } else if let token = token {
        print("FCM registration token: \(token)")
        self.fcmRegTokenMessage.text  = "Remote FCM registration token: \(token)"
      }
    }

    Objective-C

    [[FIRMessaging messaging] tokenWithCompletion:^(NSString *token, NSError *error) {
      if (error != nil) {
        NSLog(@"Error getting FCM registration token: %@", error);
      } else {
        NSLog(@"FCM registration token: %@", token);
        self.fcmRegTokenMessage.text = token;
      }
    }];

    Java

    FirebaseMessaging.getInstance().getToken()
        .addOnCompleteListener(new OnCompleteListener<String>() {
            @Override
            public void onComplete(@NonNull Task<String> task) {
              if (!task.isSuccessful()) {
                Log.w(TAG, "Fetching FCM registration token failed", task.getException());
                return;
              }
    
              // Get new FCM registration token
              String token = task.getResult();
    
              // Log and toast
              String msg = getString(R.string.msg_token_fmt, token);
              Log.d(TAG, msg);
              Toast.makeText(MainActivity.this, msg, Toast.LENGTH_SHORT).show();
            }
        });

    Kotlin+KTX

    FirebaseMessaging.getInstance().token.addOnCompleteListener(OnCompleteListener { task ->
        if (!task.isSuccessful) {
            Log.w(TAG, "Fetching FCM registration token failed", task.exception)
            return@OnCompleteListener
        }
    
        // Get new FCM registration token
        val token = task.result
    
        // Log and toast
        val msg = getString(R.string.msg_token_fmt, token)
        Log.d(TAG, msg)
        Toast.makeText(baseContext, msg, Toast.LENGTH_SHORT).show()
    })

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

إدارة تجربتك

سواء أكنت تنشئ تجربة باستخدام 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 مستقلة. بعد اختيار الإجراء، ستتم إعادة توجيهك إلى شاشة كتابة الرسالة لتعديلها (إذا لزم الأمر) قبل نشرها.

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

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

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

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

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

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

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

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

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

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

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

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

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

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. يمكنك تتبُّع ما يصل إلى خمسة مقاييس غير مرتبطة بالهدف في تجربتك.

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

  • إجمالي الأرباح المقدّرة للاطّلاع على الفرق بين الإصدارَين من حيث الأرباح المجمعة من عمليات الشراء داخل التطبيق وأرباح الإعلانات
  • معدل الاحتفاظ بالمستخدمين (يوم واحد) ومعدل الاحتفاظ بالمستخدمين (من يومَين إلى 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. في قسم Configure integration (ضبط عملية الدمج)، فعِّل زر التبديل 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: هو رقم تعريف الموقع المكوّن من 9 أرقام Google Analytics. يمكنك العثور على هذا الجدول ضمن 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 events أو ad_impression أو user_retention events.

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

  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

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

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

تقدّم الأقسام التالية أمثلة على طلبات البحث التي يمكنك استخدامها لاستخراج data 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