إنشاء تجارب للمراسلة داخل التطبيق باستخدام ميزة "اختبار A/B"

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

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

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

إنشاء تجربة

تتيح لك التجربة التي تستخدِم Firebase In-App Messaging تقييم عدّة صيغ لرسالة واحدة داخل التطبيق.

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

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

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

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

  4. بدلاً من ذلك، في قائمة التنقّل في وحدة تحكّم Firebase، وسِّع رمز التفاعل، ثم انقر على In-App Messaging. بعد ذلك، انقر على تجربة جديدة.

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

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

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

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

  9. لإضافة سعر متغير إلى تجربتك، انقر على إضافة سعر متغير. تحتوي التجارب تلقائيًا على مجموعة مرجعية واحدة وسعر متغير واحد.

  10. (اختياري) أدخِل اسمًا وصفيًا أكثر لكل خيار.

  11. (اختياري) في أعلى قسم خيارات المنتج، انقر على الزر مقارنة خيارات المنتج لمقارنة خيار آخر للرسالة بجانب الرسالة الأساسية.

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

  13. ضبط الجدول الزمني للتجربة:

    • حدِّد تاريخَي البدء والانتهاء للتجربة.
    • يمكنك ضبط كيفية بدء ظهور الرسائل داخل التطبيق على جميع الصيغ.
  14. انقر على مراجعة لحفظ تجربتك.

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

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

إذا تبيّن لك أنّ إحدى التجارب لا تجذب عددًا كافيًا من المستخدمين لكي يتمكّن تطبيق 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 مقياس

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

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

  • إجمالي الأرباح المقدّرة للاطّلاع على الفرق بين الإصدارَين من حيث الأرباح المجمعة من عمليات الشراء داخل التطبيق وأرباح الإعلانات
  • معدل الاحتفاظ بالمستخدمين (يوم واحد) ومعدل الاحتفاظ بالمستخدمين (من يومَين إلى 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 الذي يحتسب جلسات المستخدِمين في تطبيقك. لمزيد من المعلومات، اطّلِع على الأحداث التي يتم جمعها تلقائيًا.