استخدام ميزة "فحص التطبيقات" مع موفِّر تصحيح الأخطاء على نظام 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:34.16.0"))
    
        // 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:19.3.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 console، انتقِل إلى علامة التبويب الأمان > فحص التطبيقات > التطبيقات.

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

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

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

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

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

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

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

  1. في Firebase console، أنشئ رمزًا مميّزًا لإصدار تصحيح الأخطاء:

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

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

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

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

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

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

  3. إذا لزم الأمر، اضبط نظام التكامل المستمر لجعل الرمز المميّز لإصدار تصحيح الأخطاء متاحًا في بيئة التكامل المستمر كمتغيّر بيئة. امنح المتغيّر اسمًا مثل 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:34.16.0"))
    
        // 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:19.3.0")
    }

    Java

    dependencies {
        // Import the BoM for the Firebase platform
        implementation(platform("com.google.firebase:firebase-bom:34.16.0"))
    
        // 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:19.3.0")
    }

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

    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.
                    });
        }
    }
    

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