استخدام ميزة "فحص التطبيقات" مع موفِّر تصحيح الأخطاء على نظام Android

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

استخدام مقدّم خدمة تصحيح الأخطاء في محاكي

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

  1. في ملف Gradle للوحدة (على مستوى التطبيق) (عادةً <project>/<app-module>/build.gradle.kts أو <project>/<app-module>/build.gradle)، أضِف الاعتمادية لمكتبة App Check على Android. ننصح باستخدام Firebase Android BoM للتحكّم في إصدارات المكتبة.

    dependencies {
        // Import the BoM for the Firebase platform
        implementation(platform("com.google.firebase:firebase-bom:35.0.2"))
    
        // Add the dependencies for the App Check libraries
        // When using the BoM, you don't specify versions in Firebase library dependencies
        implementation("com.google.firebase:firebase-appcheck-debug")
    }

    باستخدام Firebase Android BoM، سيستخدم تطبيقك دائمًا إصدارات متوافقة من مكتبات Firebase لنظام التشغيل Android.

    (بديل)  إضافة تبعيات مكتبة Firebase بدون استخدام BoM

    إذا اخترت عدم استخدام Firebase BoM، عليك تحديد كل إصدار من مكتبة Firebase في سطر التبعية الخاص به.

    يُرجى العِلم أنّه في حال استخدام مكتبات Firebase متعددة في تطبيقك، ننصحك بشدة باستخدام BoM لإدارة إصدارات المكتبات، ما يضمن توافق جميع الإصدارات.

    dependencies {
        // Add the dependencies for the App Check libraries
        // When NOT using the BoM, you must specify versions in Firebase library dependencies
        implementation("com.google.firebase:firebase-appcheck-debug:20.0.0")
    }

  2. في الإصدار المخصّص لتصحيح الأخطاء، اضبط App Check لاستخدام مصنع مقدّم خدمة تصحيح الأخطاء:

    Kotlin

    Firebase.initialize(context = this)
    Firebase.appCheck.installAppCheckProviderFactory(
        DebugAppCheckProviderFactory.getInstance(),
    )

    Java

    FirebaseApp.initializeApp(/*context=*/ this);
    FirebaseAppCheck firebaseAppCheck = FirebaseAppCheck.getInstance();
    firebaseAppCheck.installAppCheckProviderFactory(
            DebugAppCheckProviderFactory.getInstance());
  3. احصل على الرمز المميّز لتصحيح الأخطاء:

    1. شغِّل تطبيقك في المحاكي أو على جهازك الاختباري.

    2. ابحث عن الرمز المميّز لتصحيح الأخطاء App Check في سجلّاتك. على سبيل المثال:

      D DebugAppCheckProvider: Enter this debug secret into the allow list
      in the Firebase Console for your project: 123a4567-b89c-12d3-e456-789012345678
      
    3. انسخ الرمز المميّز (على سبيل المثال، 123a4567-b89c-12d3-e456-789012345678).

  4. سجِّل رمز تصحيح الأخطاء باستخدام App Check:

    1. في وحدة تحكّم Firebase، انتقِل إلى الأمان > فحص التطبيقات > علامة تبويب التطبيقات.

    2. ابحث عن تطبيقك، وانقر على القائمة الكاملة التي تظهر على شكل ثلاث نقاط ()، ثم اختَر إدارة الرموز المميّزة لتصحيح الأخطاء.

    3. اتّبِع التعليمات الظاهرة على الشاشة لتسجيل الرمز المميّز لتصحيح الأخطاء.

    لقطة شاشة لخيار &quot;إدارة الرموز المميّزة لتصحيح الأخطاء&quot; في قائمة &quot;وحدة تحكّم Firebase&quot;

بعد تسجيل الرمز المميّز في App Check، ستقبله خدمات الخلفية كرمز مميّز صالح.

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

استخدام مقدّم خدمة تصحيح الأخطاء لاختبار الوحدات في بيئة CI

في ما يلي كيفية استخدام مقدّم خدمة تصحيح الأخطاء لاختبار الوحدات في بيئة التكامل المستمر (CI):

  1. في وحدة تحكّم Firebase، أنشِئ رمز تصحيح أخطاء:

    1. في وحدة تحكّم Firebase، انتقِل إلى الأمان > فحص التطبيقات > علامة تبويب التطبيقات.

    2. ابحث عن تطبيقك، وانقر على القائمة الكاملة التي تظهر على شكل ثلاث نقاط ()، ثم اختَر إدارة الرموز المميّزة لتصحيح الأخطاء.

    3. اتّبِع التعليمات الظاهرة على الشاشة لإنشاء رمز تصحيح أخطاء جديد.

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

    لقطة شاشة لعنصر القائمة &quot;إدارة الرموز المميّزة لتصحيح الأخطاء&quot;

  2. أضِف الرمز المميّز لتصحيح الأخطاء الذي أنشأته للتو إلى مخزن المفاتيح الآمن لنظام CI (على سبيل المثال، الرموز السرية المشفّرة في GitHub Actions أو المتغيّرات المشفّرة في Travis CI).

  3. إذا لزم الأمر، اضبط نظام CI لإتاحة رمز تصحيح الأخطاء ضمن بيئة CI كمتغيّر بيئة. أدخِل اسمًا للمتغيّر، مثل APP_CHECK_DEBUG_TOKEN_FROM_CI.

  4. في ملف Gradle للوحدة (على مستوى التطبيق) (عادةً <project>/<app-module>/build.gradle.kts أو <project>/<app-module>/build.gradle)، أضِف الاعتمادية لمكتبة App Check على Android. ننصح باستخدام Firebase Android BoM للتحكّم في إصدارات المكتبة.

    Kotlin

    dependencies {
        // Import the BoM for the Firebase platform
        implementation(platform("com.google.firebase:firebase-bom:35.0.2"))
    
        // Add the dependency for the App Check library
        // When using the BoM, you don't specify versions in Firebase library dependencies
        implementation("com.google.firebase:firebase-appcheck-debug")
    }

    باستخدام Firebase Android BoM، سيستخدم تطبيقك دائمًا إصدارات متوافقة من مكتبات Firebase لنظام التشغيل Android.

    (بديل)  إضافة تبعيات مكتبة Firebase بدون استخدام BoM

    إذا اخترت عدم استخدام Firebase BoM، عليك تحديد كل إصدار من مكتبة Firebase في سطر التبعية الخاص به.

    يُرجى العِلم أنّه في حال استخدام مكتبات Firebase متعددة في تطبيقك، ننصحك بشدة باستخدام BoM لإدارة إصدارات المكتبات، ما يضمن توافق جميع الإصدارات.

    dependencies {
        // Add the dependency for the App Check library
        // When NOT using the BoM, you must specify versions in Firebase library dependencies
        implementation("com.google.firebase:firebase-appcheck-debug:20.0.0")
    }

    Java

    dependencies {
        // Import the BoM for the Firebase platform
        implementation(platform("com.google.firebase:firebase-bom:35.0.2"))
    
        // Add the dependency for the App Check library
        // When using the BoM, you don't specify versions in Firebase library dependencies
        implementation("com.google.firebase:firebase-appcheck-debug")
    }

    باستخدام Firebase Android BoM، سيستخدم تطبيقك دائمًا إصدارات متوافقة من مكتبات Firebase لنظام التشغيل Android.

    (بديل)  إضافة تبعيات مكتبة Firebase بدون استخدام BoM

    إذا اخترت عدم استخدام Firebase BoM، عليك تحديد كل إصدار من مكتبة Firebase في سطر التبعية الخاص به.

    يُرجى العِلم أنّه في حال استخدام مكتبات Firebase متعددة في تطبيقك، ننصحك بشدة باستخدام BoM لإدارة إصدارات المكتبات، ما يضمن توافق جميع الإصدارات.

    dependencies {
        // Add the dependency for the App Check library
        // When NOT using the BoM, you must specify versions in Firebase library dependencies
        implementation("com.google.firebase:firebase-appcheck-debug:20.0.0")
    }

  5. أضِف ما يلي إلى إعدادات تنويعة التصميم في CI:

    testInstrumentationRunnerArguments["firebaseAppCheckDebugSecret"] =
        System.getenv("APP_CHECK_DEBUG_TOKEN_FROM_CI") ?: ""
    
  6. في فئات الاختبار، استخدِم DebugAppCheckTestHelper لتضمين أي رمز يحتاج إلى رمز مميّز App Check:

    Kotlin

    @RunWith(AndroidJunit4::class)
    class MyTests {
        private val debugAppCheckTestHelper =
            DebugAppCheckTestHelper.fromInstrumentationArgs()
    
        @Test
        fun testWithDefaultApp() {
            debugAppCheckTestHelper.withDebugProvider {
                // Test code that requires a debug AppCheckToken.
            }
        }
    
        @Test
        fun testWithNonDefaultApp() {
            debugAppCheckTestHelper.withDebugProvider(
                FirebaseApp.getInstance("nonDefaultApp")
            ) {
                // Test code that requires a debug AppCheckToken.
            }
        }
    }
    

    Java

    @RunWith(AndroidJunit4.class)
    public class YourTests {
        private final DebugAppCheckTestHelper debugAppCheckTestHelper =
                DebugAppCheckTestHelper.fromInstrumentationArgs();
    
        @Test
        public void testWithDefaultApp() {
            debugAppCheckTestHelper.withDebugProvider(() -> {
                // Test code that requires a debug AppCheckToken.
            });
        }
    
        @Test
        public void testWithNonDefaultApp() {
            debugAppCheckTestHelper.withDebugProvider(
                    FirebaseApp.getInstance("nonDefaultApp"),
                    () -> {
                        // Test code that requires a debug AppCheckToken.
                    });
        }
    }
    

عند تشغيل تطبيقك في بيئة CI، ستقبل خدمات الخلفية الرمز المميّز الذي يرسله على أنّه صالح.